diff --git a/Dockerfile b/Dockerfile index 950af6f..aa7aee9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,7 +26,7 @@ FROM node:20-alpine # Getrennte RUNs halten einzelne Registry-Layer klein genug fuer Proxy-Limits. RUN apk add --no-cache docker-cli -RUN apk add --no-cache imagemagick +RUN apk add --no-cache imagemagick libjpeg-turbo libpng libwebp RUN apk add --no-cache sqlite-libs WORKDIR /app diff --git a/admin.html b/admin.html index 9ce97d4..459cdad 100644 --- a/admin.html +++ b/admin.html @@ -7,8 +7,6 @@ @@ -65,13 +71,17 @@

Ordner-Zuweisung

-

Weise Unterordner aus dem Websitebilder-Verzeichnis einem Nutzer zu.

- -
- - +
+ + + +
OrdnerStatus
+ +
diff --git a/assets/css/custom.min.css b/assets/css/custom.min.css index da65d16..e4d3435 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;top:0;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;bottom:.6em;right:.6em;width:1.6em;height:1.6em;border:2px solid rgba(255,255,255,.8);border-radius:4px;background:rgba(0,0,0,.5);z-index:2;transition:all .2s ease;pointer-events:none}body.selection-mode #main .thumb .image{opacity:.85;transition:opacity .2s ease}body.selection-mode #main .thumb:active .image{opacity:.6}body.selection-mode #main .thumb.selected::before{background:#34a58e;border-color:#34a58e}body.selection-mode #main .thumb.selected .image{opacity:1;outline:3px solid #34a58e;outline-offset:-3px}@media screen and (max-width: 736px){#selection-toolbar{top:4em;padding:.6em 1em;gap:.6em}#selection-toolbar #sel-count{font-size:.9em}#selection-toolbar button{font-size:.85em;padding:.5em 1em}body.selection-mode #main .thumb::before{bottom:.3em;right:.3em;width:2em;height:2em;border-width:2.5px}body.selection-mode #main .thumb.selected .image{outline-width:4px}}#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..70f0ab7 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:.8em;max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#header nav>ul>li a{font-size:0;padding:0 .9em;line-height:4em}#header nav>ul>li a i{font-size:1.3rem;vertical-align:middle}}#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:2.075s;-webkit-transition-delay:2.075s;-ms-transition-delay:2.075s;transition-delay:2.075s;height:calc(28.5714285714vh - 1.3333333333em);min-height:12em;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}}#footer .copyright{color:#9e9790;font-size:.9em}#footer .copyright a{color:inherit}.text-fg{color:#a0a0a1}#selection-toolbar{position:fixed;top:0;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;bottom:.6em;right:.6em;width:1.6em;height:1.6em;border:2px solid rgba(255,255,255,.8);border-radius:4px;background:rgba(0,0,0,.5);z-index:2;transition:all .2s ease;pointer-events:none}body.selection-mode #main .thumb .image{opacity:.85;transition:opacity .2s ease}body.selection-mode #main .thumb:active .image{opacity:.6}body.selection-mode #main .thumb.selected::before{background:#34a58e;border-color:#34a58e}body.selection-mode #main .thumb.selected .image{opacity:1;outline:3px solid #34a58e;outline-offset:-3px}@media screen and (max-width: 736px){#selection-toolbar{top:4em;padding:.6em 1em;gap:.6em}#selection-toolbar #sel-count{font-size:.9em}#selection-toolbar button{font-size:.85em;padding:.5em 1em}body.selection-mode #main .thumb::before{bottom:.3em;right:.3em;width:2em;height:2em;border-width:2.5px}body.selection-mode #main .thumb.selected .image{outline-width:4px}}#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..970a6cd 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:.8em;max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#header nav>ul>li a{font-size:0;padding:0 .9em;line-height:4em}#header nav>ul>li a i{font-size:1.3rem;vertical-align:middle}}#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:2.075s;-webkit-transition-delay:2.075s;-ms-transition-delay:2.075s;transition-delay:2.075s;height:calc(28.5714285714vh - 1.3333333333em);min-height:12em;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}}#footer .copyright{color:#505051;font-size:.9em}#footer .copyright a{color:inherit}.text-fg{color:#a0a0a1}#selection-toolbar{position:fixed;top:0;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;bottom:.6em;right:.6em;width:1.6em;height:1.6em;border:2px solid rgba(255,255,255,.8);border-radius:4px;background:rgba(0,0,0,.5);z-index:2;transition:all .2s ease;pointer-events:none}body.selection-mode #main .thumb .image{opacity:.85;transition:opacity .2s ease}body.selection-mode #main .thumb:active .image{opacity:.6}body.selection-mode #main .thumb.selected::before{background:#34a58e;border-color:#34a58e}body.selection-mode #main .thumb.selected .image{opacity:1;outline:3px solid #34a58e;outline-offset:-3px}@media screen and (max-width: 736px){#selection-toolbar{top:4em;padding:.6em 1em;gap:.6em}#selection-toolbar #sel-count{font-size:.9em}#selection-toolbar button{font-size:.85em;padding:.5em 1em}body.selection-mode #main .thumb::before{bottom:.3em;right:.3em;width:2em;height:2em;border-width:2.5px}body.selection-mode #main .thumb.selected .image{outline-width:4px}}#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/admin.js b/assets/js/admin.js index f3516c5..a5c80ab 100644 --- a/assets/js/admin.js +++ b/assets/js/admin.js @@ -26,12 +26,18 @@ $(document).ready(function() { $('#users-tbody').empty(); $('#user-select').html(''); + if (!users || users.length === 0) { + $('#users-tbody').html('Keine Nutzer gefunden'); + return; + } + users.forEach(function(u) { - var badge = $('').addClass('badge badge-' + u.role).text(u.role); + var role = u.role || 'unbekannt'; + var badge = $('').addClass('badge badge-' + role).text(role); var created = u.created_at ? new Date(u.created_at).toLocaleDateString('de-DE') : '-'; var info = created; - if (u.role === 'client' && u.expires_at) { + if (role === 'client' && u.expires_at) { var expDate = new Date(u.expires_at).toLocaleDateString('de-DE'); if (u.expired) { badge = $('').addClass('badge badge-expired').text('abgelaufen'); @@ -55,32 +61,47 @@ $(document).ready(function() { row.append($('').text(u.id)); row.append(userCell); - row.append($('').text(u.role)); + row.append($('').text(role)); row.append($('').text(info)); row.append(actions); $('#users-tbody').append(row); // Dropdown fuer Ordner-Zuweisung (nur non-admin) - if (u.role !== 'admin') { - $('#user-select').append($('').val(u.id).text(u.username + ' (' + u.role + ')')); + if (role !== 'admin') { + $('#user-select').append($('').val(u.id).text(u.username + ' (' + role + ')')); } }); + }).fail(function(xhr) { + var msg = 'HTTP ' + xhr.status + ': ' + xhr.statusText; + $('#users-tbody').html('Fehler beim Laden: ' + msg + ''); }); } // Nutzer erstellen $('#create-user-form').submit(function(e) { e.preventDefault(); - $.post('/api/admin/users', { - username: $('#new-username').val(), - password: $('#new-password').val(), - role: $('#new-role').val() - }).done(function() { + var username = $('#new-username').val().trim(); + var password = $('#new-password').val(); + var role = $('#new-role').val(); + if (!username || !password) { + alert('Bitte Username und Passwort eingeben.'); + return; + } + $.ajax({ + url: '/api/admin/users', + type: 'POST', + contentType: 'application/json', + data: JSON.stringify({ username: username, password: password, role: role }) + }).done(function(data) { + alert('Nutzer "' + username + '" erfolgreich erstellt!'); $('#new-username').val(''); $('#new-password').val(''); loadUsers(); - }).fail(function(err) { - alert('Fehler: ' + (err.responseJSON ? err.responseJSON.error : 'Unbekannt')); + }).fail(function(xhr) { + var msg = 'Unbekannter Fehler'; + if (xhr.responseJSON && xhr.responseJSON.error) msg = xhr.responseJSON.error; + else if (xhr.status) msg = 'HTTP ' + xhr.status + ': ' + xhr.statusText; + alert('Fehler beim Erstellen: ' + msg); }); }); @@ -119,54 +140,89 @@ $(document).ready(function() { // ==================== ORDNER-ZUWEISUNG ==================== + var allFolders = []; + var assignedFolders = []; + function loadFolders() { $.get('/api/admin/folders').done(function(folders) { - $('#folder-checkboxes').empty(); - if (folders.length === 0) { - $('#folder-checkboxes').html('

