From 159071a814beebef34832f66fd82bd3624628d8f Mon Sep 17 00:00:00 2001 From: Kroonk Date: Thu, 16 Apr 2026 22:47:58 +0200 Subject: [PATCH] Bilder-Download: Mehrfach-Auswahl + Ordner-ZIP - Selection-Mode: Bilder in Galerie per Klick auswaehlen - 1-3 Bilder: einzeln herunterladen, 4+: als ZIP - Ordner-Download: ganzen zugewiesenen Ordner als ZIP - Sicherheit: Zugriffspruefung + Path-Traversal-Schutz - archiver Package fuer Streaming-ZIP-Erstellung Co-Authored-By: Claude Opus 4.6 --- assets/css/custom.min.css | 2 +- assets/css/light.min.css | 2 +- assets/css/main.min.css | 2 +- assets/js/main.js | 172 ++++++ assets/js/main.min.js | 2 +- assets/sass/custom.scss | 79 +++ backend/server.js | 116 ++++ package-lock.json | 1190 ++++++++++++++++++++++++++++++++++++- package.json | 1 + 9 files changed, 1542 insertions(+), 24 deletions(-) diff --git a/assets/css/custom.min.css b/assets/css/custom.min.css index da65d16..84e64b0 100644 --- a/assets/css/custom.min.css +++ b/assets/css/custom.min.css @@ -1 +1 @@ -.text-fg{color:#a0a0a1}#footer .presentify{margin:0 0 1.4em 0;display:grid;grid-template-columns:auto 1fr;column-gap:1rem;align-items:center}#footer .presentify .presentify-logo{display:flex;align-items:center;justify-content:center}#footer .presentify .presentify-logo a{display:flex;align-items:center;justify-content:center;border:0}#footer .presentify .presentify-logo img{width:72px;height:72px;display:block}#footer .presentify .presentify-text{margin:0} \ No newline at end of file +.text-fg{color:#a0a0a1}#selection-toolbar{position:fixed;bottom:4em;left:0;width:100%;background:rgba(31,34,36,.95);padding:.75em 1.5em;display:flex;align-items:center;gap:1em;z-index:10003;transform:translateY(100%);transition:transform .3s ease;box-sizing:border-box}#selection-toolbar.visible{transform:translateY(0)}#selection-toolbar #sel-count{color:#fff;font-weight:400;margin-right:auto;white-space:nowrap}#selection-toolbar button{white-space:nowrap}body.selection-mode #main .thumb{cursor:pointer;position:relative}body.selection-mode #main .thumb::before{content:"";position:absolute;top:.6em;left:.6em;width:1.4em;height:1.4em;border:2px solid rgba(255,255,255,.7);border-radius:3px;background:rgba(0,0,0,.4);z-index:2;transition:all .2s ease;pointer-events:none}body.selection-mode #main .thumb.selected::before{background:#34a58e;border-color:#34a58e}body.selection-mode #main .thumb.selected .image{outline:3px solid #34a58e;outline-offset:-3px}@media screen and (max-width: 736px){#selection-toolbar{bottom:auto;top:4em;transform:translateY(-200%)}#selection-toolbar.visible{transform:translateY(0)}}#footer .presentify{margin:0 0 1.4em 0;display:grid;grid-template-columns:auto 1fr;column-gap:1rem;align-items:center}#footer .presentify .presentify-logo{display:flex;align-items:center;justify-content:center}#footer .presentify .presentify-logo a{display:flex;align-items:center;justify-content:center;border:0}#footer .presentify .presentify-logo img{width:72px;height:72px;display:block}#footer .presentify .presentify-text{margin:0} \ No newline at end of file diff --git a/assets/css/light.min.css b/assets/css/light.min.css index 6aeff09..4fcd2af 100644 --- a/assets/css/light.min.css +++ b/assets/css/light.min.css @@ -1 +1 @@ -@-moz-keyframes spinner{0%{-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes spinner{0%{-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@-ms-keyframes spinner{0%{-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spinner{0%{-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}body{-webkit-text-size-adjust:none}mark{background-color:rgba(0,0,0,0);color:inherit}input::-moz-focus-inner{border:0;padding:0}input,select,textarea{-moz-appearance:none;-webkit-appearance:none;-ms-appearance:none;appearance:none}@-ms-viewport{width:device-width}body{-ms-overflow-style:scrollbar}@media screen and (max-width: 480px){html,body{min-width:320px}}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}body{background:#f9f6f0}body.is-preload *,body.is-preload *:before,body.is-preload *:after{-moz-animation:none !important;-webkit-animation:none !important;-ms-animation:none !important;animation:none !important;-moz-transition:none !important;-webkit-transition:none !important;-ms-transition:none !important;transition:none !important}body.is-resizing *,body.is-resizing *:before,body.is-resizing *:after{-moz-animation:none !important;-webkit-animation:none !important;-ms-animation:none !important;animation:none !important;-moz-transition:none !important;-webkit-transition:none !important;-ms-transition:none !important;transition:none !important}body,input,select,textarea{color:#5c554e;font-family:"Source Sans Pro",Helvetica,sans-serif;font-size:15pt;font-weight:300;letter-spacing:.025em;line-height:1.65}@media screen and (max-width: 1680px){body,input,select,textarea{font-size:11pt}}a{-moz-transition:color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out;-webkit-transition:color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out;-ms-transition:color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out;transition:color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out;border-bottom:dotted 1px;color:#e48c71;text-decoration:none}a:hover{border-bottom-color:rgba(0,0,0,0);color:#e48c71 !important}strong,b{color:#38332f;font-weight:300}em,i{font-style:italic}p{margin:0 0 2em 0}h1,h2,h3,h4,h5,h6{color:#38332f;font-weight:300;letter-spacing:.1em;line-height:1.5;margin:0 0 1em 0;text-transform:uppercase}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit;text-decoration:none}h1{font-size:2em}h2{font-size:1.25em}h3{font-size:1.1em}h4{font-size:1em}h5{font-size:.9em}h6{font-size:.7em}@media screen and (max-width: 736px){h2{font-size:1em}h3{font-size:.9em}h4{font-size:.8em}h5{font-size:.7em}h6{font-size:.7em}}sub{font-size:.8em;position:relative;top:.5em}sup{font-size:.8em;position:relative;top:-0.5em}blockquote{border-left:4px #e6dccc;font-style:italic;margin:0 0 2em 0;padding:.5em 0 .5em 2em}code{background:#f0e5d6;border:solid 1px #e6dccc;font-family:"Courier New",monospace;font-size:.9em;margin:0 .25em;padding:.25em .65em}pre{-webkit-overflow-scrolling:touch;font-family:"Courier New",monospace;font-size:.9em;margin:0 0 2em 0}pre code{display:block;line-height:1.75;padding:1em 1.5em;overflow-x:auto}hr{border:0;border-bottom:solid 1px #e6dccc;margin:2em 0}hr.major{margin:3em 0}.align-left{text-align:left}.align-center{text-align:center}.align-right{text-align:right}input[type=submit],input[type=reset],input[type=button],button,.button{-moz-appearance:none;-webkit-appearance:none;-ms-appearance:none;appearance:none;-moz-transition:background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, color 0.2s ease-in-out;-webkit-transition:background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, color 0.2s ease-in-out;-ms-transition:background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, color 0.2s ease-in-out;transition:background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, color 0.2s ease-in-out;background-color:rgba(0,0,0,0);border:0;border-radius:0;box-shadow:inset 0 0 0 2px #e6dccc;color:#38332f !important;cursor:pointer;display:inline-block;font-size:.9em;font-weight:300;height:3.0555555556em;letter-spacing:.1em;line-height:3.0555555556em;padding:0 2.5em;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}input[type=submit]:hover,input[type=reset]:hover,input[type=button]:hover,button:hover,.button:hover{box-shadow:inset 0 0 0 2px #e48c71;color:#e48c71 !important}input[type=submit]:hover:active,input[type=reset]:hover:active,input[type=button]:hover:active,button:hover:active,.button:hover:active{background-color:rgba(228,140,113,.15);color:#e48c71 !important}input[type=submit].icon,input[type=reset].icon,input[type=button].icon,button.icon,.button.icon{padding-left:1.35em}input[type=submit].icon:before,input[type=reset].icon:before,input[type=button].icon:before,button.icon:before,.button.icon:before{margin-right:.5em}input[type=submit].fit,input[type=reset].fit,input[type=button].fit,button.fit,.button.fit{width:100%}input[type=submit].small,input[type=reset].small,input[type=button].small,button.small,.button.small{font-size:.8em}input[type=submit].large,input[type=reset].large,input[type=button].large,button.large,.button.large{font-size:1.35em}input[type=submit].primary,input[type=reset].primary,input[type=button].primary,button.primary,.button.primary{background-color:#e48c71;box-shadow:none}input[type=submit].primary:hover,input[type=reset].primary:hover,input[type=button].primary:hover,button.primary:hover,.button.primary:hover{background-color:#ecaf9c;color:#38332f !important}input[type=submit].primary:hover:active,input[type=reset].primary:hover:active,input[type=button].primary:hover:active,button.primary:hover:active,.button.primary:hover:active{background-color:#dc6946}input[type=submit].disabled,input[type=submit]:disabled,input[type=reset].disabled,input[type=reset]:disabled,input[type=button].disabled,input[type=button]:disabled,button.disabled,button:disabled,.button.disabled,.button:disabled{pointer-events:none;opacity:.35}form{margin:0 0 2em 0}form>:last-child{margin-bottom:0}form>.fields{display:-moz-flex;display:-webkit-flex;display:-ms-flex;display:flex;-moz-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:calc(100% + 3em);margin:-1.5em 0 2em -1.5em}form>.fields>.field{-moz-flex-grow:0;-webkit-flex-grow:0;-ms-flex-grow:0;flex-grow:0;-moz-flex-shrink:0;-webkit-flex-shrink:0;-ms-flex-shrink:0;flex-shrink:0;padding:1.5em 0 0 1.5em;width:calc(100% - 1.5em)}form>.fields>.field.half{width:calc(50% - 0.75em)}form>.fields>.field.third{width:calc(100%/3 - 0.5em)}form>.fields>.field.quarter{width:calc(25% - 0.375em)}@media screen and (max-width: 736px){form>.fields{width:calc(100% + 3em);margin:-1.5em 0 2em -1.5em}form>.fields>.field{padding:1.5em 0 0 1.5em;width:calc(100% - 1.5em)}form>.fields>.field.half{width:calc(100% - 1.5em)}form>.fields>.field.third{width:calc(100% - 1.5em)}form>.fields>.field.quarter{width:calc(100% - 1.5em)}}label{color:#38332f;display:block;font-size:.9em;font-weight:300;margin:0 0 1em 0}input[type=text],input[type=password],input[type=email],input[type=tel],input[type=search],input[type=url],select,textarea{-moz-appearance:none;-webkit-appearance:none;-ms-appearance:none;appearance:none;background:#f0e5d6;border:0;border-radius:0;color:#5c554e;display:block;outline:0;padding:0 1em;text-decoration:none;width:100%}input[type=text]:invalid,input[type=password]:invalid,input[type=email]:invalid,input[type=tel]:invalid,input[type=search]:invalid,input[type=url]:invalid,select:invalid,textarea:invalid{box-shadow:none}input[type=text]:focus,input[type=password]:focus,input[type=email]:focus,input[type=tel]:focus,input[type=search]:focus,input[type=url]:focus,select:focus,textarea:focus{box-shadow:inset 0 0 0 2px #e48c71}select{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='%23e6dccc' /%3E%3C/svg%3E");background-size:1.25rem;background-repeat:no-repeat;background-position:calc(100% - 1rem) center;height:2.75em;padding-right:2.75em;text-overflow:ellipsis}select option{color:#38332f;background:#f9f6f0}select:focus::-ms-value{background-color:rgba(0,0,0,0)}select::-ms-expand{display:none}input[type=text],input[type=password],input[type=email],input[type=tel],input[type=search],input[type=url],select{height:2.75em}textarea{padding:.75em 1em}input[type=checkbox],input[type=radio]{-moz-appearance:none;-webkit-appearance:none;-ms-appearance:none;appearance:none;display:block;float:left;margin-right:-2em;opacity:0;width:1em;z-index:-1}input[type=checkbox]+label,input[type=radio]+label{text-decoration:none;color:#5c554e;cursor:pointer;display:inline-block;font-size:1em;font-weight:300;padding-left:2.4em;padding-right:.75em;position:relative}input[type=checkbox]+label:before,input[type=radio]+label:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;text-transform:none !important;font-family:"Font Awesome 5 Free";font-weight:900}input[type=checkbox]+label:before,input[type=radio]+label:before{background:#f0e5d6;content:"";display:inline-block;font-size:.8em;height:2.0625em;left:0;line-height:2.0625em;position:absolute;text-align:center;top:0;width:2.0625em}input[type=checkbox]:checked+label:before,input[type=radio]:checked+label:before{background:#e48c71;border-color:#e48c71;color:#38332f;content:""}input[type=checkbox]:focus+label:before,input[type=radio]:focus+label:before{box-shadow:0 0 0 2px #e48c71}input[type=radio]+label:before{border-radius:100%}::-webkit-input-placeholder{color:#7a746e !important;opacity:1}:-moz-placeholder{color:#7a746e !important;opacity:1}::-moz-placeholder{color:#7a746e !important;opacity:1}:-ms-input-placeholder{color:#7a746e !important;opacity:1}.icon{text-decoration:none;border-bottom:none;position:relative}.icon:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;text-transform:none !important;font-family:"Font Awesome 5 Free";font-weight:400}.icon>.label{display:none}.icon:before{line-height:inherit}.icon.solid:before{font-weight:900}.icon.brands:before{font-family:"Font Awesome 5 Brands"}ol{list-style:decimal;margin:0 0 2em 0;padding-left:1.25em}ol li{padding-left:.25em}ul{list-style:disc;margin:0 0 2em 0;padding-left:1em}ul li{padding-left:.5em}ul.alt{list-style:none;padding-left:0}ul.alt li{border-top:solid 1px #e6dccc;padding:.5em 0}ul.alt li:first-child{border-top:0;padding-top:0}dl{margin:0 0 2em 0}dl dt{display:block;font-weight:300;margin:0 0 1em 0}dl dd{margin-left:2em}ul.actions{display:-moz-flex;display:-webkit-flex;display:-ms-flex;display:flex;cursor:default;list-style:none;margin-left:-1em;padding-left:0}ul.actions li{padding:0 0 0 1em;vertical-align:middle}ul.actions.special{-moz-justify-content:center;-webkit-justify-content:center;-ms-justify-content:center;justify-content:center;width:100%;margin-left:0}ul.actions.special li:first-child{padding-left:0}ul.actions.stacked{-moz-flex-direction:column;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-left:0}ul.actions.stacked li{padding:1.3em 0 0 0}ul.actions.stacked li:first-child{padding-top:0}ul.actions.fit{width:calc(100% + 1em)}ul.actions.fit li{-moz-flex-grow:1;-webkit-flex-grow:1;-ms-flex-grow:1;flex-grow:1;-moz-flex-shrink:1;-webkit-flex-shrink:1;-ms-flex-shrink:1;flex-shrink:1;width:100%}ul.actions.fit li>*{width:100%}ul.actions.fit.stacked{width:100%}@media screen and (max-width: 480px){ul.actions:not(.fixed){-moz-flex-direction:column;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-left:0;width:100% !important}ul.actions:not(.fixed) li{-moz-flex-grow:1;-webkit-flex-grow:1;-ms-flex-grow:1;flex-grow:1;-moz-flex-shrink:1;-webkit-flex-shrink:1;-ms-flex-shrink:1;flex-shrink:1;padding:1em 0 0 0;text-align:center;width:100%}ul.actions:not(.fixed) li>*{width:100%}ul.actions:not(.fixed) li:first-child{padding-top:0}ul.actions:not(.fixed) li input[type=submit],ul.actions:not(.fixed) li input[type=reset],ul.actions:not(.fixed) li input[type=button],ul.actions:not(.fixed) li button,ul.actions:not(.fixed) li .button{width:100%}ul.actions:not(.fixed) li input[type=submit].icon:before,ul.actions:not(.fixed) li input[type=reset].icon:before,ul.actions:not(.fixed) li input[type=button].icon:before,ul.actions:not(.fixed) li button.icon:before,ul.actions:not(.fixed) li .button.icon:before{margin-left:-0.5rem}}ul.icons{cursor:default;list-style:none;padding-left:0}ul.icons li{display:inline-block;padding:0 1em 0 0}ul.icons li:last-child{padding-right:0}ul.icons li .icon{color:#9e9790}ul.icons li .icon:before{font-size:1.5em}.table-wrapper{-webkit-overflow-scrolling:touch;overflow-x:auto}table{margin:0 0 2em 0;width:100%}table tbody tr{border:solid 1px #e6dccc;border-left:0;border-right:0}table tbody tr:nth-child(2n+1){background-color:#f0e5d6}table td{padding:.75em .75em}table th{color:#38332f;font-size:.9em;font-weight:300;padding:0 .75em .75em .75em;text-align:left}table thead{border-bottom:solid 2px #e6dccc}table tfoot{border-top:solid 2px #e6dccc}table.alt{border-collapse:separate}table.alt tbody tr td{border:solid 1px #e6dccc;border-left-width:0;border-top-width:0}table.alt tbody tr td:first-child{border-left-width:1px}table.alt tbody tr:first-child td{border-top-width:1px}table.alt thead{border-bottom:0}table.alt tfoot{border-top:0}.panel{padding:4em 4em 2em 4em;-moz-transform:translateY(100vh);-webkit-transform:translateY(100vh);-ms-transform:translateY(100vh);transform:translateY(100vh);-moz-transition:-moz-transform 0.5s ease;-webkit-transition:-webkit-transform 0.5s ease;-ms-transition:-ms-transform 0.5s ease;transition:transform 0.5s ease;-webkit-overflow-scrolling:touch;background:rgba(249,246,240,.975);bottom:4em;left:0;max-height:calc(80vh - 4em);overflow-y:auto;position:fixed;width:100%;z-index:10001}.panel.active{-moz-transform:translateY(1px);-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px)}.panel>.inner{margin:0 auto;max-width:100%;width:75em}.panel>.inner.split{display:-moz-flex;display:-webkit-flex;display:-ms-flex;display:flex}.panel>.inner.split>div{margin-left:4em;width:50%}.panel>.inner.split>:first-child{margin-left:0}.panel>.closer{-moz-transition:opacity 0.2s ease-in-out;-webkit-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;background-image:url("images/close.svg");background-position:center;background-repeat:no-repeat;background-size:3em;cursor:pointer;height:5em;opacity:.25;position:absolute;right:0;top:0;width:5em;z-index:2}.panel>.closer:hover{opacity:1}@media screen and (max-width: 1280px){.panel{padding:3em 3em 1em 3em}.panel>.inner.split>div{margin-left:3em}.panel>.closer{background-size:2.5em;background-position:75% 25%}}@media screen and (max-width: 980px){.panel>.inner.split{-moz-flex-direction:column;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.panel>.inner.split>div{margin-left:0;width:100%}}@media screen and (max-width: 736px){.panel{-moz-transform:translateY(-100vh);-webkit-transform:translateY(-100vh);-ms-transform:translateY(-100vh);transform:translateY(-100vh);padding:4em 2em 2em 2em;bottom:auto;top:calc(4em - 1px)}.panel.active{-moz-transform:translateY(0);-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.poptrox-overlay{-webkit-tap-highlight-color:rgba(255,255,255,0)}.poptrox-popup{background:rgba(238,232,221,.925);box-shadow:0 1em 3em .5em rgba(0,0,0,.25);cursor:default}.poptrox-popup:before{-moz-transition:opacity 0.2s ease-in-out;-webkit-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;background-image:-moz-linear-gradient(to left, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0)), -moz-linear-gradient(to right, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0));background-image:-webkit-linear-gradient(to left, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0)), -webkit-linear-gradient(to right, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0));background-image:-ms-linear-gradient(to left, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0)), -ms-linear-gradient(to right, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0));background-image:linear-gradient(to left, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0)), linear-gradient(to right, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0));content:"";display:block;height:100%;left:0;position:absolute;top:0;width:100%;z-index:1;opacity:1}.poptrox-popup .closer{-moz-transition:opacity 0.2s ease-in-out;-webkit-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;background-image:url("images/close.svg");background-position:center;background-repeat:no-repeat;background-size:3em;height:5em;opacity:0;position:absolute;right:0;top:0;width:5em;z-index:2}.poptrox-popup .nav-previous,.poptrox-popup .nav-next{-moz-transition:opacity 0.2s ease-in-out;-webkit-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;background-image:url("images/arrow.svg");background-position:center;background-repeat:no-repeat;background-size:5em;cursor:pointer;height:8em;margin-top:-4em;opacity:0;position:absolute;top:50%;width:6em;z-index:2}.poptrox-popup .nav-previous{-moz-transform:scaleX(-1);-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1);left:0}.poptrox-popup .nav-next{right:0}.poptrox-popup .caption{padding:2em 2em .1em 2em;background:rgba(246,240,228,.95);bottom:0;cursor:default;left:0;position:absolute;text-align:left;width:100%;z-index:2}.poptrox-popup .caption h2,.poptrox-popup .caption h3,.poptrox-popup .caption h4,.poptrox-popup .caption h5,.poptrox-popup .caption h6{margin:0 0 .5em 0;color:#4a4a4a !important}.poptrox-popup .caption p,.poptrox-popup .caption span,.poptrox-popup .caption i,.poptrox-popup .caption strong,.poptrox-popup .caption em{color:#5c554e !important}.poptrox-popup .loader{-moz-animation:spinner 1s infinite linear !important;-webkit-animation:spinner 1s infinite linear !important;-ms-animation:spinner 1s infinite linear !important;animation:spinner 1s infinite linear !important;background-image:url("images/spinner.svg");background-position:center;background-repeat:no-repeat;background-size:contain;display:block;font-size:2em;height:2em;left:50%;line-height:2em;margin:-1em 0 0 -1em;opacity:.25;position:absolute;text-align:center;top:50%;width:2em}.poptrox-popup:hover .closer,.poptrox-popup:hover .nav-previous,.poptrox-popup:hover .nav-next{opacity:.5}.poptrox-popup:hover .closer:hover,.poptrox-popup:hover .nav-previous:hover,.poptrox-popup:hover .nav-next:hover{opacity:1}.poptrox-popup.loading:before{opacity:0}body.touch .poptrox-popup .closer,body.touch .poptrox-popup .nav-previous,body.touch .poptrox-popup .nav-next{opacity:1 !important}@media screen and (max-width: 980px){.poptrox-popup .closer{background-size:3em}.poptrox-popup .nav-previous,.poptrox-popup .nav-next{background-size:4em}}@media screen and (max-width: 736px){.poptrox-popup:before{display:none}.poptrox-popup .caption{display:none !important}.poptrox-popup .closer,.poptrox-popup .nav-previous,.poptrox-popup .nav-next{display:none !important}}#wrapper{-moz-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -moz-filter 0.5s ease;-webkit-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -webkit-filter 0.5s ease;-ms-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -ms-filter 0.5s ease;transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, filter 0.5s ease;position:relative}#wrapper:after{pointer-events:none;-moz-transition:opacity 0.5s ease, visibility 0.5s;-webkit-transition:opacity 0.5s ease, visibility 0.5s;-ms-transition:opacity 0.5s ease, visibility 0.5s;transition:opacity 0.5s ease, visibility 0.5s;background:rgba(249,246,240,.95);content:"";display:block;height:100%;left:0;opacity:0;position:absolute;top:0;visibility:hidden;width:100%;z-index:1}body.ie #wrapper:after{background:rgba(249,246,240,.95)}body.modal-active #wrapper{-moz-filter:blur(8px);-webkit-filter:blur(8px);-ms-filter:blur(8px);filter:blur(8px)}body.modal-active #wrapper:after{pointer-events:auto;opacity:1;visibility:visible;z-index:10003}#wrapper:before{-moz-animation:spinner 1s infinite linear !important;-webkit-animation:spinner 1s infinite linear !important;-ms-animation:spinner 1s infinite linear !important;animation:spinner 1s infinite linear !important;pointer-events:none;-moz-transition:top 0.75s ease-in-out, opacity 0.35s ease-out, visibility 0.35s;-webkit-transition:top 0.75s ease-in-out, opacity 0.35s ease-out, visibility 0.35s;-ms-transition:top 0.75s ease-in-out, opacity 0.35s ease-out, visibility 0.35s;transition:top 0.75s ease-in-out, opacity 0.35s ease-out, visibility 0.35s;background-image:url("images/spinner.svg");background-position:center;background-repeat:no-repeat;background-size:contain;content:"";display:block;font-size:2em;height:2em;left:50%;line-height:2em;margin:-1em 0 0 -1em;opacity:0;position:fixed;text-align:center;top:75%;visibility:hidden;width:2em}body.is-preload #wrapper:before{-moz-transition:opacity 1s ease-out !important;-webkit-transition:opacity 1s ease-out !important;-ms-transition:opacity 1s ease-out !important;transition:opacity 1s ease-out !important;-moz-transition-delay:0.5s !important;-webkit-transition-delay:0.5s !important;-ms-transition-delay:0.5s !important;transition-delay:0.5s !important;opacity:.25;top:50%;visibility:visible}body{padding:0 0 4em 0}#header{-moz-transform:translateY(0);-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-moz-transition:-moz-transform 1s ease;-webkit-transition:-webkit-transform 1s ease;-ms-transition:-ms-transform 1s ease;transition:transform 1s ease;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background:#eee8dd;bottom:-1em;height:5em;left:0;line-height:4em;padding:0 1.5em;position:fixed;user-select:none;width:100%;z-index:10002}body.is-preload #header{-moz-transform:translateY(4em);-webkit-transform:translateY(4em);-ms-transform:translateY(4em);transform:translateY(4em)}#header h1{color:#5c554e;display:inline-block;font-size:1em;line-height:1;margin:0;vertical-align:middle}#header h1 a{border:0;color:inherit}#header h1 a:hover{color:inherit !important}#header nav{position:absolute;right:0;top:0}#header nav>ul{list-style:none;margin:0;padding:0}#header nav>ul>li{display:inline-block;padding:0}#header nav>ul>li a{-moz-transition:background-color 0.5s ease;-webkit-transition:background-color 0.5s ease;-ms-transition:background-color 0.5s ease;transition:background-color 0.5s ease;border:0;color:#38332f;display:inline-block;letter-spacing:.1em;padding:0 1.65em;text-transform:uppercase}#header nav>ul>li a.icon:before{color:#9e9790;float:right;margin-left:.75em}#header nav>ul>li a:hover{color:#38332f !important}#header nav>ul>li a.active{background-color:#f9f6f0}@media screen and (max-width: 736px){body{padding:4em 0 0 0}#header{-moz-transform:translateY(0);-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);bottom:auto;height:4em;padding:0 1em;top:0}body.is-preload #header{-moz-transform:translateY(-3.4em);-webkit-transform:translateY(-3.4em);-ms-transform:translateY(-3.4em);transform:translateY(-3.4em)}#header h1{font-size:.9em}#header nav>ul>li a{font-size:.9em;padding:0 1.15em}}#main{-moz-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -moz-filter 0.5s ease;-webkit-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -webkit-filter 0.5s ease;-ms-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -ms-filter 0.5s ease;transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, filter 0.5s ease;display:-moz-flex;display:-webkit-flex;display:-ms-flex;display:flex;-moz-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-tap-highlight-color:rgba(255,255,255,0)}#main .thumb{-moz-transition:opacity 1.25s ease-in-out;-webkit-transition:opacity 1.25s ease-in-out;-ms-transition:opacity 1.25s ease-in-out;transition:opacity 1.25s ease-in-out;pointer-events:auto;-webkit-tap-highlight-color:rgba(255,255,255,0);opacity:1;overflow:hidden;position:relative}#main .thumb:after{background-image:-moz-linear-gradient(to top, rgba(10,17,25,0.35) 5%, rgba(10,17,25,0) 35%);background-image:-webkit-linear-gradient(to top, rgba(10,17,25,0.35) 5%, rgba(10,17,25,0) 35%);background-image:-ms-linear-gradient(to top, rgba(10,17,25,0.35) 5%, rgba(10,17,25,0) 35%);background-image:linear-gradient(to top, rgba(10,17,25,0.35) 5%, rgba(10,17,25,0) 35%);pointer-events:none;background-size:cover;content:"";display:block;height:100%;left:0;position:absolute;top:0;width:100%}#main .thumb>.image{-webkit-tap-highlight-color:rgba(255,255,255,0);background-position:center;background-repeat:no-repeat;background-size:cover;border:0;height:100%;left:0;position:absolute;top:0;width:100%}#main .thumb>h2{pointer-events:none;bottom:1.875em;font-size:.8em;left:2.1875em;margin:0;position:absolute;z-index:1}#main .thumb>p{display:none}#main:after{pointer-events:none;-moz-transition:opacity 0.5s ease, visibility 0.5s;-webkit-transition:opacity 0.5s ease, visibility 0.5s;-ms-transition:opacity 0.5s ease, visibility 0.5s;transition:opacity 0.5s ease, visibility 0.5s;background:rgba(249,246,240,.85);content:"";display:block;height:100%;left:0;opacity:0;position:absolute;top:0;visibility:hidden;width:100%;z-index:1}body.ie #main:after{background:rgba(249,246,240,.9)}body.content-active #main{-moz-filter:blur(6px);-webkit-filter:blur(6px);-ms-filter:blur(6px);filter:blur(6px)}body.content-active #main:after{pointer-events:auto;opacity:1;visibility:visible}body.is-preload #main .thumb{pointer-events:none;opacity:0}#main .thumb{-moz-transition-delay:2.525s;-webkit-transition-delay:2.525s;-ms-transition-delay:2.525s;transition-delay:2.525s;height:calc(40vh - 2em);min-height:20em;width:25%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}#main .thumb:nth-child(4){-moz-transition-delay:1.1s;-webkit-transition-delay:1.1s;-ms-transition-delay:1.1s;transition-delay:1.1s}#main .thumb:nth-child(5){-moz-transition-delay:1.25s;-webkit-transition-delay:1.25s;-ms-transition-delay:1.25s;transition-delay:1.25s}#main .thumb:nth-child(6){-moz-transition-delay:1.4s;-webkit-transition-delay:1.4s;-ms-transition-delay:1.4s;transition-delay:1.4s}#main .thumb:nth-child(7){-moz-transition-delay:1.55s;-webkit-transition-delay:1.55s;-ms-transition-delay:1.55s;transition-delay:1.55s}#main .thumb:nth-child(8){-moz-transition-delay:1.7s;-webkit-transition-delay:1.7s;-ms-transition-delay:1.7s;transition-delay:1.7s}#main .thumb:nth-child(9){-moz-transition-delay:1.85s;-webkit-transition-delay:1.85s;-ms-transition-delay:1.85s;transition-delay:1.85s}#main .thumb:nth-child(10){-moz-transition-delay:2s;-webkit-transition-delay:2s;-ms-transition-delay:2s;transition-delay:2s}#main .thumb:nth-child(11){-moz-transition-delay:2.15s;-webkit-transition-delay:2.15s;-ms-transition-delay:2.15s;transition-delay:2.15s}#main .thumb:nth-child(12){-moz-transition-delay:2.3s;-webkit-transition-delay:2.3s;-ms-transition-delay:2.3s;transition-delay:2.3s}@media screen and (max-width: 1680px){#main .thumb{-moz-transition-delay:2.075s;-webkit-transition-delay:2.075s;-ms-transition-delay:2.075s;transition-delay:2.075s;height:calc(40vh - 2em);min-height:20em;width:33.3333333333%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}#main .thumb:nth-child(4){-moz-transition-delay:1.1s;-webkit-transition-delay:1.1s;-ms-transition-delay:1.1s;transition-delay:1.1s}#main .thumb:nth-child(5){-moz-transition-delay:1.25s;-webkit-transition-delay:1.25s;-ms-transition-delay:1.25s;transition-delay:1.25s}#main .thumb:nth-child(6){-moz-transition-delay:1.4s;-webkit-transition-delay:1.4s;-ms-transition-delay:1.4s;transition-delay:1.4s}#main .thumb:nth-child(7){-moz-transition-delay:1.55s;-webkit-transition-delay:1.55s;-ms-transition-delay:1.55s;transition-delay:1.55s}#main .thumb:nth-child(8){-moz-transition-delay:1.7s;-webkit-transition-delay:1.7s;-ms-transition-delay:1.7s;transition-delay:1.7s}#main .thumb:nth-child(9){-moz-transition-delay:1.85s;-webkit-transition-delay:1.85s;-ms-transition-delay:1.85s;transition-delay:1.85s}}@media screen and (max-width: 1280px){#main .thumb{-moz-transition-delay:1.625s;-webkit-transition-delay:1.625s;-ms-transition-delay:1.625s;transition-delay:1.625s;height:calc(40vh - 2em);min-height:20em;width:50%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}#main .thumb:nth-child(4){-moz-transition-delay:1.1s;-webkit-transition-delay:1.1s;-ms-transition-delay:1.1s;transition-delay:1.1s}#main .thumb:nth-child(5){-moz-transition-delay:1.25s;-webkit-transition-delay:1.25s;-ms-transition-delay:1.25s;transition-delay:1.25s}#main .thumb:nth-child(6){-moz-transition-delay:1.4s;-webkit-transition-delay:1.4s;-ms-transition-delay:1.4s;transition-delay:1.4s}}@media screen and (max-width: 980px){#main .thumb{-moz-transition-delay:2.075s;-webkit-transition-delay:2.075s;-ms-transition-delay:2.075s;transition-delay:2.075s;height:calc(28.5714285714vh - 1.3333333333em);min-height:18em;width:50%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}#main .thumb:nth-child(4){-moz-transition-delay:1.1s;-webkit-transition-delay:1.1s;-ms-transition-delay:1.1s;transition-delay:1.1s}#main .thumb:nth-child(5){-moz-transition-delay:1.25s;-webkit-transition-delay:1.25s;-ms-transition-delay:1.25s;transition-delay:1.25s}#main .thumb:nth-child(6){-moz-transition-delay:1.4s;-webkit-transition-delay:1.4s;-ms-transition-delay:1.4s;transition-delay:1.4s}#main .thumb:nth-child(7){-moz-transition-delay:1.55s;-webkit-transition-delay:1.55s;-ms-transition-delay:1.55s;transition-delay:1.55s}#main .thumb:nth-child(8){-moz-transition-delay:1.7s;-webkit-transition-delay:1.7s;-ms-transition-delay:1.7s;transition-delay:1.7s}#main .thumb:nth-child(9){-moz-transition-delay:1.85s;-webkit-transition-delay:1.85s;-ms-transition-delay:1.85s;transition-delay:1.85s}}@media screen and (max-width: 480px){#main .thumb{-moz-transition-delay:1.175s;-webkit-transition-delay:1.175s;-ms-transition-delay:1.175s;transition-delay:1.175s;height:calc(40vh - 2em);min-height:18em;width:100%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}}#footer .copyright{color:#9e9790;font-size:.9em}#footer .copyright a{color:inherit}.text-fg{color:#a0a0a1}#footer .presentify{margin:0 0 1.4em 0;display:grid;grid-template-columns:auto 1fr;column-gap:1rem;align-items:center}#footer .presentify .presentify-logo{display:flex;align-items:center;justify-content:center}#footer .presentify .presentify-logo a{display:flex;align-items:center;justify-content:center;border:0}#footer .presentify .presentify-logo img{width:72px;height:72px;display:block}#footer .presentify .presentify-text{margin:0} \ No newline at end of file +@-moz-keyframes spinner{0%{-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes spinner{0%{-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@-ms-keyframes spinner{0%{-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spinner{0%{-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}body{-webkit-text-size-adjust:none}mark{background-color:rgba(0,0,0,0);color:inherit}input::-moz-focus-inner{border:0;padding:0}input,select,textarea{-moz-appearance:none;-webkit-appearance:none;-ms-appearance:none;appearance:none}@-ms-viewport{width:device-width}body{-ms-overflow-style:scrollbar}@media screen and (max-width: 480px){html,body{min-width:320px}}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}body{background:#f9f6f0}body.is-preload *,body.is-preload *:before,body.is-preload *:after{-moz-animation:none !important;-webkit-animation:none !important;-ms-animation:none !important;animation:none !important;-moz-transition:none !important;-webkit-transition:none !important;-ms-transition:none !important;transition:none !important}body.is-resizing *,body.is-resizing *:before,body.is-resizing *:after{-moz-animation:none !important;-webkit-animation:none !important;-ms-animation:none !important;animation:none !important;-moz-transition:none !important;-webkit-transition:none !important;-ms-transition:none !important;transition:none !important}body,input,select,textarea{color:#5c554e;font-family:"Source Sans Pro",Helvetica,sans-serif;font-size:15pt;font-weight:300;letter-spacing:.025em;line-height:1.65}@media screen and (max-width: 1680px){body,input,select,textarea{font-size:11pt}}a{-moz-transition:color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out;-webkit-transition:color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out;-ms-transition:color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out;transition:color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out;border-bottom:dotted 1px;color:#e48c71;text-decoration:none}a:hover{border-bottom-color:rgba(0,0,0,0);color:#e48c71 !important}strong,b{color:#38332f;font-weight:300}em,i{font-style:italic}p{margin:0 0 2em 0}h1,h2,h3,h4,h5,h6{color:#38332f;font-weight:300;letter-spacing:.1em;line-height:1.5;margin:0 0 1em 0;text-transform:uppercase}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit;text-decoration:none}h1{font-size:2em}h2{font-size:1.25em}h3{font-size:1.1em}h4{font-size:1em}h5{font-size:.9em}h6{font-size:.7em}@media screen and (max-width: 736px){h2{font-size:1em}h3{font-size:.9em}h4{font-size:.8em}h5{font-size:.7em}h6{font-size:.7em}}sub{font-size:.8em;position:relative;top:.5em}sup{font-size:.8em;position:relative;top:-0.5em}blockquote{border-left:4px #e6dccc;font-style:italic;margin:0 0 2em 0;padding:.5em 0 .5em 2em}code{background:#f0e5d6;border:solid 1px #e6dccc;font-family:"Courier New",monospace;font-size:.9em;margin:0 .25em;padding:.25em .65em}pre{-webkit-overflow-scrolling:touch;font-family:"Courier New",monospace;font-size:.9em;margin:0 0 2em 0}pre code{display:block;line-height:1.75;padding:1em 1.5em;overflow-x:auto}hr{border:0;border-bottom:solid 1px #e6dccc;margin:2em 0}hr.major{margin:3em 0}.align-left{text-align:left}.align-center{text-align:center}.align-right{text-align:right}input[type=submit],input[type=reset],input[type=button],button,.button{-moz-appearance:none;-webkit-appearance:none;-ms-appearance:none;appearance:none;-moz-transition:background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, color 0.2s ease-in-out;-webkit-transition:background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, color 0.2s ease-in-out;-ms-transition:background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, color 0.2s ease-in-out;transition:background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, color 0.2s ease-in-out;background-color:rgba(0,0,0,0);border:0;border-radius:0;box-shadow:inset 0 0 0 2px #e6dccc;color:#38332f !important;cursor:pointer;display:inline-block;font-size:.9em;font-weight:300;height:3.0555555556em;letter-spacing:.1em;line-height:3.0555555556em;padding:0 2.5em;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}input[type=submit]:hover,input[type=reset]:hover,input[type=button]:hover,button:hover,.button:hover{box-shadow:inset 0 0 0 2px #e48c71;color:#e48c71 !important}input[type=submit]:hover:active,input[type=reset]:hover:active,input[type=button]:hover:active,button:hover:active,.button:hover:active{background-color:rgba(228,140,113,.15);color:#e48c71 !important}input[type=submit].icon,input[type=reset].icon,input[type=button].icon,button.icon,.button.icon{padding-left:1.35em}input[type=submit].icon:before,input[type=reset].icon:before,input[type=button].icon:before,button.icon:before,.button.icon:before{margin-right:.5em}input[type=submit].fit,input[type=reset].fit,input[type=button].fit,button.fit,.button.fit{width:100%}input[type=submit].small,input[type=reset].small,input[type=button].small,button.small,.button.small{font-size:.8em}input[type=submit].large,input[type=reset].large,input[type=button].large,button.large,.button.large{font-size:1.35em}input[type=submit].primary,input[type=reset].primary,input[type=button].primary,button.primary,.button.primary{background-color:#e48c71;box-shadow:none}input[type=submit].primary:hover,input[type=reset].primary:hover,input[type=button].primary:hover,button.primary:hover,.button.primary:hover{background-color:#ecaf9c;color:#38332f !important}input[type=submit].primary:hover:active,input[type=reset].primary:hover:active,input[type=button].primary:hover:active,button.primary:hover:active,.button.primary:hover:active{background-color:#dc6946}input[type=submit].disabled,input[type=submit]:disabled,input[type=reset].disabled,input[type=reset]:disabled,input[type=button].disabled,input[type=button]:disabled,button.disabled,button:disabled,.button.disabled,.button:disabled{pointer-events:none;opacity:.35}form{margin:0 0 2em 0}form>:last-child{margin-bottom:0}form>.fields{display:-moz-flex;display:-webkit-flex;display:-ms-flex;display:flex;-moz-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:calc(100% + 3em);margin:-1.5em 0 2em -1.5em}form>.fields>.field{-moz-flex-grow:0;-webkit-flex-grow:0;-ms-flex-grow:0;flex-grow:0;-moz-flex-shrink:0;-webkit-flex-shrink:0;-ms-flex-shrink:0;flex-shrink:0;padding:1.5em 0 0 1.5em;width:calc(100% - 1.5em)}form>.fields>.field.half{width:calc(50% - 0.75em)}form>.fields>.field.third{width:calc(100%/3 - 0.5em)}form>.fields>.field.quarter{width:calc(25% - 0.375em)}@media screen and (max-width: 736px){form>.fields{width:calc(100% + 3em);margin:-1.5em 0 2em -1.5em}form>.fields>.field{padding:1.5em 0 0 1.5em;width:calc(100% - 1.5em)}form>.fields>.field.half{width:calc(100% - 1.5em)}form>.fields>.field.third{width:calc(100% - 1.5em)}form>.fields>.field.quarter{width:calc(100% - 1.5em)}}label{color:#38332f;display:block;font-size:.9em;font-weight:300;margin:0 0 1em 0}input[type=text],input[type=password],input[type=email],input[type=tel],input[type=search],input[type=url],select,textarea{-moz-appearance:none;-webkit-appearance:none;-ms-appearance:none;appearance:none;background:#f0e5d6;border:0;border-radius:0;color:#5c554e;display:block;outline:0;padding:0 1em;text-decoration:none;width:100%}input[type=text]:invalid,input[type=password]:invalid,input[type=email]:invalid,input[type=tel]:invalid,input[type=search]:invalid,input[type=url]:invalid,select:invalid,textarea:invalid{box-shadow:none}input[type=text]:focus,input[type=password]:focus,input[type=email]:focus,input[type=tel]:focus,input[type=search]:focus,input[type=url]:focus,select:focus,textarea:focus{box-shadow:inset 0 0 0 2px #e48c71}select{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='%23e6dccc' /%3E%3C/svg%3E");background-size:1.25rem;background-repeat:no-repeat;background-position:calc(100% - 1rem) center;height:2.75em;padding-right:2.75em;text-overflow:ellipsis}select option{color:#38332f;background:#f9f6f0}select:focus::-ms-value{background-color:rgba(0,0,0,0)}select::-ms-expand{display:none}input[type=text],input[type=password],input[type=email],input[type=tel],input[type=search],input[type=url],select{height:2.75em}textarea{padding:.75em 1em}input[type=checkbox],input[type=radio]{-moz-appearance:none;-webkit-appearance:none;-ms-appearance:none;appearance:none;display:block;float:left;margin-right:-2em;opacity:0;width:1em;z-index:-1}input[type=checkbox]+label,input[type=radio]+label{text-decoration:none;color:#5c554e;cursor:pointer;display:inline-block;font-size:1em;font-weight:300;padding-left:2.4em;padding-right:.75em;position:relative}input[type=checkbox]+label:before,input[type=radio]+label:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;text-transform:none !important;font-family:"Font Awesome 5 Free";font-weight:900}input[type=checkbox]+label:before,input[type=radio]+label:before{background:#f0e5d6;content:"";display:inline-block;font-size:.8em;height:2.0625em;left:0;line-height:2.0625em;position:absolute;text-align:center;top:0;width:2.0625em}input[type=checkbox]:checked+label:before,input[type=radio]:checked+label:before{background:#e48c71;border-color:#e48c71;color:#38332f;content:""}input[type=checkbox]:focus+label:before,input[type=radio]:focus+label:before{box-shadow:0 0 0 2px #e48c71}input[type=radio]+label:before{border-radius:100%}::-webkit-input-placeholder{color:#7a746e !important;opacity:1}:-moz-placeholder{color:#7a746e !important;opacity:1}::-moz-placeholder{color:#7a746e !important;opacity:1}:-ms-input-placeholder{color:#7a746e !important;opacity:1}.icon{text-decoration:none;border-bottom:none;position:relative}.icon:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;text-transform:none !important;font-family:"Font Awesome 5 Free";font-weight:400}.icon>.label{display:none}.icon:before{line-height:inherit}.icon.solid:before{font-weight:900}.icon.brands:before{font-family:"Font Awesome 5 Brands"}ol{list-style:decimal;margin:0 0 2em 0;padding-left:1.25em}ol li{padding-left:.25em}ul{list-style:disc;margin:0 0 2em 0;padding-left:1em}ul li{padding-left:.5em}ul.alt{list-style:none;padding-left:0}ul.alt li{border-top:solid 1px #e6dccc;padding:.5em 0}ul.alt li:first-child{border-top:0;padding-top:0}dl{margin:0 0 2em 0}dl dt{display:block;font-weight:300;margin:0 0 1em 0}dl dd{margin-left:2em}ul.actions{display:-moz-flex;display:-webkit-flex;display:-ms-flex;display:flex;cursor:default;list-style:none;margin-left:-1em;padding-left:0}ul.actions li{padding:0 0 0 1em;vertical-align:middle}ul.actions.special{-moz-justify-content:center;-webkit-justify-content:center;-ms-justify-content:center;justify-content:center;width:100%;margin-left:0}ul.actions.special li:first-child{padding-left:0}ul.actions.stacked{-moz-flex-direction:column;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-left:0}ul.actions.stacked li{padding:1.3em 0 0 0}ul.actions.stacked li:first-child{padding-top:0}ul.actions.fit{width:calc(100% + 1em)}ul.actions.fit li{-moz-flex-grow:1;-webkit-flex-grow:1;-ms-flex-grow:1;flex-grow:1;-moz-flex-shrink:1;-webkit-flex-shrink:1;-ms-flex-shrink:1;flex-shrink:1;width:100%}ul.actions.fit li>*{width:100%}ul.actions.fit.stacked{width:100%}@media screen and (max-width: 480px){ul.actions:not(.fixed){-moz-flex-direction:column;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-left:0;width:100% !important}ul.actions:not(.fixed) li{-moz-flex-grow:1;-webkit-flex-grow:1;-ms-flex-grow:1;flex-grow:1;-moz-flex-shrink:1;-webkit-flex-shrink:1;-ms-flex-shrink:1;flex-shrink:1;padding:1em 0 0 0;text-align:center;width:100%}ul.actions:not(.fixed) li>*{width:100%}ul.actions:not(.fixed) li:first-child{padding-top:0}ul.actions:not(.fixed) li input[type=submit],ul.actions:not(.fixed) li input[type=reset],ul.actions:not(.fixed) li input[type=button],ul.actions:not(.fixed) li button,ul.actions:not(.fixed) li .button{width:100%}ul.actions:not(.fixed) li input[type=submit].icon:before,ul.actions:not(.fixed) li input[type=reset].icon:before,ul.actions:not(.fixed) li input[type=button].icon:before,ul.actions:not(.fixed) li button.icon:before,ul.actions:not(.fixed) li .button.icon:before{margin-left:-0.5rem}}ul.icons{cursor:default;list-style:none;padding-left:0}ul.icons li{display:inline-block;padding:0 1em 0 0}ul.icons li:last-child{padding-right:0}ul.icons li .icon{color:#9e9790}ul.icons li .icon:before{font-size:1.5em}.table-wrapper{-webkit-overflow-scrolling:touch;overflow-x:auto}table{margin:0 0 2em 0;width:100%}table tbody tr{border:solid 1px #e6dccc;border-left:0;border-right:0}table tbody tr:nth-child(2n+1){background-color:#f0e5d6}table td{padding:.75em .75em}table th{color:#38332f;font-size:.9em;font-weight:300;padding:0 .75em .75em .75em;text-align:left}table thead{border-bottom:solid 2px #e6dccc}table tfoot{border-top:solid 2px #e6dccc}table.alt{border-collapse:separate}table.alt tbody tr td{border:solid 1px #e6dccc;border-left-width:0;border-top-width:0}table.alt tbody tr td:first-child{border-left-width:1px}table.alt tbody tr:first-child td{border-top-width:1px}table.alt thead{border-bottom:0}table.alt tfoot{border-top:0}.panel{padding:4em 4em 2em 4em;-moz-transform:translateY(100vh);-webkit-transform:translateY(100vh);-ms-transform:translateY(100vh);transform:translateY(100vh);-moz-transition:-moz-transform 0.5s ease;-webkit-transition:-webkit-transform 0.5s ease;-ms-transition:-ms-transform 0.5s ease;transition:transform 0.5s ease;-webkit-overflow-scrolling:touch;background:rgba(249,246,240,.975);bottom:4em;left:0;max-height:calc(80vh - 4em);overflow-y:auto;position:fixed;width:100%;z-index:10001}.panel.active{-moz-transform:translateY(1px);-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px)}.panel>.inner{margin:0 auto;max-width:100%;width:75em}.panel>.inner.split{display:-moz-flex;display:-webkit-flex;display:-ms-flex;display:flex}.panel>.inner.split>div{margin-left:4em;width:50%}.panel>.inner.split>:first-child{margin-left:0}.panel>.closer{-moz-transition:opacity 0.2s ease-in-out;-webkit-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;background-image:url("images/close.svg");background-position:center;background-repeat:no-repeat;background-size:3em;cursor:pointer;height:5em;opacity:.25;position:absolute;right:0;top:0;width:5em;z-index:2}.panel>.closer:hover{opacity:1}@media screen and (max-width: 1280px){.panel{padding:3em 3em 1em 3em}.panel>.inner.split>div{margin-left:3em}.panel>.closer{background-size:2.5em;background-position:75% 25%}}@media screen and (max-width: 980px){.panel>.inner.split{-moz-flex-direction:column;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.panel>.inner.split>div{margin-left:0;width:100%}}@media screen and (max-width: 736px){.panel{-moz-transform:translateY(-100vh);-webkit-transform:translateY(-100vh);-ms-transform:translateY(-100vh);transform:translateY(-100vh);padding:4em 2em 2em 2em;bottom:auto;top:calc(4em - 1px)}.panel.active{-moz-transform:translateY(0);-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.poptrox-overlay{-webkit-tap-highlight-color:rgba(255,255,255,0)}.poptrox-popup{background:rgba(238,232,221,.925);box-shadow:0 1em 3em .5em rgba(0,0,0,.25);cursor:default}.poptrox-popup:before{-moz-transition:opacity 0.2s ease-in-out;-webkit-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;background-image:-moz-linear-gradient(to left, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0)), -moz-linear-gradient(to right, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0));background-image:-webkit-linear-gradient(to left, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0)), -webkit-linear-gradient(to right, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0));background-image:-ms-linear-gradient(to left, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0)), -ms-linear-gradient(to right, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0));background-image:linear-gradient(to left, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0)), linear-gradient(to right, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0));content:"";display:block;height:100%;left:0;position:absolute;top:0;width:100%;z-index:1;opacity:1}.poptrox-popup .closer{-moz-transition:opacity 0.2s ease-in-out;-webkit-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;background-image:url("images/close.svg");background-position:center;background-repeat:no-repeat;background-size:3em;height:5em;opacity:0;position:absolute;right:0;top:0;width:5em;z-index:2}.poptrox-popup .nav-previous,.poptrox-popup .nav-next{-moz-transition:opacity 0.2s ease-in-out;-webkit-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;background-image:url("images/arrow.svg");background-position:center;background-repeat:no-repeat;background-size:5em;cursor:pointer;height:8em;margin-top:-4em;opacity:0;position:absolute;top:50%;width:6em;z-index:2}.poptrox-popup .nav-previous{-moz-transform:scaleX(-1);-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1);left:0}.poptrox-popup .nav-next{right:0}.poptrox-popup .caption{padding:2em 2em .1em 2em;background:rgba(246,240,228,.95);bottom:0;cursor:default;left:0;position:absolute;text-align:left;width:100%;z-index:2}.poptrox-popup .caption h2,.poptrox-popup .caption h3,.poptrox-popup .caption h4,.poptrox-popup .caption h5,.poptrox-popup .caption h6{margin:0 0 .5em 0;color:#4a4a4a !important}.poptrox-popup .caption p,.poptrox-popup .caption span,.poptrox-popup .caption i,.poptrox-popup .caption strong,.poptrox-popup .caption em{color:#5c554e !important}.poptrox-popup .loader{-moz-animation:spinner 1s infinite linear !important;-webkit-animation:spinner 1s infinite linear !important;-ms-animation:spinner 1s infinite linear !important;animation:spinner 1s infinite linear !important;background-image:url("images/spinner.svg");background-position:center;background-repeat:no-repeat;background-size:contain;display:block;font-size:2em;height:2em;left:50%;line-height:2em;margin:-1em 0 0 -1em;opacity:.25;position:absolute;text-align:center;top:50%;width:2em}.poptrox-popup:hover .closer,.poptrox-popup:hover .nav-previous,.poptrox-popup:hover .nav-next{opacity:.5}.poptrox-popup:hover .closer:hover,.poptrox-popup:hover .nav-previous:hover,.poptrox-popup:hover .nav-next:hover{opacity:1}.poptrox-popup.loading:before{opacity:0}body.touch .poptrox-popup .closer,body.touch .poptrox-popup .nav-previous,body.touch .poptrox-popup .nav-next{opacity:1 !important}@media screen and (max-width: 980px){.poptrox-popup .closer{background-size:3em}.poptrox-popup .nav-previous,.poptrox-popup .nav-next{background-size:4em}}@media screen and (max-width: 736px){.poptrox-popup:before{display:none}.poptrox-popup .caption{display:none !important}.poptrox-popup .closer,.poptrox-popup .nav-previous,.poptrox-popup .nav-next{display:none !important}}#wrapper{-moz-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -moz-filter 0.5s ease;-webkit-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -webkit-filter 0.5s ease;-ms-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -ms-filter 0.5s ease;transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, filter 0.5s ease;position:relative}#wrapper:after{pointer-events:none;-moz-transition:opacity 0.5s ease, visibility 0.5s;-webkit-transition:opacity 0.5s ease, visibility 0.5s;-ms-transition:opacity 0.5s ease, visibility 0.5s;transition:opacity 0.5s ease, visibility 0.5s;background:rgba(249,246,240,.95);content:"";display:block;height:100%;left:0;opacity:0;position:absolute;top:0;visibility:hidden;width:100%;z-index:1}body.ie #wrapper:after{background:rgba(249,246,240,.95)}body.modal-active #wrapper{-moz-filter:blur(8px);-webkit-filter:blur(8px);-ms-filter:blur(8px);filter:blur(8px)}body.modal-active #wrapper:after{pointer-events:auto;opacity:1;visibility:visible;z-index:10003}#wrapper:before{-moz-animation:spinner 1s infinite linear !important;-webkit-animation:spinner 1s infinite linear !important;-ms-animation:spinner 1s infinite linear !important;animation:spinner 1s infinite linear !important;pointer-events:none;-moz-transition:top 0.75s ease-in-out, opacity 0.35s ease-out, visibility 0.35s;-webkit-transition:top 0.75s ease-in-out, opacity 0.35s ease-out, visibility 0.35s;-ms-transition:top 0.75s ease-in-out, opacity 0.35s ease-out, visibility 0.35s;transition:top 0.75s ease-in-out, opacity 0.35s ease-out, visibility 0.35s;background-image:url("images/spinner.svg");background-position:center;background-repeat:no-repeat;background-size:contain;content:"";display:block;font-size:2em;height:2em;left:50%;line-height:2em;margin:-1em 0 0 -1em;opacity:0;position:fixed;text-align:center;top:75%;visibility:hidden;width:2em}body.is-preload #wrapper:before{-moz-transition:opacity 1s ease-out !important;-webkit-transition:opacity 1s ease-out !important;-ms-transition:opacity 1s ease-out !important;transition:opacity 1s ease-out !important;-moz-transition-delay:0.5s !important;-webkit-transition-delay:0.5s !important;-ms-transition-delay:0.5s !important;transition-delay:0.5s !important;opacity:.25;top:50%;visibility:visible}body{padding:0 0 4em 0}#header{-moz-transform:translateY(0);-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-moz-transition:-moz-transform 1s ease;-webkit-transition:-webkit-transform 1s ease;-ms-transition:-ms-transform 1s ease;transition:transform 1s ease;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background:#eee8dd;bottom:-1em;height:5em;left:0;line-height:4em;padding:0 1.5em;position:fixed;user-select:none;width:100%;z-index:10002}body.is-preload #header{-moz-transform:translateY(4em);-webkit-transform:translateY(4em);-ms-transform:translateY(4em);transform:translateY(4em)}#header h1{color:#5c554e;display:inline-block;font-size:1em;line-height:1;margin:0;vertical-align:middle}#header h1 a{border:0;color:inherit}#header h1 a:hover{color:inherit !important}#header nav{position:absolute;right:0;top:0}#header nav>ul{list-style:none;margin:0;padding:0}#header nav>ul>li{display:inline-block;padding:0}#header nav>ul>li a{-moz-transition:background-color 0.5s ease;-webkit-transition:background-color 0.5s ease;-ms-transition:background-color 0.5s ease;transition:background-color 0.5s ease;border:0;color:#38332f;display:inline-block;letter-spacing:.1em;padding:0 1.65em;text-transform:uppercase}#header nav>ul>li a.icon:before{color:#9e9790;float:right;margin-left:.75em}#header nav>ul>li a:hover{color:#38332f !important}#header nav>ul>li a.active{background-color:#f9f6f0}@media screen and (max-width: 736px){body{padding:4em 0 0 0}#header{-moz-transform:translateY(0);-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);bottom:auto;height:4em;padding:0 1em;top:0}body.is-preload #header{-moz-transform:translateY(-3.4em);-webkit-transform:translateY(-3.4em);-ms-transform:translateY(-3.4em);transform:translateY(-3.4em)}#header h1{font-size:.9em}#header nav>ul>li a{font-size:.9em;padding:0 1.15em}}#main{-moz-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -moz-filter 0.5s ease;-webkit-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -webkit-filter 0.5s ease;-ms-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -ms-filter 0.5s ease;transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, filter 0.5s ease;display:-moz-flex;display:-webkit-flex;display:-ms-flex;display:flex;-moz-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-tap-highlight-color:rgba(255,255,255,0)}#main .thumb{-moz-transition:opacity 1.25s ease-in-out;-webkit-transition:opacity 1.25s ease-in-out;-ms-transition:opacity 1.25s ease-in-out;transition:opacity 1.25s ease-in-out;pointer-events:auto;-webkit-tap-highlight-color:rgba(255,255,255,0);opacity:1;overflow:hidden;position:relative}#main .thumb:after{background-image:-moz-linear-gradient(to top, rgba(10,17,25,0.35) 5%, rgba(10,17,25,0) 35%);background-image:-webkit-linear-gradient(to top, rgba(10,17,25,0.35) 5%, rgba(10,17,25,0) 35%);background-image:-ms-linear-gradient(to top, rgba(10,17,25,0.35) 5%, rgba(10,17,25,0) 35%);background-image:linear-gradient(to top, rgba(10,17,25,0.35) 5%, rgba(10,17,25,0) 35%);pointer-events:none;background-size:cover;content:"";display:block;height:100%;left:0;position:absolute;top:0;width:100%}#main .thumb>.image{-webkit-tap-highlight-color:rgba(255,255,255,0);background-position:center;background-repeat:no-repeat;background-size:cover;border:0;height:100%;left:0;position:absolute;top:0;width:100%}#main .thumb>h2{pointer-events:none;bottom:1.875em;font-size:.8em;left:2.1875em;margin:0;position:absolute;z-index:1}#main .thumb>p{display:none}#main:after{pointer-events:none;-moz-transition:opacity 0.5s ease, visibility 0.5s;-webkit-transition:opacity 0.5s ease, visibility 0.5s;-ms-transition:opacity 0.5s ease, visibility 0.5s;transition:opacity 0.5s ease, visibility 0.5s;background:rgba(249,246,240,.85);content:"";display:block;height:100%;left:0;opacity:0;position:absolute;top:0;visibility:hidden;width:100%;z-index:1}body.ie #main:after{background:rgba(249,246,240,.9)}body.content-active #main{-moz-filter:blur(6px);-webkit-filter:blur(6px);-ms-filter:blur(6px);filter:blur(6px)}body.content-active #main:after{pointer-events:auto;opacity:1;visibility:visible}body.is-preload #main .thumb{pointer-events:none;opacity:0}#main .thumb{-moz-transition-delay:2.525s;-webkit-transition-delay:2.525s;-ms-transition-delay:2.525s;transition-delay:2.525s;height:calc(40vh - 2em);min-height:20em;width:25%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}#main .thumb:nth-child(4){-moz-transition-delay:1.1s;-webkit-transition-delay:1.1s;-ms-transition-delay:1.1s;transition-delay:1.1s}#main .thumb:nth-child(5){-moz-transition-delay:1.25s;-webkit-transition-delay:1.25s;-ms-transition-delay:1.25s;transition-delay:1.25s}#main .thumb:nth-child(6){-moz-transition-delay:1.4s;-webkit-transition-delay:1.4s;-ms-transition-delay:1.4s;transition-delay:1.4s}#main .thumb:nth-child(7){-moz-transition-delay:1.55s;-webkit-transition-delay:1.55s;-ms-transition-delay:1.55s;transition-delay:1.55s}#main .thumb:nth-child(8){-moz-transition-delay:1.7s;-webkit-transition-delay:1.7s;-ms-transition-delay:1.7s;transition-delay:1.7s}#main .thumb:nth-child(9){-moz-transition-delay:1.85s;-webkit-transition-delay:1.85s;-ms-transition-delay:1.85s;transition-delay:1.85s}#main .thumb:nth-child(10){-moz-transition-delay:2s;-webkit-transition-delay:2s;-ms-transition-delay:2s;transition-delay:2s}#main .thumb:nth-child(11){-moz-transition-delay:2.15s;-webkit-transition-delay:2.15s;-ms-transition-delay:2.15s;transition-delay:2.15s}#main .thumb:nth-child(12){-moz-transition-delay:2.3s;-webkit-transition-delay:2.3s;-ms-transition-delay:2.3s;transition-delay:2.3s}@media screen and (max-width: 1680px){#main .thumb{-moz-transition-delay:2.075s;-webkit-transition-delay:2.075s;-ms-transition-delay:2.075s;transition-delay:2.075s;height:calc(40vh - 2em);min-height:20em;width:33.3333333333%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}#main .thumb:nth-child(4){-moz-transition-delay:1.1s;-webkit-transition-delay:1.1s;-ms-transition-delay:1.1s;transition-delay:1.1s}#main .thumb:nth-child(5){-moz-transition-delay:1.25s;-webkit-transition-delay:1.25s;-ms-transition-delay:1.25s;transition-delay:1.25s}#main .thumb:nth-child(6){-moz-transition-delay:1.4s;-webkit-transition-delay:1.4s;-ms-transition-delay:1.4s;transition-delay:1.4s}#main .thumb:nth-child(7){-moz-transition-delay:1.55s;-webkit-transition-delay:1.55s;-ms-transition-delay:1.55s;transition-delay:1.55s}#main .thumb:nth-child(8){-moz-transition-delay:1.7s;-webkit-transition-delay:1.7s;-ms-transition-delay:1.7s;transition-delay:1.7s}#main .thumb:nth-child(9){-moz-transition-delay:1.85s;-webkit-transition-delay:1.85s;-ms-transition-delay:1.85s;transition-delay:1.85s}}@media screen and (max-width: 1280px){#main .thumb{-moz-transition-delay:1.625s;-webkit-transition-delay:1.625s;-ms-transition-delay:1.625s;transition-delay:1.625s;height:calc(40vh - 2em);min-height:20em;width:50%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}#main .thumb:nth-child(4){-moz-transition-delay:1.1s;-webkit-transition-delay:1.1s;-ms-transition-delay:1.1s;transition-delay:1.1s}#main .thumb:nth-child(5){-moz-transition-delay:1.25s;-webkit-transition-delay:1.25s;-ms-transition-delay:1.25s;transition-delay:1.25s}#main .thumb:nth-child(6){-moz-transition-delay:1.4s;-webkit-transition-delay:1.4s;-ms-transition-delay:1.4s;transition-delay:1.4s}}@media screen and (max-width: 980px){#main .thumb{-moz-transition-delay:2.075s;-webkit-transition-delay:2.075s;-ms-transition-delay:2.075s;transition-delay:2.075s;height:calc(28.5714285714vh - 1.3333333333em);min-height:18em;width:50%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}#main .thumb:nth-child(4){-moz-transition-delay:1.1s;-webkit-transition-delay:1.1s;-ms-transition-delay:1.1s;transition-delay:1.1s}#main .thumb:nth-child(5){-moz-transition-delay:1.25s;-webkit-transition-delay:1.25s;-ms-transition-delay:1.25s;transition-delay:1.25s}#main .thumb:nth-child(6){-moz-transition-delay:1.4s;-webkit-transition-delay:1.4s;-ms-transition-delay:1.4s;transition-delay:1.4s}#main .thumb:nth-child(7){-moz-transition-delay:1.55s;-webkit-transition-delay:1.55s;-ms-transition-delay:1.55s;transition-delay:1.55s}#main .thumb:nth-child(8){-moz-transition-delay:1.7s;-webkit-transition-delay:1.7s;-ms-transition-delay:1.7s;transition-delay:1.7s}#main .thumb:nth-child(9){-moz-transition-delay:1.85s;-webkit-transition-delay:1.85s;-ms-transition-delay:1.85s;transition-delay:1.85s}}@media screen and (max-width: 480px){#main .thumb{-moz-transition-delay:1.175s;-webkit-transition-delay:1.175s;-ms-transition-delay:1.175s;transition-delay:1.175s;height:calc(40vh - 2em);min-height:18em;width:100%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}}#footer .copyright{color:#9e9790;font-size:.9em}#footer .copyright a{color:inherit}.text-fg{color:#a0a0a1}#selection-toolbar{position:fixed;bottom:4em;left:0;width:100%;background:rgba(31,34,36,.95);padding:.75em 1.5em;display:flex;align-items:center;gap:1em;z-index:10003;transform:translateY(100%);transition:transform .3s ease;box-sizing:border-box}#selection-toolbar.visible{transform:translateY(0)}#selection-toolbar #sel-count{color:#fff;font-weight:400;margin-right:auto;white-space:nowrap}#selection-toolbar button{white-space:nowrap}body.selection-mode #main .thumb{cursor:pointer;position:relative}body.selection-mode #main .thumb::before{content:"";position:absolute;top:.6em;left:.6em;width:1.4em;height:1.4em;border:2px solid rgba(255,255,255,.7);border-radius:3px;background:rgba(0,0,0,.4);z-index:2;transition:all .2s ease;pointer-events:none}body.selection-mode #main .thumb.selected::before{background:#34a58e;border-color:#34a58e}body.selection-mode #main .thumb.selected .image{outline:3px solid #34a58e;outline-offset:-3px}@media screen and (max-width: 736px){#selection-toolbar{bottom:auto;top:4em;transform:translateY(-200%)}#selection-toolbar.visible{transform:translateY(0)}}#footer .presentify{margin:0 0 1.4em 0;display:grid;grid-template-columns:auto 1fr;column-gap:1rem;align-items:center}#footer .presentify .presentify-logo{display:flex;align-items:center;justify-content:center}#footer .presentify .presentify-logo a{display:flex;align-items:center;justify-content:center;border:0}#footer .presentify .presentify-logo img{width:72px;height:72px;display:block}#footer .presentify .presentify-text{margin:0} \ No newline at end of file diff --git a/assets/css/main.min.css b/assets/css/main.min.css index cc94d1c..cb654c6 100644 --- a/assets/css/main.min.css +++ b/assets/css/main.min.css @@ -1 +1 @@ -@-moz-keyframes spinner{0%{-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes spinner{0%{-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@-ms-keyframes spinner{0%{-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spinner{0%{-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}body{-webkit-text-size-adjust:none}mark{background-color:rgba(0,0,0,0);color:inherit}input::-moz-focus-inner{border:0;padding:0}input,select,textarea{-moz-appearance:none;-webkit-appearance:none;-ms-appearance:none;appearance:none}@-ms-viewport{width:device-width}body{-ms-overflow-style:scrollbar}@media screen and (max-width: 480px){html,body{min-width:320px}}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}body{background:#242629}body.is-preload *,body.is-preload *:before,body.is-preload *:after{-moz-animation:none !important;-webkit-animation:none !important;-ms-animation:none !important;animation:none !important;-moz-transition:none !important;-webkit-transition:none !important;-ms-transition:none !important;transition:none !important}body.is-resizing *,body.is-resizing *:before,body.is-resizing *:after{-moz-animation:none !important;-webkit-animation:none !important;-ms-animation:none !important;animation:none !important;-moz-transition:none !important;-webkit-transition:none !important;-ms-transition:none !important;transition:none !important}body,input,select,textarea{color:#a0a0a1;font-family:"Source Sans Pro",Helvetica,sans-serif;font-size:15pt;font-weight:300;letter-spacing:.025em;line-height:1.65}@media screen and (max-width: 1680px){body,input,select,textarea{font-size:11pt}}a{-moz-transition:color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out;-webkit-transition:color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out;-ms-transition:color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out;transition:color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out;border-bottom:dotted 1px;color:#34a58e;text-decoration:none}a:hover{border-bottom-color:rgba(0,0,0,0);color:#34a58e !important}strong,b{color:#fff;font-weight:300}em,i{font-style:italic}p{margin:0 0 2em 0}h1,h2,h3,h4,h5,h6{color:#fff;font-weight:300;letter-spacing:.1em;line-height:1.5;margin:0 0 1em 0;text-transform:uppercase}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit;text-decoration:none}h1{font-size:2em}h2{font-size:1.25em}h3{font-size:1.1em}h4{font-size:1em}h5{font-size:.9em}h6{font-size:.7em}@media screen and (max-width: 736px){h2{font-size:1em}h3{font-size:.9em}h4{font-size:.8em}h5{font-size:.7em}h6{font-size:.7em}}sub{font-size:.8em;position:relative;top:.5em}sup{font-size:.8em;position:relative;top:-0.5em}blockquote{border-left:4px #36383c;font-style:italic;margin:0 0 2em 0;padding:.5em 0 .5em 2em}code{background:#34363b;border:solid 1px #36383c;font-family:"Courier New",monospace;font-size:.9em;margin:0 .25em;padding:.25em .65em}pre{-webkit-overflow-scrolling:touch;font-family:"Courier New",monospace;font-size:.9em;margin:0 0 2em 0}pre code{display:block;line-height:1.75;padding:1em 1.5em;overflow-x:auto}hr{border:0;border-bottom:solid 1px #36383c;margin:2em 0}hr.major{margin:3em 0}.align-left{text-align:left}.align-center{text-align:center}.align-right{text-align:right}input[type=submit],input[type=reset],input[type=button],button,.button{-moz-appearance:none;-webkit-appearance:none;-ms-appearance:none;appearance:none;-moz-transition:background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, color 0.2s ease-in-out;-webkit-transition:background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, color 0.2s ease-in-out;-ms-transition:background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, color 0.2s ease-in-out;transition:background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, color 0.2s ease-in-out;background-color:rgba(0,0,0,0);border:0;border-radius:0;box-shadow:inset 0 0 0 2px #36383c;color:#fff !important;cursor:pointer;display:inline-block;font-size:.9em;font-weight:300;height:3.0555555556em;letter-spacing:.1em;line-height:3.0555555556em;padding:0 2.5em;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}input[type=submit]:hover,input[type=reset]:hover,input[type=button]:hover,button:hover,.button:hover{box-shadow:inset 0 0 0 2px #34a58e;color:#34a58e !important}input[type=submit]:hover:active,input[type=reset]:hover:active,input[type=button]:hover:active,button:hover:active,.button:hover:active{background-color:rgba(52,165,142,.15);color:#34a58e !important}input[type=submit].icon,input[type=reset].icon,input[type=button].icon,button.icon,.button.icon{padding-left:1.35em}input[type=submit].icon:before,input[type=reset].icon:before,input[type=button].icon:before,button.icon:before,.button.icon:before{margin-right:.5em}input[type=submit].fit,input[type=reset].fit,input[type=button].fit,button.fit,.button.fit{width:100%}input[type=submit].small,input[type=reset].small,input[type=button].small,button.small,.button.small{font-size:.8em}input[type=submit].large,input[type=reset].large,input[type=button].large,button.large,.button.large{font-size:1.35em}input[type=submit].primary,input[type=reset].primary,input[type=button].primary,button.primary,.button.primary{background-color:#34a58e;box-shadow:none}input[type=submit].primary:hover,input[type=reset].primary:hover,input[type=button].primary:hover,button.primary:hover,.button.primary:hover{background-color:#47c5ab;color:#fff !important}input[type=submit].primary:hover:active,input[type=reset].primary:hover:active,input[type=button].primary:hover:active,button.primary:hover:active,.button.primary:hover:active{background-color:#287e6d}input[type=submit].disabled,input[type=submit]:disabled,input[type=reset].disabled,input[type=reset]:disabled,input[type=button].disabled,input[type=button]:disabled,button.disabled,button:disabled,.button.disabled,.button:disabled{pointer-events:none;opacity:.35}form{margin:0 0 2em 0}form>:last-child{margin-bottom:0}form>.fields{display:-moz-flex;display:-webkit-flex;display:-ms-flex;display:flex;-moz-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:calc(100% + 3em);margin:-1.5em 0 2em -1.5em}form>.fields>.field{-moz-flex-grow:0;-webkit-flex-grow:0;-ms-flex-grow:0;flex-grow:0;-moz-flex-shrink:0;-webkit-flex-shrink:0;-ms-flex-shrink:0;flex-shrink:0;padding:1.5em 0 0 1.5em;width:calc(100% - 1.5em)}form>.fields>.field.half{width:calc(50% - 0.75em)}form>.fields>.field.third{width:calc(100%/3 - 0.5em)}form>.fields>.field.quarter{width:calc(25% - 0.375em)}@media screen and (max-width: 736px){form>.fields{width:calc(100% + 3em);margin:-1.5em 0 2em -1.5em}form>.fields>.field{padding:1.5em 0 0 1.5em;width:calc(100% - 1.5em)}form>.fields>.field.half{width:calc(100% - 1.5em)}form>.fields>.field.third{width:calc(100% - 1.5em)}form>.fields>.field.quarter{width:calc(100% - 1.5em)}}label{color:#fff;display:block;font-size:.9em;font-weight:300;margin:0 0 1em 0}input[type=text],input[type=password],input[type=email],input[type=tel],input[type=search],input[type=url],select,textarea{-moz-appearance:none;-webkit-appearance:none;-ms-appearance:none;appearance:none;background:#34363b;border:0;border-radius:0;color:#a0a0a1;display:block;outline:0;padding:0 1em;text-decoration:none;width:100%}input[type=text]:invalid,input[type=password]:invalid,input[type=email]:invalid,input[type=tel]:invalid,input[type=search]:invalid,input[type=url]:invalid,select:invalid,textarea:invalid{box-shadow:none}input[type=text]:focus,input[type=password]:focus,input[type=email]:focus,input[type=tel]:focus,input[type=search]:focus,input[type=url]:focus,select:focus,textarea:focus{box-shadow:inset 0 0 0 2px #34a58e}select{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='%2336383c' /%3E%3C/svg%3E");background-size:1.25rem;background-repeat:no-repeat;background-position:calc(100% - 1rem) center;height:2.75em;padding-right:2.75em;text-overflow:ellipsis}select option{color:#fff;background:#242629}select:focus::-ms-value{background-color:rgba(0,0,0,0)}select::-ms-expand{display:none}input[type=text],input[type=password],input[type=email],input[type=tel],input[type=search],input[type=url],select{height:2.75em}textarea{padding:.75em 1em}input[type=checkbox],input[type=radio]{-moz-appearance:none;-webkit-appearance:none;-ms-appearance:none;appearance:none;display:block;float:left;margin-right:-2em;opacity:0;width:1em;z-index:-1}input[type=checkbox]+label,input[type=radio]+label{text-decoration:none;color:#a0a0a1;cursor:pointer;display:inline-block;font-size:1em;font-weight:300;padding-left:2.4em;padding-right:.75em;position:relative}input[type=checkbox]+label:before,input[type=radio]+label:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;text-transform:none !important;font-family:"Font Awesome 5 Free";font-weight:900}input[type=checkbox]+label:before,input[type=radio]+label:before{background:#34363b;content:"";display:inline-block;font-size:.8em;height:2.0625em;left:0;line-height:2.0625em;position:absolute;text-align:center;top:0;width:2.0625em}input[type=checkbox]:checked+label:before,input[type=radio]:checked+label:before{background:#34a58e;border-color:#34a58e;color:#fff;content:""}input[type=checkbox]:focus+label:before,input[type=radio]:focus+label:before{box-shadow:0 0 0 2px #34a58e}input[type=radio]+label:before{border-radius:100%}::-webkit-input-placeholder{color:#707071 !important;opacity:1}:-moz-placeholder{color:#707071 !important;opacity:1}::-moz-placeholder{color:#707071 !important;opacity:1}:-ms-input-placeholder{color:#707071 !important;opacity:1}.icon{text-decoration:none;border-bottom:none;position:relative}.icon:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;text-transform:none !important;font-family:"Font Awesome 5 Free";font-weight:400}.icon>.label{display:none}.icon:before{line-height:inherit}.icon.solid:before{font-weight:900}.icon.brands:before{font-family:"Font Awesome 5 Brands"}ol{list-style:decimal;margin:0 0 2em 0;padding-left:1.25em}ol li{padding-left:.25em}ul{list-style:disc;margin:0 0 2em 0;padding-left:1em}ul li{padding-left:.5em}ul.alt{list-style:none;padding-left:0}ul.alt li{border-top:solid 1px #36383c;padding:.5em 0}ul.alt li:first-child{border-top:0;padding-top:0}dl{margin:0 0 2em 0}dl dt{display:block;font-weight:300;margin:0 0 1em 0}dl dd{margin-left:2em}ul.actions{display:-moz-flex;display:-webkit-flex;display:-ms-flex;display:flex;cursor:default;list-style:none;margin-left:-1em;padding-left:0}ul.actions li{padding:0 0 0 1em;vertical-align:middle}ul.actions.special{-moz-justify-content:center;-webkit-justify-content:center;-ms-justify-content:center;justify-content:center;width:100%;margin-left:0}ul.actions.special li:first-child{padding-left:0}ul.actions.stacked{-moz-flex-direction:column;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-left:0}ul.actions.stacked li{padding:1.3em 0 0 0}ul.actions.stacked li:first-child{padding-top:0}ul.actions.fit{width:calc(100% + 1em)}ul.actions.fit li{-moz-flex-grow:1;-webkit-flex-grow:1;-ms-flex-grow:1;flex-grow:1;-moz-flex-shrink:1;-webkit-flex-shrink:1;-ms-flex-shrink:1;flex-shrink:1;width:100%}ul.actions.fit li>*{width:100%}ul.actions.fit.stacked{width:100%}@media screen and (max-width: 480px){ul.actions:not(.fixed){-moz-flex-direction:column;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-left:0;width:100% !important}ul.actions:not(.fixed) li{-moz-flex-grow:1;-webkit-flex-grow:1;-ms-flex-grow:1;flex-grow:1;-moz-flex-shrink:1;-webkit-flex-shrink:1;-ms-flex-shrink:1;flex-shrink:1;padding:1em 0 0 0;text-align:center;width:100%}ul.actions:not(.fixed) li>*{width:100%}ul.actions:not(.fixed) li:first-child{padding-top:0}ul.actions:not(.fixed) li input[type=submit],ul.actions:not(.fixed) li input[type=reset],ul.actions:not(.fixed) li input[type=button],ul.actions:not(.fixed) li button,ul.actions:not(.fixed) li .button{width:100%}ul.actions:not(.fixed) li input[type=submit].icon:before,ul.actions:not(.fixed) li input[type=reset].icon:before,ul.actions:not(.fixed) li input[type=button].icon:before,ul.actions:not(.fixed) li button.icon:before,ul.actions:not(.fixed) li .button.icon:before{margin-left:-0.5rem}}ul.icons{cursor:default;list-style:none;padding-left:0}ul.icons li{display:inline-block;padding:0 1em 0 0}ul.icons li:last-child{padding-right:0}ul.icons li .icon{color:#505051}ul.icons li .icon:before{font-size:1.5em}.table-wrapper{-webkit-overflow-scrolling:touch;overflow-x:auto}table{margin:0 0 2em 0;width:100%}table tbody tr{border:solid 1px #36383c;border-left:0;border-right:0}table tbody tr:nth-child(2n+1){background-color:#34363b}table td{padding:.75em .75em}table th{color:#fff;font-size:.9em;font-weight:300;padding:0 .75em .75em .75em;text-align:left}table thead{border-bottom:solid 2px #36383c}table tfoot{border-top:solid 2px #36383c}table.alt{border-collapse:separate}table.alt tbody tr td{border:solid 1px #36383c;border-left-width:0;border-top-width:0}table.alt tbody tr td:first-child{border-left-width:1px}table.alt tbody tr:first-child td{border-top-width:1px}table.alt thead{border-bottom:0}table.alt tfoot{border-top:0}.panel{padding:4em 4em 2em 4em;-moz-transform:translateY(100vh);-webkit-transform:translateY(100vh);-ms-transform:translateY(100vh);transform:translateY(100vh);-moz-transition:-moz-transform 0.5s ease;-webkit-transition:-webkit-transform 0.5s ease;-ms-transition:-ms-transform 0.5s ease;transition:transform 0.5s ease;-webkit-overflow-scrolling:touch;background:rgba(36,38,41,.975);bottom:4em;left:0;max-height:calc(80vh - 4em);overflow-y:auto;position:fixed;width:100%;z-index:10001}.panel.active{-moz-transform:translateY(1px);-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px)}.panel>.inner{margin:0 auto;max-width:100%;width:75em}.panel>.inner.split{display:-moz-flex;display:-webkit-flex;display:-ms-flex;display:flex}.panel>.inner.split>div{margin-left:4em;width:50%}.panel>.inner.split>:first-child{margin-left:0}.panel>.closer{-moz-transition:opacity 0.2s ease-in-out;-webkit-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;background-image:url("images/close.svg");background-position:center;background-repeat:no-repeat;background-size:3em;cursor:pointer;height:5em;opacity:.25;position:absolute;right:0;top:0;width:5em;z-index:2}.panel>.closer:hover{opacity:1}@media screen and (max-width: 1280px){.panel{padding:3em 3em 1em 3em}.panel>.inner.split>div{margin-left:3em}.panel>.closer{background-size:2.5em;background-position:75% 25%}}@media screen and (max-width: 980px){.panel>.inner.split{-moz-flex-direction:column;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.panel>.inner.split>div{margin-left:0;width:100%}}@media screen and (max-width: 736px){.panel{-moz-transform:translateY(-100vh);-webkit-transform:translateY(-100vh);-ms-transform:translateY(-100vh);transform:translateY(-100vh);padding:4em 2em 2em 2em;bottom:auto;top:calc(4em - 1px)}.panel.active{-moz-transform:translateY(0);-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.poptrox-overlay{-webkit-tap-highlight-color:rgba(255,255,255,0)}.poptrox-popup{background:rgba(31,34,36,.925);box-shadow:0 1em 3em .5em rgba(0,0,0,.25);cursor:default}.poptrox-popup:before{-moz-transition:opacity 0.2s ease-in-out;-webkit-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;background-image:-moz-linear-gradient(to left, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0)), -moz-linear-gradient(to right, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0));background-image:-webkit-linear-gradient(to left, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0)), -webkit-linear-gradient(to right, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0));background-image:-ms-linear-gradient(to left, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0)), -ms-linear-gradient(to right, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0));background-image:linear-gradient(to left, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0)), linear-gradient(to right, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0));content:"";display:block;height:100%;left:0;position:absolute;top:0;width:100%;z-index:1;opacity:1}.poptrox-popup .closer{-moz-transition:opacity 0.2s ease-in-out;-webkit-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;background-image:url("images/close.svg");background-position:center;background-repeat:no-repeat;background-size:3em;height:5em;opacity:0;position:absolute;right:0;top:0;width:5em;z-index:2}.poptrox-popup .nav-previous,.poptrox-popup .nav-next{-moz-transition:opacity 0.2s ease-in-out;-webkit-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;background-image:url("images/arrow.svg");background-position:center;background-repeat:no-repeat;background-size:5em;cursor:pointer;height:8em;margin-top:-4em;opacity:0;position:absolute;top:50%;width:6em;z-index:2}.poptrox-popup .nav-previous{-moz-transform:scaleX(-1);-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1);left:0}.poptrox-popup .nav-next{right:0}.poptrox-popup .caption{padding:2em 2em .1em 2em;background:rgba(246,240,228,.95);bottom:0;cursor:default;left:0;position:absolute;text-align:left;width:100%;z-index:2}.poptrox-popup .caption h2,.poptrox-popup .caption h3,.poptrox-popup .caption h4,.poptrox-popup .caption h5,.poptrox-popup .caption h6{margin:0 0 .5em 0;color:#4a4a4a !important}.poptrox-popup .caption p,.poptrox-popup .caption span,.poptrox-popup .caption i,.poptrox-popup .caption strong,.poptrox-popup .caption em{color:#5c554e !important}.poptrox-popup .loader{-moz-animation:spinner 1s infinite linear !important;-webkit-animation:spinner 1s infinite linear !important;-ms-animation:spinner 1s infinite linear !important;animation:spinner 1s infinite linear !important;background-image:url("images/spinner.svg");background-position:center;background-repeat:no-repeat;background-size:contain;display:block;font-size:2em;height:2em;left:50%;line-height:2em;margin:-1em 0 0 -1em;opacity:.25;position:absolute;text-align:center;top:50%;width:2em}.poptrox-popup:hover .closer,.poptrox-popup:hover .nav-previous,.poptrox-popup:hover .nav-next{opacity:.5}.poptrox-popup:hover .closer:hover,.poptrox-popup:hover .nav-previous:hover,.poptrox-popup:hover .nav-next:hover{opacity:1}.poptrox-popup.loading:before{opacity:0}body.touch .poptrox-popup .closer,body.touch .poptrox-popup .nav-previous,body.touch .poptrox-popup .nav-next{opacity:1 !important}@media screen and (max-width: 980px){.poptrox-popup .closer{background-size:3em}.poptrox-popup .nav-previous,.poptrox-popup .nav-next{background-size:4em}}@media screen and (max-width: 736px){.poptrox-popup:before{display:none}.poptrox-popup .caption{display:none !important}.poptrox-popup .closer,.poptrox-popup .nav-previous,.poptrox-popup .nav-next{display:none !important}}#wrapper{-moz-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -moz-filter 0.5s ease;-webkit-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -webkit-filter 0.5s ease;-ms-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -ms-filter 0.5s ease;transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, filter 0.5s ease;position:relative}#wrapper:after{pointer-events:none;-moz-transition:opacity 0.5s ease, visibility 0.5s;-webkit-transition:opacity 0.5s ease, visibility 0.5s;-ms-transition:opacity 0.5s ease, visibility 0.5s;transition:opacity 0.5s ease, visibility 0.5s;background:rgba(36,38,41,.5);content:"";display:block;height:100%;left:0;opacity:0;position:absolute;top:0;visibility:hidden;width:100%;z-index:1}body.ie #wrapper:after{background:rgba(36,38,41,.8)}body.modal-active #wrapper{-moz-filter:blur(8px);-webkit-filter:blur(8px);-ms-filter:blur(8px);filter:blur(8px)}body.modal-active #wrapper:after{pointer-events:auto;opacity:1;visibility:visible;z-index:10003}#wrapper:before{-moz-animation:spinner 1s infinite linear !important;-webkit-animation:spinner 1s infinite linear !important;-ms-animation:spinner 1s infinite linear !important;animation:spinner 1s infinite linear !important;pointer-events:none;-moz-transition:top 0.75s ease-in-out, opacity 0.35s ease-out, visibility 0.35s;-webkit-transition:top 0.75s ease-in-out, opacity 0.35s ease-out, visibility 0.35s;-ms-transition:top 0.75s ease-in-out, opacity 0.35s ease-out, visibility 0.35s;transition:top 0.75s ease-in-out, opacity 0.35s ease-out, visibility 0.35s;background-image:url("images/spinner.svg");background-position:center;background-repeat:no-repeat;background-size:contain;content:"";display:block;font-size:2em;height:2em;left:50%;line-height:2em;margin:-1em 0 0 -1em;opacity:0;position:fixed;text-align:center;top:75%;visibility:hidden;width:2em}body.is-preload #wrapper:before{-moz-transition:opacity 1s ease-out !important;-webkit-transition:opacity 1s ease-out !important;-ms-transition:opacity 1s ease-out !important;transition:opacity 1s ease-out !important;-moz-transition-delay:0.5s !important;-webkit-transition-delay:0.5s !important;-ms-transition-delay:0.5s !important;transition-delay:0.5s !important;opacity:.25;top:50%;visibility:visible}body{padding:0 0 4em 0}#header{-moz-transform:translateY(0);-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-moz-transition:-moz-transform 1s ease;-webkit-transition:-webkit-transform 1s ease;-ms-transition:-ms-transform 1s ease;transition:transform 1s ease;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background:#1f2224;bottom:-1em;height:5em;left:0;line-height:4em;padding:0 1.5em;position:fixed;user-select:none;width:100%;z-index:10002}body.is-preload #header{-moz-transform:translateY(4em);-webkit-transform:translateY(4em);-ms-transform:translateY(4em);transform:translateY(4em)}#header h1{color:#a0a0a1;display:inline-block;font-size:1em;line-height:1;margin:0;vertical-align:middle}#header h1 a{border:0;color:inherit}#header h1 a:hover{color:inherit !important}#header nav{position:absolute;right:0;top:0}#header nav>ul{list-style:none;margin:0;padding:0}#header nav>ul>li{display:inline-block;padding:0}#header nav>ul>li a{-moz-transition:background-color 0.5s ease;-webkit-transition:background-color 0.5s ease;-ms-transition:background-color 0.5s ease;transition:background-color 0.5s ease;border:0;color:#fff;display:inline-block;letter-spacing:.1em;padding:0 1.65em;text-transform:uppercase}#header nav>ul>li a.icon:before{color:#505051;float:right;margin-left:.75em}#header nav>ul>li a:hover{color:#fff !important}#header nav>ul>li a.active{background-color:#242629}@media screen and (max-width: 736px){body{padding:4em 0 0 0}#header{-moz-transform:translateY(0);-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);bottom:auto;height:4em;padding:0 1em;top:0}body.is-preload #header{-moz-transform:translateY(-3.4em);-webkit-transform:translateY(-3.4em);-ms-transform:translateY(-3.4em);transform:translateY(-3.4em)}#header h1{font-size:.9em}#header nav>ul>li a{font-size:.9em;padding:0 1.15em}}#main{-moz-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -moz-filter 0.5s ease;-webkit-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -webkit-filter 0.5s ease;-ms-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -ms-filter 0.5s ease;transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, filter 0.5s ease;display:-moz-flex;display:-webkit-flex;display:-ms-flex;display:flex;-moz-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-tap-highlight-color:rgba(255,255,255,0)}#main .thumb{-moz-transition:opacity 1.25s ease-in-out;-webkit-transition:opacity 1.25s ease-in-out;-ms-transition:opacity 1.25s ease-in-out;transition:opacity 1.25s ease-in-out;pointer-events:auto;-webkit-tap-highlight-color:rgba(255,255,255,0);opacity:1;overflow:hidden;position:relative}#main .thumb:after{background-image:-moz-linear-gradient(to top, rgba(10,17,25,0.35) 5%, rgba(10,17,25,0) 35%);background-image:-webkit-linear-gradient(to top, rgba(10,17,25,0.35) 5%, rgba(10,17,25,0) 35%);background-image:-ms-linear-gradient(to top, rgba(10,17,25,0.35) 5%, rgba(10,17,25,0) 35%);background-image:linear-gradient(to top, rgba(10,17,25,0.35) 5%, rgba(10,17,25,0) 35%);pointer-events:none;background-size:cover;content:"";display:block;height:100%;left:0;position:absolute;top:0;width:100%}#main .thumb>.image{-webkit-tap-highlight-color:rgba(255,255,255,0);background-position:center;background-repeat:no-repeat;background-size:cover;border:0;height:100%;left:0;position:absolute;top:0;width:100%}#main .thumb>h2{pointer-events:none;bottom:1.875em;font-size:.8em;left:2.1875em;margin:0;position:absolute;z-index:1}#main .thumb>p{display:none}#main:after{pointer-events:none;-moz-transition:opacity 0.5s ease, visibility 0.5s;-webkit-transition:opacity 0.5s ease, visibility 0.5s;-ms-transition:opacity 0.5s ease, visibility 0.5s;transition:opacity 0.5s ease, visibility 0.5s;background:rgba(36,38,41,.25);content:"";display:block;height:100%;left:0;opacity:0;position:absolute;top:0;visibility:hidden;width:100%;z-index:1}body.ie #main:after{background:rgba(36,38,41,.55)}body.content-active #main{-moz-filter:blur(6px);-webkit-filter:blur(6px);-ms-filter:blur(6px);filter:blur(6px)}body.content-active #main:after{pointer-events:auto;opacity:1;visibility:visible}body.is-preload #main .thumb{pointer-events:none;opacity:0}#main .thumb{-moz-transition-delay:2.525s;-webkit-transition-delay:2.525s;-ms-transition-delay:2.525s;transition-delay:2.525s;height:calc(40vh - 2em);min-height:20em;width:25%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}#main .thumb:nth-child(4){-moz-transition-delay:1.1s;-webkit-transition-delay:1.1s;-ms-transition-delay:1.1s;transition-delay:1.1s}#main .thumb:nth-child(5){-moz-transition-delay:1.25s;-webkit-transition-delay:1.25s;-ms-transition-delay:1.25s;transition-delay:1.25s}#main .thumb:nth-child(6){-moz-transition-delay:1.4s;-webkit-transition-delay:1.4s;-ms-transition-delay:1.4s;transition-delay:1.4s}#main .thumb:nth-child(7){-moz-transition-delay:1.55s;-webkit-transition-delay:1.55s;-ms-transition-delay:1.55s;transition-delay:1.55s}#main .thumb:nth-child(8){-moz-transition-delay:1.7s;-webkit-transition-delay:1.7s;-ms-transition-delay:1.7s;transition-delay:1.7s}#main .thumb:nth-child(9){-moz-transition-delay:1.85s;-webkit-transition-delay:1.85s;-ms-transition-delay:1.85s;transition-delay:1.85s}#main .thumb:nth-child(10){-moz-transition-delay:2s;-webkit-transition-delay:2s;-ms-transition-delay:2s;transition-delay:2s}#main .thumb:nth-child(11){-moz-transition-delay:2.15s;-webkit-transition-delay:2.15s;-ms-transition-delay:2.15s;transition-delay:2.15s}#main .thumb:nth-child(12){-moz-transition-delay:2.3s;-webkit-transition-delay:2.3s;-ms-transition-delay:2.3s;transition-delay:2.3s}@media screen and (max-width: 1680px){#main .thumb{-moz-transition-delay:2.075s;-webkit-transition-delay:2.075s;-ms-transition-delay:2.075s;transition-delay:2.075s;height:calc(40vh - 2em);min-height:20em;width:33.3333333333%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}#main .thumb:nth-child(4){-moz-transition-delay:1.1s;-webkit-transition-delay:1.1s;-ms-transition-delay:1.1s;transition-delay:1.1s}#main .thumb:nth-child(5){-moz-transition-delay:1.25s;-webkit-transition-delay:1.25s;-ms-transition-delay:1.25s;transition-delay:1.25s}#main .thumb:nth-child(6){-moz-transition-delay:1.4s;-webkit-transition-delay:1.4s;-ms-transition-delay:1.4s;transition-delay:1.4s}#main .thumb:nth-child(7){-moz-transition-delay:1.55s;-webkit-transition-delay:1.55s;-ms-transition-delay:1.55s;transition-delay:1.55s}#main .thumb:nth-child(8){-moz-transition-delay:1.7s;-webkit-transition-delay:1.7s;-ms-transition-delay:1.7s;transition-delay:1.7s}#main .thumb:nth-child(9){-moz-transition-delay:1.85s;-webkit-transition-delay:1.85s;-ms-transition-delay:1.85s;transition-delay:1.85s}}@media screen and (max-width: 1280px){#main .thumb{-moz-transition-delay:1.625s;-webkit-transition-delay:1.625s;-ms-transition-delay:1.625s;transition-delay:1.625s;height:calc(40vh - 2em);min-height:20em;width:50%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}#main .thumb:nth-child(4){-moz-transition-delay:1.1s;-webkit-transition-delay:1.1s;-ms-transition-delay:1.1s;transition-delay:1.1s}#main .thumb:nth-child(5){-moz-transition-delay:1.25s;-webkit-transition-delay:1.25s;-ms-transition-delay:1.25s;transition-delay:1.25s}#main .thumb:nth-child(6){-moz-transition-delay:1.4s;-webkit-transition-delay:1.4s;-ms-transition-delay:1.4s;transition-delay:1.4s}}@media screen and (max-width: 980px){#main .thumb{-moz-transition-delay:2.075s;-webkit-transition-delay:2.075s;-ms-transition-delay:2.075s;transition-delay:2.075s;height:calc(28.5714285714vh - 1.3333333333em);min-height:18em;width:50%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}#main .thumb:nth-child(4){-moz-transition-delay:1.1s;-webkit-transition-delay:1.1s;-ms-transition-delay:1.1s;transition-delay:1.1s}#main .thumb:nth-child(5){-moz-transition-delay:1.25s;-webkit-transition-delay:1.25s;-ms-transition-delay:1.25s;transition-delay:1.25s}#main .thumb:nth-child(6){-moz-transition-delay:1.4s;-webkit-transition-delay:1.4s;-ms-transition-delay:1.4s;transition-delay:1.4s}#main .thumb:nth-child(7){-moz-transition-delay:1.55s;-webkit-transition-delay:1.55s;-ms-transition-delay:1.55s;transition-delay:1.55s}#main .thumb:nth-child(8){-moz-transition-delay:1.7s;-webkit-transition-delay:1.7s;-ms-transition-delay:1.7s;transition-delay:1.7s}#main .thumb:nth-child(9){-moz-transition-delay:1.85s;-webkit-transition-delay:1.85s;-ms-transition-delay:1.85s;transition-delay:1.85s}}@media screen and (max-width: 480px){#main .thumb{-moz-transition-delay:1.175s;-webkit-transition-delay:1.175s;-ms-transition-delay:1.175s;transition-delay:1.175s;height:calc(40vh - 2em);min-height:18em;width:100%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}}#footer .copyright{color:#505051;font-size:.9em}#footer .copyright a{color:inherit}.text-fg{color:#a0a0a1}#footer .presentify{margin:0 0 1.4em 0;display:grid;grid-template-columns:auto 1fr;column-gap:1rem;align-items:center}#footer .presentify .presentify-logo{display:flex;align-items:center;justify-content:center}#footer .presentify .presentify-logo a{display:flex;align-items:center;justify-content:center;border:0}#footer .presentify .presentify-logo img{width:72px;height:72px;display:block}#footer .presentify .presentify-text{margin:0} \ No newline at end of file +@-moz-keyframes spinner{0%{-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes spinner{0%{-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@-ms-keyframes spinner{0%{-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spinner{0%{-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(359deg);-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}body{-webkit-text-size-adjust:none}mark{background-color:rgba(0,0,0,0);color:inherit}input::-moz-focus-inner{border:0;padding:0}input,select,textarea{-moz-appearance:none;-webkit-appearance:none;-ms-appearance:none;appearance:none}@-ms-viewport{width:device-width}body{-ms-overflow-style:scrollbar}@media screen and (max-width: 480px){html,body{min-width:320px}}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}body{background:#242629}body.is-preload *,body.is-preload *:before,body.is-preload *:after{-moz-animation:none !important;-webkit-animation:none !important;-ms-animation:none !important;animation:none !important;-moz-transition:none !important;-webkit-transition:none !important;-ms-transition:none !important;transition:none !important}body.is-resizing *,body.is-resizing *:before,body.is-resizing *:after{-moz-animation:none !important;-webkit-animation:none !important;-ms-animation:none !important;animation:none !important;-moz-transition:none !important;-webkit-transition:none !important;-ms-transition:none !important;transition:none !important}body,input,select,textarea{color:#a0a0a1;font-family:"Source Sans Pro",Helvetica,sans-serif;font-size:15pt;font-weight:300;letter-spacing:.025em;line-height:1.65}@media screen and (max-width: 1680px){body,input,select,textarea{font-size:11pt}}a{-moz-transition:color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out;-webkit-transition:color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out;-ms-transition:color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out;transition:color 0.2s ease-in-out, border-bottom-color 0.2s ease-in-out;border-bottom:dotted 1px;color:#34a58e;text-decoration:none}a:hover{border-bottom-color:rgba(0,0,0,0);color:#34a58e !important}strong,b{color:#fff;font-weight:300}em,i{font-style:italic}p{margin:0 0 2em 0}h1,h2,h3,h4,h5,h6{color:#fff;font-weight:300;letter-spacing:.1em;line-height:1.5;margin:0 0 1em 0;text-transform:uppercase}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit;text-decoration:none}h1{font-size:2em}h2{font-size:1.25em}h3{font-size:1.1em}h4{font-size:1em}h5{font-size:.9em}h6{font-size:.7em}@media screen and (max-width: 736px){h2{font-size:1em}h3{font-size:.9em}h4{font-size:.8em}h5{font-size:.7em}h6{font-size:.7em}}sub{font-size:.8em;position:relative;top:.5em}sup{font-size:.8em;position:relative;top:-0.5em}blockquote{border-left:4px #36383c;font-style:italic;margin:0 0 2em 0;padding:.5em 0 .5em 2em}code{background:#34363b;border:solid 1px #36383c;font-family:"Courier New",monospace;font-size:.9em;margin:0 .25em;padding:.25em .65em}pre{-webkit-overflow-scrolling:touch;font-family:"Courier New",monospace;font-size:.9em;margin:0 0 2em 0}pre code{display:block;line-height:1.75;padding:1em 1.5em;overflow-x:auto}hr{border:0;border-bottom:solid 1px #36383c;margin:2em 0}hr.major{margin:3em 0}.align-left{text-align:left}.align-center{text-align:center}.align-right{text-align:right}input[type=submit],input[type=reset],input[type=button],button,.button{-moz-appearance:none;-webkit-appearance:none;-ms-appearance:none;appearance:none;-moz-transition:background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, color 0.2s ease-in-out;-webkit-transition:background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, color 0.2s ease-in-out;-ms-transition:background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, color 0.2s ease-in-out;transition:background-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out, color 0.2s ease-in-out;background-color:rgba(0,0,0,0);border:0;border-radius:0;box-shadow:inset 0 0 0 2px #36383c;color:#fff !important;cursor:pointer;display:inline-block;font-size:.9em;font-weight:300;height:3.0555555556em;letter-spacing:.1em;line-height:3.0555555556em;padding:0 2.5em;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}input[type=submit]:hover,input[type=reset]:hover,input[type=button]:hover,button:hover,.button:hover{box-shadow:inset 0 0 0 2px #34a58e;color:#34a58e !important}input[type=submit]:hover:active,input[type=reset]:hover:active,input[type=button]:hover:active,button:hover:active,.button:hover:active{background-color:rgba(52,165,142,.15);color:#34a58e !important}input[type=submit].icon,input[type=reset].icon,input[type=button].icon,button.icon,.button.icon{padding-left:1.35em}input[type=submit].icon:before,input[type=reset].icon:before,input[type=button].icon:before,button.icon:before,.button.icon:before{margin-right:.5em}input[type=submit].fit,input[type=reset].fit,input[type=button].fit,button.fit,.button.fit{width:100%}input[type=submit].small,input[type=reset].small,input[type=button].small,button.small,.button.small{font-size:.8em}input[type=submit].large,input[type=reset].large,input[type=button].large,button.large,.button.large{font-size:1.35em}input[type=submit].primary,input[type=reset].primary,input[type=button].primary,button.primary,.button.primary{background-color:#34a58e;box-shadow:none}input[type=submit].primary:hover,input[type=reset].primary:hover,input[type=button].primary:hover,button.primary:hover,.button.primary:hover{background-color:#47c5ab;color:#fff !important}input[type=submit].primary:hover:active,input[type=reset].primary:hover:active,input[type=button].primary:hover:active,button.primary:hover:active,.button.primary:hover:active{background-color:#287e6d}input[type=submit].disabled,input[type=submit]:disabled,input[type=reset].disabled,input[type=reset]:disabled,input[type=button].disabled,input[type=button]:disabled,button.disabled,button:disabled,.button.disabled,.button:disabled{pointer-events:none;opacity:.35}form{margin:0 0 2em 0}form>:last-child{margin-bottom:0}form>.fields{display:-moz-flex;display:-webkit-flex;display:-ms-flex;display:flex;-moz-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:calc(100% + 3em);margin:-1.5em 0 2em -1.5em}form>.fields>.field{-moz-flex-grow:0;-webkit-flex-grow:0;-ms-flex-grow:0;flex-grow:0;-moz-flex-shrink:0;-webkit-flex-shrink:0;-ms-flex-shrink:0;flex-shrink:0;padding:1.5em 0 0 1.5em;width:calc(100% - 1.5em)}form>.fields>.field.half{width:calc(50% - 0.75em)}form>.fields>.field.third{width:calc(100%/3 - 0.5em)}form>.fields>.field.quarter{width:calc(25% - 0.375em)}@media screen and (max-width: 736px){form>.fields{width:calc(100% + 3em);margin:-1.5em 0 2em -1.5em}form>.fields>.field{padding:1.5em 0 0 1.5em;width:calc(100% - 1.5em)}form>.fields>.field.half{width:calc(100% - 1.5em)}form>.fields>.field.third{width:calc(100% - 1.5em)}form>.fields>.field.quarter{width:calc(100% - 1.5em)}}label{color:#fff;display:block;font-size:.9em;font-weight:300;margin:0 0 1em 0}input[type=text],input[type=password],input[type=email],input[type=tel],input[type=search],input[type=url],select,textarea{-moz-appearance:none;-webkit-appearance:none;-ms-appearance:none;appearance:none;background:#34363b;border:0;border-radius:0;color:#a0a0a1;display:block;outline:0;padding:0 1em;text-decoration:none;width:100%}input[type=text]:invalid,input[type=password]:invalid,input[type=email]:invalid,input[type=tel]:invalid,input[type=search]:invalid,input[type=url]:invalid,select:invalid,textarea:invalid{box-shadow:none}input[type=text]:focus,input[type=password]:focus,input[type=email]:focus,input[type=tel]:focus,input[type=search]:focus,input[type=url]:focus,select:focus,textarea:focus{box-shadow:inset 0 0 0 2px #34a58e}select{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='%2336383c' /%3E%3C/svg%3E");background-size:1.25rem;background-repeat:no-repeat;background-position:calc(100% - 1rem) center;height:2.75em;padding-right:2.75em;text-overflow:ellipsis}select option{color:#fff;background:#242629}select:focus::-ms-value{background-color:rgba(0,0,0,0)}select::-ms-expand{display:none}input[type=text],input[type=password],input[type=email],input[type=tel],input[type=search],input[type=url],select{height:2.75em}textarea{padding:.75em 1em}input[type=checkbox],input[type=radio]{-moz-appearance:none;-webkit-appearance:none;-ms-appearance:none;appearance:none;display:block;float:left;margin-right:-2em;opacity:0;width:1em;z-index:-1}input[type=checkbox]+label,input[type=radio]+label{text-decoration:none;color:#a0a0a1;cursor:pointer;display:inline-block;font-size:1em;font-weight:300;padding-left:2.4em;padding-right:.75em;position:relative}input[type=checkbox]+label:before,input[type=radio]+label:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;text-transform:none !important;font-family:"Font Awesome 5 Free";font-weight:900}input[type=checkbox]+label:before,input[type=radio]+label:before{background:#34363b;content:"";display:inline-block;font-size:.8em;height:2.0625em;left:0;line-height:2.0625em;position:absolute;text-align:center;top:0;width:2.0625em}input[type=checkbox]:checked+label:before,input[type=radio]:checked+label:before{background:#34a58e;border-color:#34a58e;color:#fff;content:""}input[type=checkbox]:focus+label:before,input[type=radio]:focus+label:before{box-shadow:0 0 0 2px #34a58e}input[type=radio]+label:before{border-radius:100%}::-webkit-input-placeholder{color:#707071 !important;opacity:1}:-moz-placeholder{color:#707071 !important;opacity:1}::-moz-placeholder{color:#707071 !important;opacity:1}:-ms-input-placeholder{color:#707071 !important;opacity:1}.icon{text-decoration:none;border-bottom:none;position:relative}.icon:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;text-transform:none !important;font-family:"Font Awesome 5 Free";font-weight:400}.icon>.label{display:none}.icon:before{line-height:inherit}.icon.solid:before{font-weight:900}.icon.brands:before{font-family:"Font Awesome 5 Brands"}ol{list-style:decimal;margin:0 0 2em 0;padding-left:1.25em}ol li{padding-left:.25em}ul{list-style:disc;margin:0 0 2em 0;padding-left:1em}ul li{padding-left:.5em}ul.alt{list-style:none;padding-left:0}ul.alt li{border-top:solid 1px #36383c;padding:.5em 0}ul.alt li:first-child{border-top:0;padding-top:0}dl{margin:0 0 2em 0}dl dt{display:block;font-weight:300;margin:0 0 1em 0}dl dd{margin-left:2em}ul.actions{display:-moz-flex;display:-webkit-flex;display:-ms-flex;display:flex;cursor:default;list-style:none;margin-left:-1em;padding-left:0}ul.actions li{padding:0 0 0 1em;vertical-align:middle}ul.actions.special{-moz-justify-content:center;-webkit-justify-content:center;-ms-justify-content:center;justify-content:center;width:100%;margin-left:0}ul.actions.special li:first-child{padding-left:0}ul.actions.stacked{-moz-flex-direction:column;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-left:0}ul.actions.stacked li{padding:1.3em 0 0 0}ul.actions.stacked li:first-child{padding-top:0}ul.actions.fit{width:calc(100% + 1em)}ul.actions.fit li{-moz-flex-grow:1;-webkit-flex-grow:1;-ms-flex-grow:1;flex-grow:1;-moz-flex-shrink:1;-webkit-flex-shrink:1;-ms-flex-shrink:1;flex-shrink:1;width:100%}ul.actions.fit li>*{width:100%}ul.actions.fit.stacked{width:100%}@media screen and (max-width: 480px){ul.actions:not(.fixed){-moz-flex-direction:column;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-left:0;width:100% !important}ul.actions:not(.fixed) li{-moz-flex-grow:1;-webkit-flex-grow:1;-ms-flex-grow:1;flex-grow:1;-moz-flex-shrink:1;-webkit-flex-shrink:1;-ms-flex-shrink:1;flex-shrink:1;padding:1em 0 0 0;text-align:center;width:100%}ul.actions:not(.fixed) li>*{width:100%}ul.actions:not(.fixed) li:first-child{padding-top:0}ul.actions:not(.fixed) li input[type=submit],ul.actions:not(.fixed) li input[type=reset],ul.actions:not(.fixed) li input[type=button],ul.actions:not(.fixed) li button,ul.actions:not(.fixed) li .button{width:100%}ul.actions:not(.fixed) li input[type=submit].icon:before,ul.actions:not(.fixed) li input[type=reset].icon:before,ul.actions:not(.fixed) li input[type=button].icon:before,ul.actions:not(.fixed) li button.icon:before,ul.actions:not(.fixed) li .button.icon:before{margin-left:-0.5rem}}ul.icons{cursor:default;list-style:none;padding-left:0}ul.icons li{display:inline-block;padding:0 1em 0 0}ul.icons li:last-child{padding-right:0}ul.icons li .icon{color:#505051}ul.icons li .icon:before{font-size:1.5em}.table-wrapper{-webkit-overflow-scrolling:touch;overflow-x:auto}table{margin:0 0 2em 0;width:100%}table tbody tr{border:solid 1px #36383c;border-left:0;border-right:0}table tbody tr:nth-child(2n+1){background-color:#34363b}table td{padding:.75em .75em}table th{color:#fff;font-size:.9em;font-weight:300;padding:0 .75em .75em .75em;text-align:left}table thead{border-bottom:solid 2px #36383c}table tfoot{border-top:solid 2px #36383c}table.alt{border-collapse:separate}table.alt tbody tr td{border:solid 1px #36383c;border-left-width:0;border-top-width:0}table.alt tbody tr td:first-child{border-left-width:1px}table.alt tbody tr:first-child td{border-top-width:1px}table.alt thead{border-bottom:0}table.alt tfoot{border-top:0}.panel{padding:4em 4em 2em 4em;-moz-transform:translateY(100vh);-webkit-transform:translateY(100vh);-ms-transform:translateY(100vh);transform:translateY(100vh);-moz-transition:-moz-transform 0.5s ease;-webkit-transition:-webkit-transform 0.5s ease;-ms-transition:-ms-transform 0.5s ease;transition:transform 0.5s ease;-webkit-overflow-scrolling:touch;background:rgba(36,38,41,.975);bottom:4em;left:0;max-height:calc(80vh - 4em);overflow-y:auto;position:fixed;width:100%;z-index:10001}.panel.active{-moz-transform:translateY(1px);-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px)}.panel>.inner{margin:0 auto;max-width:100%;width:75em}.panel>.inner.split{display:-moz-flex;display:-webkit-flex;display:-ms-flex;display:flex}.panel>.inner.split>div{margin-left:4em;width:50%}.panel>.inner.split>:first-child{margin-left:0}.panel>.closer{-moz-transition:opacity 0.2s ease-in-out;-webkit-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;background-image:url("images/close.svg");background-position:center;background-repeat:no-repeat;background-size:3em;cursor:pointer;height:5em;opacity:.25;position:absolute;right:0;top:0;width:5em;z-index:2}.panel>.closer:hover{opacity:1}@media screen and (max-width: 1280px){.panel{padding:3em 3em 1em 3em}.panel>.inner.split>div{margin-left:3em}.panel>.closer{background-size:2.5em;background-position:75% 25%}}@media screen and (max-width: 980px){.panel>.inner.split{-moz-flex-direction:column;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.panel>.inner.split>div{margin-left:0;width:100%}}@media screen and (max-width: 736px){.panel{-moz-transform:translateY(-100vh);-webkit-transform:translateY(-100vh);-ms-transform:translateY(-100vh);transform:translateY(-100vh);padding:4em 2em 2em 2em;bottom:auto;top:calc(4em - 1px)}.panel.active{-moz-transform:translateY(0);-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.poptrox-overlay{-webkit-tap-highlight-color:rgba(255,255,255,0)}.poptrox-popup{background:rgba(31,34,36,.925);box-shadow:0 1em 3em .5em rgba(0,0,0,.25);cursor:default}.poptrox-popup:before{-moz-transition:opacity 0.2s ease-in-out;-webkit-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;background-image:-moz-linear-gradient(to left, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0)), -moz-linear-gradient(to right, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0));background-image:-webkit-linear-gradient(to left, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0)), -webkit-linear-gradient(to right, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0));background-image:-ms-linear-gradient(to left, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0)), -ms-linear-gradient(to right, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0));background-image:linear-gradient(to left, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0)), linear-gradient(to right, rgba(31,34,36,0.35), rgba(31,34,36,0) 10em, rgba(31,34,36,0));content:"";display:block;height:100%;left:0;position:absolute;top:0;width:100%;z-index:1;opacity:1}.poptrox-popup .closer{-moz-transition:opacity 0.2s ease-in-out;-webkit-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;background-image:url("images/close.svg");background-position:center;background-repeat:no-repeat;background-size:3em;height:5em;opacity:0;position:absolute;right:0;top:0;width:5em;z-index:2}.poptrox-popup .nav-previous,.poptrox-popup .nav-next{-moz-transition:opacity 0.2s ease-in-out;-webkit-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;background-image:url("images/arrow.svg");background-position:center;background-repeat:no-repeat;background-size:5em;cursor:pointer;height:8em;margin-top:-4em;opacity:0;position:absolute;top:50%;width:6em;z-index:2}.poptrox-popup .nav-previous{-moz-transform:scaleX(-1);-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1);left:0}.poptrox-popup .nav-next{right:0}.poptrox-popup .caption{padding:2em 2em .1em 2em;background:rgba(246,240,228,.95);bottom:0;cursor:default;left:0;position:absolute;text-align:left;width:100%;z-index:2}.poptrox-popup .caption h2,.poptrox-popup .caption h3,.poptrox-popup .caption h4,.poptrox-popup .caption h5,.poptrox-popup .caption h6{margin:0 0 .5em 0;color:#4a4a4a !important}.poptrox-popup .caption p,.poptrox-popup .caption span,.poptrox-popup .caption i,.poptrox-popup .caption strong,.poptrox-popup .caption em{color:#5c554e !important}.poptrox-popup .loader{-moz-animation:spinner 1s infinite linear !important;-webkit-animation:spinner 1s infinite linear !important;-ms-animation:spinner 1s infinite linear !important;animation:spinner 1s infinite linear !important;background-image:url("images/spinner.svg");background-position:center;background-repeat:no-repeat;background-size:contain;display:block;font-size:2em;height:2em;left:50%;line-height:2em;margin:-1em 0 0 -1em;opacity:.25;position:absolute;text-align:center;top:50%;width:2em}.poptrox-popup:hover .closer,.poptrox-popup:hover .nav-previous,.poptrox-popup:hover .nav-next{opacity:.5}.poptrox-popup:hover .closer:hover,.poptrox-popup:hover .nav-previous:hover,.poptrox-popup:hover .nav-next:hover{opacity:1}.poptrox-popup.loading:before{opacity:0}body.touch .poptrox-popup .closer,body.touch .poptrox-popup .nav-previous,body.touch .poptrox-popup .nav-next{opacity:1 !important}@media screen and (max-width: 980px){.poptrox-popup .closer{background-size:3em}.poptrox-popup .nav-previous,.poptrox-popup .nav-next{background-size:4em}}@media screen and (max-width: 736px){.poptrox-popup:before{display:none}.poptrox-popup .caption{display:none !important}.poptrox-popup .closer,.poptrox-popup .nav-previous,.poptrox-popup .nav-next{display:none !important}}#wrapper{-moz-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -moz-filter 0.5s ease;-webkit-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -webkit-filter 0.5s ease;-ms-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -ms-filter 0.5s ease;transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, filter 0.5s ease;position:relative}#wrapper:after{pointer-events:none;-moz-transition:opacity 0.5s ease, visibility 0.5s;-webkit-transition:opacity 0.5s ease, visibility 0.5s;-ms-transition:opacity 0.5s ease, visibility 0.5s;transition:opacity 0.5s ease, visibility 0.5s;background:rgba(36,38,41,.5);content:"";display:block;height:100%;left:0;opacity:0;position:absolute;top:0;visibility:hidden;width:100%;z-index:1}body.ie #wrapper:after{background:rgba(36,38,41,.8)}body.modal-active #wrapper{-moz-filter:blur(8px);-webkit-filter:blur(8px);-ms-filter:blur(8px);filter:blur(8px)}body.modal-active #wrapper:after{pointer-events:auto;opacity:1;visibility:visible;z-index:10003}#wrapper:before{-moz-animation:spinner 1s infinite linear !important;-webkit-animation:spinner 1s infinite linear !important;-ms-animation:spinner 1s infinite linear !important;animation:spinner 1s infinite linear !important;pointer-events:none;-moz-transition:top 0.75s ease-in-out, opacity 0.35s ease-out, visibility 0.35s;-webkit-transition:top 0.75s ease-in-out, opacity 0.35s ease-out, visibility 0.35s;-ms-transition:top 0.75s ease-in-out, opacity 0.35s ease-out, visibility 0.35s;transition:top 0.75s ease-in-out, opacity 0.35s ease-out, visibility 0.35s;background-image:url("images/spinner.svg");background-position:center;background-repeat:no-repeat;background-size:contain;content:"";display:block;font-size:2em;height:2em;left:50%;line-height:2em;margin:-1em 0 0 -1em;opacity:0;position:fixed;text-align:center;top:75%;visibility:hidden;width:2em}body.is-preload #wrapper:before{-moz-transition:opacity 1s ease-out !important;-webkit-transition:opacity 1s ease-out !important;-ms-transition:opacity 1s ease-out !important;transition:opacity 1s ease-out !important;-moz-transition-delay:0.5s !important;-webkit-transition-delay:0.5s !important;-ms-transition-delay:0.5s !important;transition-delay:0.5s !important;opacity:.25;top:50%;visibility:visible}body{padding:0 0 4em 0}#header{-moz-transform:translateY(0);-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-moz-transition:-moz-transform 1s ease;-webkit-transition:-webkit-transform 1s ease;-ms-transition:-ms-transform 1s ease;transition:transform 1s ease;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background:#1f2224;bottom:-1em;height:5em;left:0;line-height:4em;padding:0 1.5em;position:fixed;user-select:none;width:100%;z-index:10002}body.is-preload #header{-moz-transform:translateY(4em);-webkit-transform:translateY(4em);-ms-transform:translateY(4em);transform:translateY(4em)}#header h1{color:#a0a0a1;display:inline-block;font-size:1em;line-height:1;margin:0;vertical-align:middle}#header h1 a{border:0;color:inherit}#header h1 a:hover{color:inherit !important}#header nav{position:absolute;right:0;top:0}#header nav>ul{list-style:none;margin:0;padding:0}#header nav>ul>li{display:inline-block;padding:0}#header nav>ul>li a{-moz-transition:background-color 0.5s ease;-webkit-transition:background-color 0.5s ease;-ms-transition:background-color 0.5s ease;transition:background-color 0.5s ease;border:0;color:#fff;display:inline-block;letter-spacing:.1em;padding:0 1.65em;text-transform:uppercase}#header nav>ul>li a.icon:before{color:#505051;float:right;margin-left:.75em}#header nav>ul>li a:hover{color:#fff !important}#header nav>ul>li a.active{background-color:#242629}@media screen and (max-width: 736px){body{padding:4em 0 0 0}#header{-moz-transform:translateY(0);-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);bottom:auto;height:4em;padding:0 1em;top:0}body.is-preload #header{-moz-transform:translateY(-3.4em);-webkit-transform:translateY(-3.4em);-ms-transform:translateY(-3.4em);transform:translateY(-3.4em)}#header h1{font-size:.9em}#header nav>ul>li a{font-size:.9em;padding:0 1.15em}}#main{-moz-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -moz-filter 0.5s ease;-webkit-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -webkit-filter 0.5s ease;-ms-transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, -ms-filter 0.5s ease;transition:-moz-filter 0.5s ease, -webkit-filter 0.5s ease, -ms-filter 0.5s ease, filter 0.5s ease;display:-moz-flex;display:-webkit-flex;display:-ms-flex;display:flex;-moz-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-tap-highlight-color:rgba(255,255,255,0)}#main .thumb{-moz-transition:opacity 1.25s ease-in-out;-webkit-transition:opacity 1.25s ease-in-out;-ms-transition:opacity 1.25s ease-in-out;transition:opacity 1.25s ease-in-out;pointer-events:auto;-webkit-tap-highlight-color:rgba(255,255,255,0);opacity:1;overflow:hidden;position:relative}#main .thumb:after{background-image:-moz-linear-gradient(to top, rgba(10,17,25,0.35) 5%, rgba(10,17,25,0) 35%);background-image:-webkit-linear-gradient(to top, rgba(10,17,25,0.35) 5%, rgba(10,17,25,0) 35%);background-image:-ms-linear-gradient(to top, rgba(10,17,25,0.35) 5%, rgba(10,17,25,0) 35%);background-image:linear-gradient(to top, rgba(10,17,25,0.35) 5%, rgba(10,17,25,0) 35%);pointer-events:none;background-size:cover;content:"";display:block;height:100%;left:0;position:absolute;top:0;width:100%}#main .thumb>.image{-webkit-tap-highlight-color:rgba(255,255,255,0);background-position:center;background-repeat:no-repeat;background-size:cover;border:0;height:100%;left:0;position:absolute;top:0;width:100%}#main .thumb>h2{pointer-events:none;bottom:1.875em;font-size:.8em;left:2.1875em;margin:0;position:absolute;z-index:1}#main .thumb>p{display:none}#main:after{pointer-events:none;-moz-transition:opacity 0.5s ease, visibility 0.5s;-webkit-transition:opacity 0.5s ease, visibility 0.5s;-ms-transition:opacity 0.5s ease, visibility 0.5s;transition:opacity 0.5s ease, visibility 0.5s;background:rgba(36,38,41,.25);content:"";display:block;height:100%;left:0;opacity:0;position:absolute;top:0;visibility:hidden;width:100%;z-index:1}body.ie #main:after{background:rgba(36,38,41,.55)}body.content-active #main{-moz-filter:blur(6px);-webkit-filter:blur(6px);-ms-filter:blur(6px);filter:blur(6px)}body.content-active #main:after{pointer-events:auto;opacity:1;visibility:visible}body.is-preload #main .thumb{pointer-events:none;opacity:0}#main .thumb{-moz-transition-delay:2.525s;-webkit-transition-delay:2.525s;-ms-transition-delay:2.525s;transition-delay:2.525s;height:calc(40vh - 2em);min-height:20em;width:25%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}#main .thumb:nth-child(4){-moz-transition-delay:1.1s;-webkit-transition-delay:1.1s;-ms-transition-delay:1.1s;transition-delay:1.1s}#main .thumb:nth-child(5){-moz-transition-delay:1.25s;-webkit-transition-delay:1.25s;-ms-transition-delay:1.25s;transition-delay:1.25s}#main .thumb:nth-child(6){-moz-transition-delay:1.4s;-webkit-transition-delay:1.4s;-ms-transition-delay:1.4s;transition-delay:1.4s}#main .thumb:nth-child(7){-moz-transition-delay:1.55s;-webkit-transition-delay:1.55s;-ms-transition-delay:1.55s;transition-delay:1.55s}#main .thumb:nth-child(8){-moz-transition-delay:1.7s;-webkit-transition-delay:1.7s;-ms-transition-delay:1.7s;transition-delay:1.7s}#main .thumb:nth-child(9){-moz-transition-delay:1.85s;-webkit-transition-delay:1.85s;-ms-transition-delay:1.85s;transition-delay:1.85s}#main .thumb:nth-child(10){-moz-transition-delay:2s;-webkit-transition-delay:2s;-ms-transition-delay:2s;transition-delay:2s}#main .thumb:nth-child(11){-moz-transition-delay:2.15s;-webkit-transition-delay:2.15s;-ms-transition-delay:2.15s;transition-delay:2.15s}#main .thumb:nth-child(12){-moz-transition-delay:2.3s;-webkit-transition-delay:2.3s;-ms-transition-delay:2.3s;transition-delay:2.3s}@media screen and (max-width: 1680px){#main .thumb{-moz-transition-delay:2.075s;-webkit-transition-delay:2.075s;-ms-transition-delay:2.075s;transition-delay:2.075s;height:calc(40vh - 2em);min-height:20em;width:33.3333333333%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}#main .thumb:nth-child(4){-moz-transition-delay:1.1s;-webkit-transition-delay:1.1s;-ms-transition-delay:1.1s;transition-delay:1.1s}#main .thumb:nth-child(5){-moz-transition-delay:1.25s;-webkit-transition-delay:1.25s;-ms-transition-delay:1.25s;transition-delay:1.25s}#main .thumb:nth-child(6){-moz-transition-delay:1.4s;-webkit-transition-delay:1.4s;-ms-transition-delay:1.4s;transition-delay:1.4s}#main .thumb:nth-child(7){-moz-transition-delay:1.55s;-webkit-transition-delay:1.55s;-ms-transition-delay:1.55s;transition-delay:1.55s}#main .thumb:nth-child(8){-moz-transition-delay:1.7s;-webkit-transition-delay:1.7s;-ms-transition-delay:1.7s;transition-delay:1.7s}#main .thumb:nth-child(9){-moz-transition-delay:1.85s;-webkit-transition-delay:1.85s;-ms-transition-delay:1.85s;transition-delay:1.85s}}@media screen and (max-width: 1280px){#main .thumb{-moz-transition-delay:1.625s;-webkit-transition-delay:1.625s;-ms-transition-delay:1.625s;transition-delay:1.625s;height:calc(40vh - 2em);min-height:20em;width:50%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}#main .thumb:nth-child(4){-moz-transition-delay:1.1s;-webkit-transition-delay:1.1s;-ms-transition-delay:1.1s;transition-delay:1.1s}#main .thumb:nth-child(5){-moz-transition-delay:1.25s;-webkit-transition-delay:1.25s;-ms-transition-delay:1.25s;transition-delay:1.25s}#main .thumb:nth-child(6){-moz-transition-delay:1.4s;-webkit-transition-delay:1.4s;-ms-transition-delay:1.4s;transition-delay:1.4s}}@media screen and (max-width: 980px){#main .thumb{-moz-transition-delay:2.075s;-webkit-transition-delay:2.075s;-ms-transition-delay:2.075s;transition-delay:2.075s;height:calc(28.5714285714vh - 1.3333333333em);min-height:18em;width:50%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}#main .thumb:nth-child(4){-moz-transition-delay:1.1s;-webkit-transition-delay:1.1s;-ms-transition-delay:1.1s;transition-delay:1.1s}#main .thumb:nth-child(5){-moz-transition-delay:1.25s;-webkit-transition-delay:1.25s;-ms-transition-delay:1.25s;transition-delay:1.25s}#main .thumb:nth-child(6){-moz-transition-delay:1.4s;-webkit-transition-delay:1.4s;-ms-transition-delay:1.4s;transition-delay:1.4s}#main .thumb:nth-child(7){-moz-transition-delay:1.55s;-webkit-transition-delay:1.55s;-ms-transition-delay:1.55s;transition-delay:1.55s}#main .thumb:nth-child(8){-moz-transition-delay:1.7s;-webkit-transition-delay:1.7s;-ms-transition-delay:1.7s;transition-delay:1.7s}#main .thumb:nth-child(9){-moz-transition-delay:1.85s;-webkit-transition-delay:1.85s;-ms-transition-delay:1.85s;transition-delay:1.85s}}@media screen and (max-width: 480px){#main .thumb{-moz-transition-delay:1.175s;-webkit-transition-delay:1.175s;-ms-transition-delay:1.175s;transition-delay:1.175s;height:calc(40vh - 2em);min-height:18em;width:100%}#main .thumb:nth-child(1){-moz-transition-delay:0.65s;-webkit-transition-delay:0.65s;-ms-transition-delay:0.65s;transition-delay:0.65s}#main .thumb:nth-child(2){-moz-transition-delay:0.8s;-webkit-transition-delay:0.8s;-ms-transition-delay:0.8s;transition-delay:0.8s}#main .thumb:nth-child(3){-moz-transition-delay:0.95s;-webkit-transition-delay:0.95s;-ms-transition-delay:0.95s;transition-delay:0.95s}}#footer .copyright{color:#505051;font-size:.9em}#footer .copyright a{color:inherit}.text-fg{color:#a0a0a1}#selection-toolbar{position:fixed;bottom:4em;left:0;width:100%;background:rgba(31,34,36,.95);padding:.75em 1.5em;display:flex;align-items:center;gap:1em;z-index:10003;transform:translateY(100%);transition:transform .3s ease;box-sizing:border-box}#selection-toolbar.visible{transform:translateY(0)}#selection-toolbar #sel-count{color:#fff;font-weight:400;margin-right:auto;white-space:nowrap}#selection-toolbar button{white-space:nowrap}body.selection-mode #main .thumb{cursor:pointer;position:relative}body.selection-mode #main .thumb::before{content:"";position:absolute;top:.6em;left:.6em;width:1.4em;height:1.4em;border:2px solid rgba(255,255,255,.7);border-radius:3px;background:rgba(0,0,0,.4);z-index:2;transition:all .2s ease;pointer-events:none}body.selection-mode #main .thumb.selected::before{background:#34a58e;border-color:#34a58e}body.selection-mode #main .thumb.selected .image{outline:3px solid #34a58e;outline-offset:-3px}@media screen and (max-width: 736px){#selection-toolbar{bottom:auto;top:4em;transform:translateY(-200%)}#selection-toolbar.visible{transform:translateY(0)}}#footer .presentify{margin:0 0 1.4em 0;display:grid;grid-template-columns:auto 1fr;column-gap:1rem;align-items:center}#footer .presentify .presentify-logo{display:flex;align-items:center;justify-content:center}#footer .presentify .presentify-logo a{display:flex;align-items:center;justify-content:center;border:0}#footer .presentify .presentify-logo img{width:72px;height:72px;display:block}#footer .presentify .presentify-text{margin:0} \ No newline at end of file diff --git a/assets/js/main.js b/assets/js/main.js index f1952a9..b9a3f10 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -194,6 +194,7 @@ initThumbs(); initPoptrox(); + initSelectionMode(images); }, error: function() { $main.html('

Keine Bilder gefunden. Lade Bilder in deinen Nextcloud-Ordner hoch.

'); @@ -290,6 +291,177 @@ return template; } + // ==================== SELECTION MODE ==================== + + function initSelectionMode(allImages) { + var selectedImages = []; + var selectionActive = false; + + // Toolbar erstellen (versteckt) + var $toolbar = $('
'); + $toolbar.html( + '0 ausgewaehlt' + + '' + + '' + ); + $('body').append($toolbar); + + // Selection-Toggle Button im Header + var $selectToggle = $('
  • ' + + '
  • '); + $('#header nav > ul').prepend($selectToggle); + + // Ordner-Download Buttons (nur wenn Ordner-Bilder vorhanden) + var folders = []; + allImages.forEach(function(img) { + if (img.folder && folders.indexOf(img.folder) === -1) { + folders.push(img.folder); + } + }); + if (folders.length > 0) { + folders.forEach(function(folder) { + var $folderBtn = $('
  • ' + + '
  • '); + $('#header nav > ul').prepend($folderBtn); + }); + } + + // Selection-Mode toggle + $(document).on('click', '#select-mode-toggle', function(e) { + e.preventDefault(); + e.stopPropagation(); + selectionActive = !selectionActive; + $('body').toggleClass('selection-mode', selectionActive); + if (!selectionActive) clearSelection(); + $toolbar.toggleClass('visible', selectionActive); + }); + + // Klick auf Thumbnail im Selection-Mode + $(document).on('click', '.thumb', function(e) { + if (!selectionActive) return; + e.preventDefault(); + e.stopPropagation(); + + var $thumb = $(this); + var $img = $thumb.find('img'); + var imgName = $img.data('name'); + var imgHref = $thumb.find('a.image').attr('href'); + + // Ordner aus href extrahieren + var folder = null; + var hrefPath = imgHref.replace('/images/fulls/', ''); + var parts = hrefPath.split('/'); + if (parts.length > 1) { + folder = decodeURIComponent(parts[0]); + } + + var idx = -1; + for (var i = 0; i < selectedImages.length; i++) { + if (selectedImages[i].name === imgName && selectedImages[i].folder === folder) { + idx = i; break; + } + } + + if (idx !== -1) { + selectedImages.splice(idx, 1); + $thumb.removeClass('selected'); + } else { + selectedImages.push({ name: imgName, folder: folder }); + $thumb.addClass('selected'); + } + updateToolbar(); + }); + + function updateToolbar() { + var count = selectedImages.length; + $('#sel-count').text(count + ' ausgewaehlt'); + $('#sel-download').prop('disabled', count === 0); + if (count > 3) { + $('#sel-download').html(' Als ZIP (' + count + ')'); + } else if (count > 0) { + $('#sel-download').html(' Herunterladen (' + count + ')'); + } else { + $('#sel-download').html(' Herunterladen'); + } + } + + function clearSelection() { + selectedImages = []; + $('.thumb').removeClass('selected'); + updateToolbar(); + } + + // Download-Button + $(document).on('click', '#sel-download', function() { + if (selectedImages.length === 0) return; + $.ajax({ + url: '/api/download/selected', + type: 'POST', + contentType: 'application/json', + data: JSON.stringify({ images: selectedImages }), + xhrFields: { responseType: 'blob' }, + success: function(data, status, xhr) { + var ct = xhr.getResponseHeader('Content-Type'); + if (ct && ct.indexOf('application/json') !== -1) { + var reader = new FileReader(); + reader.onload = function() { + var resp = JSON.parse(this.result); + if (resp.mode === 'individual') { + resp.urls.forEach(function(url, i) { + setTimeout(function() { + var a = document.createElement('a'); + a.href = url; + a.download = ''; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + }, i * 300); + }); + } + }; + reader.readAsText(data); + } else { + var url = window.URL.createObjectURL(data); + var a = document.createElement('a'); + a.href = url; + a.download = 'mischkomposition-auswahl.zip'; + document.body.appendChild(a); + a.click(); + window.URL.revokeObjectURL(url); + document.body.removeChild(a); + } + }, + error: function(xhr) { + alert(xhr.responseJSON ? xhr.responseJSON.error : 'Download fehlgeschlagen'); + } + }); + }); + + // Abbrechen-Button + $(document).on('click', '#sel-cancel', function() { + selectionActive = false; + $('body').removeClass('selection-mode'); + $toolbar.removeClass('visible'); + clearSelection(); + }); + + // Ordner-Download + $(document).on('click', '.folder-download-btn', function(e) { + e.preventDefault(); + e.stopPropagation(); + var folder = $(this).data('folder'); + var a = document.createElement('a'); + a.href = '/api/download/folder/' + encodeURIComponent(folder); + a.download = folder + '.zip'; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + }); + } + // Galerie laden loadGallery(); diff --git a/assets/js/main.min.js b/assets/js/main.min.js index db67895..d61adf9 100644 --- a/assets/js/main.min.js +++ b/assets/js/main.min.js @@ -1 +1 @@ -!function(e){var n,o=e(window),a=e("body");e("#wrapper");(breakpoints({xlarge:["1281px","1680px"],large:["981px","1280px"],medium:["737px","980px"],small:["481px","736px"],xsmall:[null,"480px"]}),"ie"==browser.name&&a.addClass("ie"),browser.mobile&&a.addClass("touch"),browser.canUse("transition"))&&(o.on("load",function(){window.setTimeout(function(){a.removeClass("is-preload")},100)}),o.on("resize",function(){window.clearTimeout(n),a.addClass("is-resizing"),n=window.setTimeout(function(){a.removeClass("is-resizing")},100)}));o.scrollTop(0);var t=e(".panel");t.each(function(){var n=e(this),o=e('[href="#'+n.attr("id")+'"]');e('
    ').appendTo(n).on("click",function(e){n.trigger("---hide")}),n.on("click",function(e){e.stopPropagation()}).on("---toggle",function(){n.hasClass("active")?n.triggerHandler("---hide"):n.triggerHandler("---show")}).on("---show",function(){a.hasClass("content-active")&&t.trigger("---hide"),n.addClass("active"),o.addClass("active"),a.addClass("content-active")}).on("---hide",function(){n.removeClass("active"),o.removeClass("active"),a.removeClass("content-active")}),o.removeAttr("href").css("cursor","pointer").on("click",function(e){e.preventDefault(),e.stopPropagation(),n.trigger("---toggle")})}),a.on("click",function(e){a.hasClass("content-active")&&(e.preventDefault(),e.stopPropagation(),t.trigger("---hide"))}),o.on("keyup",function(e){27==e.keyCode&&a.hasClass("content-active")&&(e.preventDefault(),e.stopPropagation(),t.trigger("---hide"))}),e("#header").find("a").each(function(){var n=e(this),o=n.attr("href");o&&"#"!=o.charAt(0)&&n.removeAttr("href").css("cursor","pointer").on("click",function(e){e.preventDefault(),e.stopPropagation(),window.location.href=o})}),e("#footer").find(".copyright").each(function(){var n=e(this),o=n.parent(),a=o.parent().children().last();breakpoints.on("<=medium",function(){n.appendTo(a)}),breakpoints.on(">medium",function(){n.appendTo(o)})});var i=e("#main"),r={},s=["jpg","jpeg","png","gif","webp"];function l(n){var o=e("#main").data("exif"),a="";for(var t in o){var i=o[t],r=EXIF.getTag(n,i.tag);void 0!==r&&(a+=' '+r+"  ")}return a}e.ajax({url:"/images/fulls/",dataType:"json",cache:!1,success:function(n){if(0!==n.length){var o=n.filter(function(e){if("file"!==e.type)return!1;var n=e.name.split(".").pop().toLowerCase();return-1!==s.indexOf(n)});0!==o.length?(o.sort(function(e,n){return e.name.localeCompare(n.name)}),o.forEach(function(n){var o=e('
    '),a=n.folder?encodeURIComponent(n.folder)+"/":"",t="/images/fulls/"+a+encodeURIComponent(n.name),r="/images/thumbs/"+a+encodeURIComponent(n.name),s=e(''),l=e('');s.append(l),o.append(s),i.append(o)}),i.children(".thumb").each(function(){var n,o=e(this),a=o.find(".image"),t=a.children("img");0!=a.length&&(a.css("background-image","url('"+t.attr("src")+"')"),(n=t.data("position"))&&a.css("background-position",n),t.hide(),t[0].addEventListener("error",function(){var e=a.attr("href");e&&a.css("background-image","url('"+e+"')")}),t[0].addEventListener("load",function(){EXIF.getData(t[0],function(){r[t.data("name")]=l(this)})}))}),i.poptrox({baseZIndex:2e4,caption:function(e){var n=e.children("img"),o=r[n.data("name")];void 0===o&&EXIF.getData(n[0],function(){o=r[n.data("name")]=l(this)});var a='
    Bild Speichern ';return void 0!==o?"

    "+o+a+"

    ":"

    "+a+"

    "},fadeSpeed:300,onPopupClose:function(){a.removeClass("modal-active")},onPopupOpen:function(){a.addClass("modal-active")},overlayOpacity:0,popupCloserText:"",popupHeight:150,popupLoaderText:"",popupSpeed:300,popupWidth:150,selector:".thumb > a.image",usePopupCaption:!0,usePopupCloser:!0,usePopupDefaultStyling:!1,usePopupForceClose:!0,usePopupLoader:!0,usePopupNav:!0,windowMargin:50}),breakpoints.on("<=xsmall",function(){i[0]._poptrox.windowMargin=0}),breakpoints.on(">xsmall",function(){i[0]._poptrox.windowMargin=50})):i.html('

    Es wurden noch keine passenden Bilder für diesen Account hochgeladen oder zugewiesen.

    ')}else i.html('

    Noch keine Bilder vorhanden.

    ')},error:function(){i.html('

    Keine Bilder gefunden. Lade Bilder in deinen Nextcloud-Ordner hoch.

    ')}});var c=localStorage.getItem("mischkomposition_theme")||"main";function p(n){"light"===n?e("#theme-toggle i").removeClass("fa-sun").addClass("fa-moon"):e("#theme-toggle i").removeClass("fa-moon").addClass("fa-sun")}p(c),e("#theme-toggle").click(function(n){n.preventDefault(),c="main"===c?"light":"main",localStorage.setItem("mischkomposition_theme",c),e("#theme-style").attr("href","assets/css/"+c+".min.css"),p(c)}),e.get("/api/auth/me").done(function(n){e("#login-username, #login-password, #login-submit").hide(),e("#logout-btn").show().css("display","inline-block"),e("#pw-change-section").show(),"admin"===n.role&&e("#admin-link").html('Admin-Dashboard'),e("#login-nav").html('Account ')}),e("#login-form").submit(function(n){n.preventDefault(),e.post("/api/auth/login",{username:e("#login-username").val(),password:e("#login-password").val()}).done(function(){window.location.reload()}).fail(function(e){var n="Login fehlgeschlagen.";e.responseJSON&&"Account abgelaufen"===e.responseJSON.error&&(n="Dein Account ist abgelaufen. Bitte kontaktiere den Administrator."),alert(n)})}),e("#logout-btn").click(function(n){n.preventDefault(),e.post("/api/auth/logout").done(function(){window.location.reload()})}),e("#pw-change-form").submit(function(n){n.preventDefault();var o=e("#pw-new").val();o===e("#pw-confirm").val()?e.post("/api/auth/change-password",{old_password:e("#pw-old").val(),new_password:o}).done(function(){alert("Passwort geaendert!"),e("#pw-old, #pw-new, #pw-confirm").val("")}).fail(function(e){alert(e.responseJSON?e.responseJSON.error:"Fehler")}):alert("Passwoerter stimmen nicht ueberein.")})}(jQuery); \ No newline at end of file +!function(e){var n,o=e(window),a=e("body");e("#wrapper");(breakpoints({xlarge:["1281px","1680px"],large:["981px","1280px"],medium:["737px","980px"],small:["481px","736px"],xsmall:[null,"480px"]}),"ie"==browser.name&&a.addClass("ie"),browser.mobile&&a.addClass("touch"),browser.canUse("transition"))&&(o.on("load",function(){window.setTimeout(function(){a.removeClass("is-preload")},100)}),o.on("resize",function(){window.clearTimeout(n),a.addClass("is-resizing"),n=window.setTimeout(function(){a.removeClass("is-resizing")},100)}));o.scrollTop(0);var t=e(".panel");t.each(function(){var n=e(this),o=e('[href="#'+n.attr("id")+'"]');e('
    ').appendTo(n).on("click",function(e){n.trigger("---hide")}),n.on("click",function(e){e.stopPropagation()}).on("---toggle",function(){n.hasClass("active")?n.triggerHandler("---hide"):n.triggerHandler("---show")}).on("---show",function(){a.hasClass("content-active")&&t.trigger("---hide"),n.addClass("active"),o.addClass("active"),a.addClass("content-active")}).on("---hide",function(){n.removeClass("active"),o.removeClass("active"),a.removeClass("content-active")}),o.removeAttr("href").css("cursor","pointer").on("click",function(e){e.preventDefault(),e.stopPropagation(),n.trigger("---toggle")})}),a.on("click",function(e){a.hasClass("content-active")&&(e.preventDefault(),e.stopPropagation(),t.trigger("---hide"))}),o.on("keyup",function(e){27==e.keyCode&&a.hasClass("content-active")&&(e.preventDefault(),e.stopPropagation(),t.trigger("---hide"))}),e("#header").find("a").each(function(){var n=e(this),o=n.attr("href");o&&"#"!=o.charAt(0)&&n.removeAttr("href").css("cursor","pointer").on("click",function(e){e.preventDefault(),e.stopPropagation(),window.location.href=o})}),e("#footer").find(".copyright").each(function(){var n=e(this),o=n.parent(),a=o.parent().children().last();breakpoints.on("<=medium",function(){n.appendTo(a)}),breakpoints.on(">medium",function(){n.appendTo(o)})});var i=e("#main"),l={},r=["jpg","jpeg","png","gif","webp"];function s(n){var o=e("#main").data("exif"),a="";for(var t in o){var i=o[t],l=EXIF.getTag(n,i.tag);void 0!==l&&(a+=' '+l+"  ")}return a}e.ajax({url:"/images/fulls/",dataType:"json",cache:!1,success:function(n){if(0!==n.length){var o=n.filter(function(e){if("file"!==e.type)return!1;var n=e.name.split(".").pop().toLowerCase();return-1!==r.indexOf(n)});0!==o.length?(o.sort(function(e,n){return e.name.localeCompare(n.name)}),o.forEach(function(n){var o=e('
    '),a=n.folder?encodeURIComponent(n.folder)+"/":"",t="/images/fulls/"+a+encodeURIComponent(n.name),l="/images/thumbs/"+a+encodeURIComponent(n.name),r=e(''),s=e('');r.append(s),o.append(r),i.append(o)}),i.children(".thumb").each(function(){var n,o=e(this),a=o.find(".image"),t=a.children("img");0!=a.length&&(a.css("background-image","url('"+t.attr("src")+"')"),(n=t.data("position"))&&a.css("background-position",n),t.hide(),t[0].addEventListener("error",function(){var e=a.attr("href");e&&a.css("background-image","url('"+e+"')")}),t[0].addEventListener("load",function(){EXIF.getData(t[0],function(){l[t.data("name")]=s(this)})}))}),i.poptrox({baseZIndex:2e4,caption:function(e){var n=e.children("img"),o=l[n.data("name")];void 0===o&&EXIF.getData(n[0],function(){o=l[n.data("name")]=s(this)});var a='
    Bild Speichern ';return void 0!==o?"

    "+o+a+"

    ":"

    "+a+"

    "},fadeSpeed:300,onPopupClose:function(){a.removeClass("modal-active")},onPopupOpen:function(){a.addClass("modal-active")},overlayOpacity:0,popupCloserText:"",popupHeight:150,popupLoaderText:"",popupSpeed:300,popupWidth:150,selector:".thumb > a.image",usePopupCaption:!0,usePopupCloser:!0,usePopupDefaultStyling:!1,usePopupForceClose:!0,usePopupLoader:!0,usePopupNav:!0,windowMargin:50}),breakpoints.on("<=xsmall",function(){i[0]._poptrox.windowMargin=0}),breakpoints.on(">xsmall",function(){i[0]._poptrox.windowMargin=50}),function(n){var o=[],a=!1,t=e('
    ');t.html('0 ausgewaehlt'),e("body").append(t);var i=e('
  • ');e("#header nav > ul").prepend(i);var l=[];function r(){var n=o.length;e("#sel-count").text(n+" ausgewaehlt"),e("#sel-download").prop("disabled",0===n),n>3?e("#sel-download").html(' Als ZIP ('+n+")"):n>0?e("#sel-download").html(' Herunterladen ('+n+")"):e("#sel-download").html(' Herunterladen')}function s(){o=[],e(".thumb").removeClass("selected"),r()}n.forEach(function(e){e.folder&&-1===l.indexOf(e.folder)&&l.push(e.folder)}),l.length>0&&l.forEach(function(n){var o=e('
  • ');e("#header nav > ul").prepend(o)}),e(document).on("click","#select-mode-toggle",function(n){n.preventDefault(),n.stopPropagation(),a=!a,e("body").toggleClass("selection-mode",a),a||s(),t.toggleClass("visible",a)}),e(document).on("click",".thumb",function(n){if(a){n.preventDefault(),n.stopPropagation();var t=e(this),i=t.find("img"),l=i.data("name"),s=t.find("a.image").attr("href"),d=null,c=s.replace("/images/fulls/",""),p=c.split("/");p.length>1&&(d=decodeURIComponent(p[0]));for(var u=-1,f=0;fEs wurden noch keine passenden Bilder für diesen Account hochgeladen oder zugewiesen.

    ')}else i.html('

    Noch keine Bilder vorhanden.

    ')},error:function(){i.html('

    Keine Bilder gefunden. Lade Bilder in deinen Nextcloud-Ordner hoch.

    ')}});var d=localStorage.getItem("mischkomposition_theme")||"main";function c(n){"light"===n?e("#theme-toggle i").removeClass("fa-sun").addClass("fa-moon"):e("#theme-toggle i").removeClass("fa-moon").addClass("fa-sun")}c(d),e("#theme-toggle").click(function(n){n.preventDefault(),d="main"===d?"light":"main",localStorage.setItem("mischkomposition_theme",d),e("#theme-style").attr("href","assets/css/"+d+".min.css"),c(d)}),e.get("/api/auth/me").done(function(n){e("#login-username, #login-password, #login-submit").hide(),e("#logout-btn").show().css("display","inline-block"),e("#pw-change-section").show(),"admin"===n.role&&e("#admin-link").html('Admin-Dashboard'),e("#login-nav").html('Account ')}),e("#login-form").submit(function(n){n.preventDefault(),e.post("/api/auth/login",{username:e("#login-username").val(),password:e("#login-password").val()}).done(function(){window.location.reload()}).fail(function(e){var n="Login fehlgeschlagen.";e.responseJSON&&"Account abgelaufen"===e.responseJSON.error&&(n="Dein Account ist abgelaufen. Bitte kontaktiere den Administrator."),alert(n)})}),e("#logout-btn").click(function(n){n.preventDefault(),e.post("/api/auth/logout").done(function(){window.location.reload()})}),e("#pw-change-form").submit(function(n){n.preventDefault();var o=e("#pw-new").val();o===e("#pw-confirm").val()?e.post("/api/auth/change-password",{old_password:e("#pw-old").val(),new_password:o}).done(function(){alert("Passwort geaendert!"),e("#pw-old, #pw-new, #pw-confirm").val("")}).fail(function(e){alert(e.responseJSON?e.responseJSON.error:"Fehler")}):alert("Passwoerter stimmen nicht ueberein.")})}(jQuery); \ No newline at end of file diff --git a/assets/sass/custom.scss b/assets/sass/custom.scss index 4834f85..3f9ff61 100644 --- a/assets/sass/custom.scss +++ b/assets/sass/custom.scss @@ -6,6 +6,85 @@ color: _palette(fg); } +/* ==================== Selection Mode ==================== */ + +#selection-toolbar { + position: fixed; + bottom: _size(header); + left: 0; + width: 100%; + background: rgba(31, 34, 36, 0.95); + padding: 0.75em 1.5em; + display: flex; + align-items: center; + gap: 1em; + z-index: _misc(z-index-base) + 3; + transform: translateY(100%); + transition: transform 0.3s ease; + box-sizing: border-box; + + &.visible { + transform: translateY(0); + } + + #sel-count { + color: _palette(fg-bold); + font-weight: _font(weight-extrabold); + margin-right: auto; + white-space: nowrap; + } + + button { + white-space: nowrap; + } +} + +body.selection-mode { + #main .thumb { + cursor: pointer; + position: relative; + + &::before { + content: ''; + position: absolute; + top: 0.6em; + left: 0.6em; + width: 1.4em; + height: 1.4em; + border: 2px solid rgba(255, 255, 255, 0.7); + border-radius: 3px; + background: rgba(0, 0, 0, 0.4); + z-index: 2; + transition: all 0.2s ease; + pointer-events: none; + } + + &.selected { + &::before { + background: _palette(accent1); + border-color: _palette(accent1); + } + + .image { + outline: 3px solid _palette(accent1); + outline-offset: -3px; + } + } + } +} + +@media screen and (max-width: 736px) { + #selection-toolbar { + bottom: auto; + top: _size(header); + transform: translateY(-200%); + + &.visible { + transform: translateY(0); + } + } +} + /* Footer */ #footer { .presentify { diff --git a/backend/server.js b/backend/server.js index 4a9b289..62a91cd 100644 --- a/backend/server.js +++ b/backend/server.js @@ -4,6 +4,7 @@ const jwt = require('jsonwebtoken'); const bcrypt = require('bcryptjs'); const fs = require('fs'); const path = require('path'); +const archiver = require('archiver'); const db = require('./database'); const app = express(); @@ -255,6 +256,121 @@ app.post('/api/admin/assign', requireAdmin, (req, res) => { }); }); +// ==================== DOWNLOAD API ==================== + +function isValidName(name) { + return name && !name.includes('/') && !name.includes('\\') && !name.includes('..'); +} + +app.post('/api/download/selected', (req, res) => { + const { images } = req.body; + if (!Array.isArray(images) || images.length === 0) { + return res.status(400).json({ error: 'Keine Bilder ausgewaehlt' }); + } + + // Alle Bilder validieren und Zugriff pruefen + let pending = images.length; + const verified = []; + let responded = false; + + images.forEach((img, idx) => { + if (responded) return; + const name = img.name; + const folder = img.folder || null; + + // Dateiname + Ordnername validieren + if (!isValidName(name) || !IMAGE_RE.test(name) || (folder && !isValidName(folder))) { + responded = true; + return res.status(400).json({ error: 'Ungueltiger Dateiname' }); + } + + const checkAccess = (ok) => { + if (responded) return; + if (!ok) { + responded = true; + return res.status(403).json({ error: 'Kein Zugriff auf: ' + name }); + } + verified[idx] = img; + pending--; + if (pending === 0) sendFiles(); + }; + + if (!folder) { + // Root-Bild: fuer alle zugaenglich + const filePath = path.join(FULLS_DIR, name); + checkAccess(fs.existsSync(filePath)); + } else { + // Ordner-Bild: nur wenn User den Ordner zugewiesen hat + if (!req.user) return checkAccess(false); + db.get('SELECT 1 FROM user_folders WHERE user_id = ? AND folder_name = ?', + [req.user.id, folder], (err, row) => { + if (err || !row) return checkAccess(false); + const filePath = path.join(FULLS_DIR, folder, name); + checkAccess(fs.existsSync(filePath)); + }); + } + }); + + function sendFiles() { + if (verified.length <= 3) { + // Einzelne Downloads: URLs zurueckgeben + const urls = verified.map(img => { + const prefix = img.folder ? encodeURIComponent(img.folder) + '/' : ''; + return '/images/fulls/' + prefix + encodeURIComponent(img.name); + }); + return res.json({ mode: 'individual', urls }); + } + + // 4+ Bilder: ZIP streamen + res.setHeader('Content-Type', 'application/zip'); + res.setHeader('Content-Disposition', 'attachment; filename="mischkomposition-auswahl.zip"'); + const archive = archiver('zip', { zlib: { level: 5 } }); + archive.on('error', () => { + if (!res.headersSent) res.status(500).json({ error: 'ZIP-Fehler' }); + }); + archive.pipe(res); + verified.forEach(img => { + const filePath = img.folder + ? path.join(FULLS_DIR, img.folder, img.name) + : path.join(FULLS_DIR, img.name); + archive.file(filePath, { name: img.name }); + }); + archive.finalize(); + } +}); + +app.get('/api/download/folder/:folderName', (req, res) => { + const folderName = req.params.folderName; + if (!isValidName(folderName)) { + return res.status(400).json({ error: 'Ungueltiger Ordnername' }); + } + if (!req.user) { + return res.status(401).json({ error: 'Nicht eingeloggt' }); + } + db.get('SELECT 1 FROM user_folders WHERE user_id = ? AND folder_name = ?', + [req.user.id, folderName], (err, row) => { + if (err || !row) { + return res.status(403).json({ error: 'Kein Zugriff auf diesen Ordner' }); + } + const folderPath = path.join(FULLS_DIR, folderName); + const images = listImagesInDir(folderPath); + if (images.length === 0) { + return res.status(404).json({ error: 'Keine Bilder im Ordner' }); + } + res.setHeader('Content-Type', 'application/zip'); + res.setHeader('Content-Disposition', 'attachment; filename="' + encodeURIComponent(folderName) + '.zip"'); + const archive = archiver('zip', { zlib: { level: 5 } }); + archive.on('error', () => { + if (!res.headersSent) res.status(500).json({ error: 'ZIP-Fehler' }); + }); + archive.pipe(res); + images.forEach(name => { + archive.file(path.join(folderPath, name), { name }); + }); + archive.finalize(); + }); +}); + // ==================== STATIC FILES ==================== app.use(express.static(path.join(__dirname, '../public'))); diff --git a/package-lock.json b/package-lock.json index c53d6e7..cceda84 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "GPL-3.0", "dependencies": { + "archiver": "^7.0.1", "bcryptjs": "^2.4.3", "cookie-parser": "^1.4.6", "express": "^4.19.2", @@ -33,6 +34,102 @@ "license": "MIT", "optional": true }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@npmcli/fs": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", @@ -89,6 +186,16 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -131,6 +238,18 @@ "license": "ISC", "optional": true }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -242,6 +361,21 @@ "node": ">=0.10.0" } }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/ansi-wrap": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", @@ -292,6 +426,252 @@ "license": "ISC", "optional": true }, + "node_modules/archiver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.2", + "async": "^3.2.4", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "license": "MIT", + "dependencies": { + "glob": "^10.0.0", + "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils/node_modules/brace-expansion": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/archiver-utils/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/archiver-utils/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/archiver-utils/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/archiver/node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/archiver/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/archiver/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/archiver/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/archiver/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/archiver/node_modules/tar-stream": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.8.tgz", + "integrity": "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==", + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "bare-fs": "^4.5.5", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, "node_modules/archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", @@ -629,6 +1009,20 @@ "node": ">= 4.5.0" } }, + "node_modules/b4a": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz", + "integrity": "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==", + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, "node_modules/bach": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", @@ -652,8 +1046,99 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "devOptional": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/bare-events": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "license": "Apache-2.0", + "peer": true, + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } + }, + "node_modules/bare-fs": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.1.tgz", + "integrity": "sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw==", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-os": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.8.7.tgz", + "integrity": "sha512-G4Gr1UsGeEy2qtDTZwL7JFLo2wapUarz7iTMcYcMFdS89AIQuBoyjgXZz0Utv7uHs3xA9LckhVbeBi8lEQrC+w==", + "license": "Apache-2.0", + "engines": { + "bare": ">=1.14.0" + } + }, + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "license": "Apache-2.0", + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.0.tgz", + "integrity": "sha512-3zAJRZMDFGjdn+RVnNpF9kuELw+0Fl3lpndM4NcEOhb9zwtSo/deETfuIwMSE5BXanA0FrN1qVjffGwAg2Y7EA==", + "license": "Apache-2.0", + "dependencies": { + "streamx": "^2.25.0", + "teex": "^1.0.1" + }, + "peerDependencies": { + "bare-abort-controller": "*", + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + }, + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/bare-url": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.0.tgz", + "integrity": "sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==", + "license": "Apache-2.0", + "dependencies": { + "bare-path": "^3.0.0" + } }, "node_modules/base": { "version": "0.11.2", @@ -886,6 +1371,15 @@ "ieee754": "^1.1.13" } }, + "node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/buffer-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", @@ -1241,6 +1735,24 @@ "node": ">=0.10.0" } }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", @@ -1265,6 +1777,91 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/compress-commons": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/compress-commons/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/compress-commons/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/compress-commons/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/compress-commons/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1399,8 +1996,101 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/crc32-stream/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/crc32-stream/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/crc32-stream/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/crc32-stream/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } }, "node_modules/cross-spawn": { "version": "4.0.2", @@ -1663,6 +2353,12 @@ "object.defaults": "^1.1.0" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -1682,8 +2378,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT", - "optional": true + "license": "MIT" }, "node_modules/encodeurl": { "version": "2.0.0", @@ -1872,6 +2567,33 @@ "es5-ext": "~0.10.14" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, "node_modules/expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -2112,6 +2834,12 @@ "node": ">= 0.10" } }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, "node_modules/fast-levenshtein": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", @@ -2252,6 +2980,63 @@ "node": ">=0.10.0" } }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -2668,8 +3453,7 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "devOptional": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/gulp": { "version": "4.0.2", @@ -3523,6 +4307,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-unc-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", @@ -3562,14 +4358,12 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "devOptional": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/isobject": { "version": "3.0.1", @@ -3580,6 +4374,21 @@ "node": ">=0.10.0" } }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -3679,7 +4488,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dev": true, "dependencies": { "readable-stream": "^2.0.5" }, @@ -3758,8 +4566,7 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.clonedeep": { "version": "4.5.0", @@ -4483,7 +5290,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -4727,6 +5533,12 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, "node_modules/parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -4822,6 +5634,15 @@ "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", "dev": true }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -4849,6 +5670,37 @@ "node": ">=0.10.0" } }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/path-to-regexp": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", @@ -4996,6 +5848,15 @@ "node": ">= 0.8" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", @@ -5148,7 +6009,6 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -5162,18 +6022,46 @@ "node_modules/readable-stream/node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/readable-stream/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/readdirp": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", @@ -5686,6 +6574,27 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "license": "ISC" }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/side-channel": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", @@ -6233,6 +7142,17 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/streamx": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.25.0.tgz", + "integrity": "sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==", + "license": "MIT", + "dependencies": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + } + }, "node_modules/string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", @@ -6253,6 +7173,51 @@ "node": ">=0.10.0" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -6265,6 +7230,28 @@ "node": ">=0.10.0" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", @@ -6428,6 +7415,24 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "license": "ISC" }, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" + } + }, + "node_modules/text-decoder": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", + "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, "node_modules/through2": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", @@ -6987,6 +7992,68 @@ "node": ">=0.10.0" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -7043,6 +8110,89 @@ "camelcase": "^3.0.0", "object.assign": "^4.1.0" } + }, + "node_modules/zip-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/zip-stream/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/zip-stream/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/zip-stream/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/zip-stream/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } } } } diff --git a/package.json b/package.json index fb7b616..1b0a15d 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ }, "homepage": "https://github.com/Kroonk/Photography#readme", "dependencies": { + "archiver": "^7.0.1", "bcryptjs": "^2.4.3", "cookie-parser": "^1.4.6", "express": "^4.19.2",