Keine Unterordner in Websitebilder gefunden. Erstelle Ordner in Nextcloud.

'); - return; - } - folders.forEach(function(f) { - var wrapper = $('
'); - var label = $(''); - $('').val(f).appendTo(label); - label.append(' '); - $('').appendTo(label); - label.append(' ' + f); - wrapper.append(label); - $('#folder-checkboxes').append(wrapper); - }); + allFolders = folders || []; + renderFolderTable(); }); } - // Bei User-Auswahl: zugewiesene Ordner laden + function renderFolderTable() { + var $tbody = $('#folder-tbody'); + $tbody.empty(); + if (allFolders.length === 0) { + $tbody.html('Keine Unterordner gefunden. Erstelle Ordner in Nextcloud.'); + return; + } + allFolders.forEach(function(f) { + var isAssigned = assignedFolders.indexOf(f) !== -1; + var cls = isAssigned ? 'folder-row assigned' : 'folder-row'; + var statusCls = isAssigned ? 'folder-status yes' : 'folder-status no'; + var statusText = isAssigned ? 'Zugewiesen' : '—'; + $tbody.append( + '' + + ' ' + f + '' + + '' + statusText + '' + + '' + ); + }); + } + + // Bei User-Auswahl: zugewiesene Ordner laden und Tabelle anzeigen $('#user-select').change(function() { var uid = $(this).val(); - $('.folder-cb').prop('checked', false); - if (!uid) return; - $.get('/api/admin/assign?user_id=' + uid).done(function(assignedFolders) { - assignedFolders.forEach(function(f) { - $('.folder-cb').filter(function() { - return $(this).val() === f; - }).prop('checked', true); + if (!uid) { + $('#folder-table-wrap').hide(); + assignedFolders = []; + return; + } + // Ordner neu laden falls noch leer, dann Zuweisung anzeigen + var showTable = function() { + $.get('/api/admin/assign?user_id=' + uid).done(function(folders) { + assignedFolders = folders || []; + renderFolderTable(); + $('#folder-table-wrap').show(); + }).fail(function() { + assignedFolders = []; + renderFolderTable(); + $('#folder-table-wrap').show(); }); - }); + }; + if (allFolders.length === 0) { + $.get('/api/admin/folders').done(function(folders) { + allFolders = folders || []; + showTable(); + }).fail(function() { + allFolders = []; + showTable(); + }); + } else { + showTable(); + } }); - // Zuweisung speichern - $('#save-assignments').click(function() { + // Klick auf Ordner-Zeile: Toggle + sofort speichern + $(document).on('click', '.folder-row', function() { var uid = $('#user-select').val(); - if (!uid) return alert('Bitte Nutzer waehlen'); - var selected = []; - $('.folder-cb:checked').each(function() { selected.push($(this).val()); }); - + if (!uid) return; + var folder = $(this).data('folder'); + var idx = assignedFolders.indexOf(folder); + if (idx !== -1) { + assignedFolders.splice(idx, 1); + } else { + assignedFolders.push(folder); + } + renderFolderTable(); $.ajax({ url: '/api/admin/assign', type: 'POST', contentType: 'application/json', - data: JSON.stringify({ user_id: uid, folders: selected }) + data: JSON.stringify({ user_id: uid, folders: assignedFolders }) }).done(function() { - $('#assign-status').text('Gespeichert!').fadeIn().delay(2000).fadeOut(); + $('#assign-status').text('Gespeichert!').show().delay(1500).fadeOut(); }).fail(function() { alert('Fehler beim Speichern'); }); diff --git a/assets/js/admin.min.js b/assets/js/admin.min.js index 4a0f3a9..2c4e91e 100644 --- a/assets/js/admin.min.js +++ b/assets/js/admin.min.js @@ -1 +1 @@ -$(document).ready(function(){function e(){$.get("/api/admin/users").done(function(e){$("#users-tbody").empty(),$("#user-select").html(''),e.forEach(function(e){var n=''+e.role+"",a=e.created_at?new Date(e.created_at).toLocaleDateString("de-DE"):"-";if("client"===e.role&&e.expires_at){var t=new Date(e.expires_at).toLocaleDateString("de-DE");e.expired?(n='abgelaufen',a="Abgelaufen: "+t):a="Bis: "+t}var r='";r+='",$("#users-tbody").append(""+e.id+""+e.username+" "+n+""+e.role+""+a+""+r+""),"admin"!==e.role&&$("#user-select").append('")})})}$.get("/api/auth/me").done(function(n){"admin"!==n.role?(alert("Kein Zugriff!"),window.location.href="/"):(e(),$.get("/api/admin/folders").done(function(e){$("#folder-checkboxes").empty(),0!==e.length?e.forEach(function(e){$("#folder-checkboxes").append('
")}):$("#folder-checkboxes").html("

Keine Unterordner in Websitebilder gefunden. Erstelle Ordner in Nextcloud.

")}),$("body").removeClass("is-preload"))}).fail(function(){window.location.href="/"}),$("#logout-btn").click(function(e){e.preventDefault(),$.post("/api/auth/logout").done(function(){window.location.href="/"})}),$("#create-user-form").submit(function(n){n.preventDefault(),$.post("/api/admin/users",{username:$("#new-username").val(),password:$("#new-password").val(),role:$("#new-role").val()}).done(function(){$("#new-username").val(""),$("#new-password").val(""),e()}).fail(function(e){alert("Fehler: "+(e.responseJSON?e.responseJSON.error:"Unbekannt"))})}),window.deleteUser=function(n,a){confirm('Nutzer "'+a+'" wirklich loeschen?')&&$.ajax({url:"/api/admin/users/"+n,type:"DELETE"}).done(e).fail(function(e){alert(e.responseJSON?e.responseJSON.error:"Fehler")})},window.changePassword=function(e,n){var a=prompt('Neues Passwort fuer "'+n+'":');a&&$.ajax({url:"/api/admin/users/"+e+"/password",type:"PUT",contentType:"application/json",data:JSON.stringify({new_password:a})}).done(function(){alert("Passwort geaendert!")}).fail(function(e){alert(e.responseJSON?e.responseJSON.error:"Fehler")})},$("#user-select").change(function(){var e=$(this).val();$(".folder-cb").prop("checked",!1),e&&$.get("/api/admin/assign?user_id="+e).done(function(e){e.forEach(function(e){$('.folder-cb[value="'+e+'"]').prop("checked",!0)})})}),$("#save-assignments").click(function(){var e=$("#user-select").val();if(!e)return alert("Bitte Nutzer waehlen");var n=[];$(".folder-cb:checked").each(function(){n.push($(this).val())}),$.ajax({url:"/api/admin/assign",type:"POST",contentType:"application/json",data:JSON.stringify({user_id:e,folders:n})}).done(function(){$("#assign-status").text("Gespeichert!").fadeIn().delay(2e3).fadeOut()}).fail(function(){alert("Fehler beim Speichern")})}),$("#admin-pw-form").submit(function(e){e.preventDefault(),$.post("/api/auth/change-password",{old_password:$("#admin-pw-old").val(),new_password:$("#admin-pw-new").val()}).done(function(){alert("Passwort geaendert!"),$("#admin-pw-old, #admin-pw-new").val("")}).fail(function(e){alert(e.responseJSON?e.responseJSON.error:"Fehler")})})}); \ No newline at end of file +$(document).ready(function(){function e(){$.get("/api/admin/users").done(function(e){$("#users-tbody").empty(),$("#user-select").html(''),e&&0!==e.length?e.forEach(function(e){var t=e.role||"unbekannt",n=''+t+"",a=e.created_at?new Date(e.created_at).toLocaleDateString("de-DE"):"-";if("client"===t&&e.expires_at){var r=new Date(e.expires_at).toLocaleDateString("de-DE");e.expired?(n='abgelaufen',a="Abgelaufen: "+r):a="Bis: "+r}var o='";o+='",$("#users-tbody").append(""+e.id+""+e.username+" "+n+""+t+""+a+""+o+""),"admin"!==t&&$("#user-select").append('")}):$("#users-tbody").html('Keine Nutzer gefunden')}).fail(function(e){var t="HTTP "+e.status+": "+e.statusText;$("#users-tbody").html('Fehler beim Laden: '+t+"")})}$.get("/api/auth/me").done(function(n){"admin"!==n.role?(alert("Kein Zugriff!"),window.location.href="/"):(e(),$.get("/api/admin/folders").done(function(e){t=e}),$("body").removeClass("is-preload"))}).fail(function(){window.location.href="/"}),$("#logout-btn").click(function(e){e.preventDefault(),$.post("/api/auth/logout").done(function(){window.location.href="/"})}),$("#create-user-form").submit(function(t){t.preventDefault();var n=$("#new-username").val().trim(),a=$("#new-password").val(),r=$("#new-role").val();n&&a?$.ajax({url:"/api/admin/users",type:"POST",contentType:"application/json",data:JSON.stringify({username:n,password:a,role:r})}).done(function(t){alert('Nutzer "'+n+'" erfolgreich erstellt!'),$("#new-username").val(""),$("#new-password").val(""),e()}).fail(function(e){var t="Unbekannter Fehler";e.responseJSON&&e.responseJSON.error?t=e.responseJSON.error:e.status&&(t="HTTP "+e.status+": "+e.statusText),alert("Fehler beim Erstellen: "+t)}):alert("Bitte Username und Passwort eingeben.")}),window.deleteUser=function(t,n){confirm('Nutzer "'+n+'" wirklich loeschen?')&&$.ajax({url:"/api/admin/users/"+t,type:"DELETE"}).done(e).fail(function(e){alert(e.responseJSON?e.responseJSON.error:"Fehler")})},window.changePassword=function(e,t){var n=prompt('Neues Passwort fuer "'+t+'":');n&&$.ajax({url:"/api/admin/users/"+e+"/password",type:"PUT",contentType:"application/json",data:JSON.stringify({new_password:n})}).done(function(){alert("Passwort geaendert!")}).fail(function(e){alert(e.responseJSON?e.responseJSON.error:"Fehler")})};var t=[],n=[];function a(){var e=$("#folder-tbody");e.empty(),0!==t.length?t.forEach(function(t){var a=-1!==n.indexOf(t),r=a?"folder-row assigned":"folder-row",o=a?"folder-status yes":"folder-status no",s=a?"Zugewiesen":"—";e.append(' '+t+''+s+"")}):e.html('Keine Unterordner gefunden. Erstelle Ordner in Nextcloud.')}$("#user-select").change(function(){var e=$(this).val();if(!e)return $("#folder-table-wrap").hide(),void(n=[]);var r=function(){$.get("/api/admin/assign?user_id="+e).done(function(e){n=e||[],a(),$("#folder-table-wrap").show()}).fail(function(){n=[],a(),$("#folder-table-wrap").show()})};0===t.length?$.get("/api/admin/folders").done(function(e){t=e||[],r()}).fail(function(){t=[],r()}):r()}),$(document).on("click",".folder-row",function(){var e=$("#user-select").val();if(e){var t=$(this).data("folder"),r=n.indexOf(t);-1!==r?n.splice(r,1):n.push(t),a(),$.ajax({url:"/api/admin/assign",type:"POST",contentType:"application/json",data:JSON.stringify({user_id:e,folders:n})}).done(function(){$("#assign-status").text("Gespeichert!").show().delay(1500).fadeOut()}).fail(function(){alert("Fehler beim Speichern")})}}),$("#admin-pw-form").submit(function(e){e.preventDefault(),$.post("/api/auth/change-password",{old_password:$("#admin-pw-old").val(),new_password:$("#admin-pw-new").val()}).done(function(){alert("Passwort geaendert!"),$("#admin-pw-old, #admin-pw-new").val("")}).fail(function(e){alert(e.responseJSON?e.responseJSON.error:"Fehler")})})}); \ No newline at end of file diff --git a/assets/js/main.js b/assets/js/main.js index b9f2ba1..a6bc30f 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -182,6 +182,8 @@ images.forEach(function(file) { var article = $('
'); + article.attr('data-name', file.name); + if (file.folder) article.attr('data-folder', file.folder); var prefix = file.folder ? encodeURIComponent(file.folder) + '/' : ''; var fullPath = '/images/fulls/' + prefix + encodeURIComponent(file.name); var thumbPath = '/images/thumbs/' + prefix + encodeURIComponent(file.name); @@ -193,6 +195,7 @@ }); initThumbs(); + initSelectionMode(images); initPoptrox(); }, error: function() { @@ -214,6 +217,14 @@ if ((x = $image_img.data("position"))) $image.css("background-position", x); $image_img.hide(); + // Fallback: Wenn Thumbnail fehlt, Vollbild als Vorschau nutzen + $image_img[0].addEventListener("error", function() { + var fullUrl = $image.attr("href"); + if (fullUrl) { + $image.css("background-image", "url('" + fullUrl + "')"); + } + }); + $image_img[0].addEventListener("load", function() { EXIF.getData($image_img[0], function () { exifDatas[$image_img.data('name')] = getExifDataMarkup(this); @@ -282,6 +293,194 @@ 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 + // Capture-Phase auf document: faengt JEDEN Klick ab bevor Poptrox ihn sieht + document.addEventListener('click', function(e) { + if (!selectionActive) return; + var thumb = e.target.closest('#main .thumb'); + if (!thumb) return; + + e.preventDefault(); + e.stopImmediatePropagation(); + + var $thumb = $(thumb); + var imgName = $thumb.attr('data-name'); + var folder = $thumb.attr('data-folder') || null; + + 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(); + }, true); + + 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 (direkt gebunden, nicht delegiert) + $toolbar.on('click', '#sel-download', function() { + if (selectedImages.length === 0) return; + var payload = JSON.stringify({ images: selectedImages }); + + if (selectedImages.length <= 3) { + // 1-3 Bilder: normales AJAX, Server gibt JSON mit URLs + $.ajax({ + url: '/api/download/selected', + type: 'POST', + contentType: 'application/json', + data: payload, + success: function(resp) { + if (resp.mode === 'individual') { + resp.urls.forEach(function(url, i) { + setTimeout(function() { + var a = document.createElement('a'); + a.href = url; + a.download = url.split('/').pop(); + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + }, i * 500); + }); + } + }, + error: function(xhr) { + var msg = (xhr.responseJSON && xhr.responseJSON.error) || 'Download fehlgeschlagen'; + alert(msg); + } + }); + } else { + // 4+ Bilder: Blob-Download fuer ZIP + var xhr = new XMLHttpRequest(); + xhr.open('POST', '/api/download/selected', true); + xhr.setRequestHeader('Content-Type', 'application/json'); + xhr.responseType = 'blob'; + xhr.onload = function() { + if (xhr.status === 200) { + var url = window.URL.createObjectURL(xhr.response); + 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); + } else { + // Fehler-Blob als Text lesen + var reader = new FileReader(); + reader.onload = function() { + try { + var resp = JSON.parse(this.result); + alert(resp.error || 'Download fehlgeschlagen'); + } catch(e) { + alert('Download fehlgeschlagen (Status ' + xhr.status + ')'); + } + }; + reader.readAsText(xhr.response); + } + }; + xhr.onerror = function() { + alert('Netzwerkfehler beim Download'); + }; + xhr.send(payload); + } + }); + + // Abbrechen-Button (direkt gebunden) + $toolbar.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 a46089f..1d77919 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("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('
    ');o.attr("data-name",n.name),n.folder&&o.attr("data-folder",n.folder);var 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)})}))}),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)}),document.addEventListener("click",function(n){if(a){var t=n.target.closest("#main .thumb");if(t){n.preventDefault(),n.stopImmediatePropagation();for(var i=e(t),l=i.attr("data-name"),s=i.attr("data-folder")||null,d=-1,c=0;cBild 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 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..9836f19 100644 --- a/assets/sass/custom.scss +++ b/assets/sass/custom.scss @@ -6,6 +6,116 @@ color: _palette(fg); } +/* ==================== Selection Mode ==================== */ + +#selection-toolbar { + position: fixed; + top: 0; + 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; + + // Checkbox unten-rechts (wird nicht von Toolbar ueberlagert) + &::before { + content: ''; + position: absolute; + bottom: 0.6em; + right: 0.6em; + width: 1.6em; + height: 1.6em; + border: 2px solid rgba(255, 255, 255, 0.8); + border-radius: 4px; + background: rgba(0, 0, 0, 0.5); + z-index: 2; + transition: all 0.2s ease; + pointer-events: none; + } + + // Leichtes Overlay damit klar ist: gesamtes Bild anklickbar + .image { + opacity: 0.85; + transition: opacity 0.2s ease; + } + + &:active .image { + opacity: 0.6; + } + + &.selected { + &::before { + background: _palette(accent1); + border-color: _palette(accent1); + } + + .image { + opacity: 1; + outline: 3px solid _palette(accent1); + outline-offset: -3px; + } + } + } +} + +@media screen and (max-width: 736px) { + #selection-toolbar { + top: _size(header); + padding: 0.6em 1em; + gap: 0.6em; + + #sel-count { + font-size: 0.9em; + } + + button { + font-size: 0.85em; + padding: 0.5em 1em; + } + } + + body.selection-mode #main .thumb { + &::before { + bottom: 0.3em; + right: 0.3em; + width: 2em; + height: 2em; + border-width: 2.5px; + } + + &.selected .image { + outline-width: 4px; + } + } +} + /* Footer */ #footer { .presentify { diff --git a/assets/sass/layout/_header.scss b/assets/sass/layout/_header.scss index 0a1ccd7..00174e6 100644 --- a/assets/sass/layout/_header.scss +++ b/assets/sass/layout/_header.scss @@ -110,15 +110,25 @@ } h1 { - font-size: 0.9em; + font-size: 0.8em; + max-width: 40%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } nav { > ul { > li { a { - font-size: 0.9em; - padding: 0 1.15em; + font-size: 0; + padding: 0 0.9em; + line-height: _size(header); + + i { + font-size: 1.3rem; + vertical-align: middle; + } } } } diff --git a/assets/sass/libs/_vars.scss b/assets/sass/libs/_vars.scss index 86f5a2e..3c05693 100644 --- a/assets/sass/libs/_vars.scss +++ b/assets/sass/libs/_vars.scss @@ -27,10 +27,10 @@ minHeight: 18em ), xsmall: ( - rows: 2, - columns: 1, + rows: 3, + columns: 2, pad: 0.5, - minHeight: 18em + minHeight: 12em ) ) ); diff --git a/backend/database.js b/backend/database.js index ad1b9a2..c373f9e 100644 --- a/backend/database.js +++ b/backend/database.js @@ -17,7 +17,15 @@ db.serialize(() => { created_at DATETIME DEFAULT CURRENT_TIMESTAMP )`); - // Migration: created_at hinzufuegen falls Tabelle schon existiert + // Migration: Spalten hinzufuegen falls Tabelle schon existiert (alte DB ohne role/created_at) + db.run(`ALTER TABLE users ADD COLUMN role TEXT NOT NULL DEFAULT 'client'`, (err) => { + // Ignoriere Fehler wenn Spalte schon existiert + if (!err) { + // Alte Admins (die einzigen User vor dem Update) als admin markieren + db.run(`UPDATE users SET role = 'admin' WHERE id = 1`); + console.log('Migration: role-Spalte hinzugefuegt, User ID 1 als admin gesetzt'); + } + }); db.run(`ALTER TABLE users ADD COLUMN created_at DATETIME DEFAULT CURRENT_TIMESTAMP`, (err) => { // Ignoriere Fehler wenn Spalte schon existiert }); diff --git a/backend/server.js b/backend/server.js index 1d24d50..376ac43 100644 --- a/backend/server.js +++ b/backend/server.js @@ -5,6 +5,7 @@ const bcrypt = require('bcryptjs'); const fs = require('fs'); const path = require('path'); const { execFile } = require('child_process'); +const archiver = require('archiver'); const db = require('./database'); const app = express(); @@ -19,7 +20,7 @@ const DEV_FULLS_DIR = path.join(__dirname, '../images/fulls'); const DEV_THUMBS_DIR = path.join(__dirname, '../images/thumbs'); const FULLS_DIR = process.env.FULLS_DIR || (fs.existsSync(DEFAULT_FULLS_DIR) ? DEFAULT_FULLS_DIR : DEV_FULLS_DIR); const THUMBS_DIR = process.env.THUMBS_DIR || (fs.existsSync(DEFAULT_THUMBS_DIR) ? DEFAULT_THUMBS_DIR : DEV_THUMBS_DIR); -const SYNC_IMAGE = process.env.SYNC_IMAGE || 'ghcr.io/kroonk/photography:latest'; +const SYNC_IMAGE = process.env.SYNC_IMAGE || 'git.mischlabs.de/mrdiderot/photography:latest'; const SYNC_CONTAINER = process.env.SYNC_CONTAINER || 'photography-website'; const IMAGE_RE = /\.(jpg|jpeg|png|gif|webp)$/i; let syncInProgress = false; @@ -235,7 +236,14 @@ app.get('/images/fulls/', (req, res) => { app.get('/api/admin/users', requireAdmin, (req, res) => { db.all('SELECT id, username, role, created_at FROM users', (err, rows) => { - if (err) return res.json([]); + if (err) { + console.error('User-Abfrage fehlgeschlagen:', err.message); + // Fallback: einfache Abfrage ohne neue Spalten + return db.all('SELECT * FROM users', (err2, rows2) => { + if (err2) return res.status(500).json({ error: 'DB Error: ' + err2.message }); + res.json(rows2.map(u => ({ id: u.id, username: u.username, role: u.role || 'client', created_at: u.created_at || null }))); + }); + } // Ablaufdatum berechnen fuer Clients const result = rows.map(u => { const out = { ...u }; @@ -354,6 +362,121 @@ app.post('/api/admin/sync', 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.get(/^\/images\/(fulls|thumbs)\/(.+)$/, serveProtectedImage); diff --git a/entrypoint.sh b/entrypoint.sh index f1f5621..c0dcf50 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -3,10 +3,21 @@ FULLS_DIR="/app/public/images/fulls" THUMBS_DIR="/app/public/images/thumbs" +# ImageMagick 7 (Alpine) nutzt "magick" statt "convert" +if command -v magick >/dev/null 2>&1; then + IM_CMD="magick" +elif command -v convert >/dev/null 2>&1; then + IM_CMD="convert" +else + echo "FEHLER: Weder magick noch convert gefunden! Thumbnails koennen nicht erzeugt werden." + IM_CMD="" +fi + # Thumbnails fuer einen Quell- und Zielordner generieren generate_thumbs_for_dir() { src_dir="$1" dst_dir="$2" + [ -z "$IM_CMD" ] && return mkdir -p "$dst_dir" for img in "$src_dir"/*; do [ -f "$img" ] || continue @@ -21,7 +32,10 @@ generate_thumbs_for_dir() { if [ ! -f "$dst_dir/$filename" ] || [ "$img" -nt "$dst_dir/$filename" ]; then echo "Thumbnail erstellen: $dst_dir/$filename" - convert "$img" -resize 512x512 -quality 80 "$dst_dir/$filename" 2>/dev/null + $IM_CMD "$img" -resize 512x512 -quality 80 "$dst_dir/$filename" + if [ $? -ne 0 ]; then + echo "WARNUNG: Thumbnail fehlgeschlagen fuer $filename" + fi fi done } diff --git a/index.html b/index.html index 6e33c78..6ce9fba 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,6 @@ layout: default