.fullwidth {
    width: 100%;
}

.viewportheight {
    height: 100vh;
}

.centered {
    margin-left: auto !important;
    margin-right: auto !important;
}

.responsive {
    width: 100%;
    height: auto;
}

.responsive img {
    width: 100%;
    height: auto;
}

.responsive figure {
    width: 100%;
    height: auto;
}

.responsive-width {
    width: 100%;
}

.responsive-width img {
    width: 100%;
}

.responsive-width figure {
    width: 100%;
}

.responsive-height {
    height: 100%;
}

.responsive-height img {
    height: 100%;
}

.responsive-height figure {
    height: 100%;
}

video.responsive {
    width: 100%;
    height: auto;
}

.limit {
    max-width: 100%;
}

.limit img {
    max-width: 100%;
}

.clip {
    overflow: clip;
}

.clip-x {
    overflow-x: clip;
}

.box {
    display: block;
    pointer-events: all;
}

.center {
    text-align: center !important;
}

.align-left {
    text-align: left !important;
}

.align-left * {
    text-align: left !important;
}

.align-right {
    text-align: right !important;
}

.align-right * {
    text-align: right !important;
}

.align-center {
    text-align: center !important;
}

.align-center * {
    text-align: center !important;
}

.baseline {
    vertical-align: baseline !important;
}

.baseline * {
    vertical-align: baseline !important;
}

.margin-center * {
    margin-left: auto !important;
    margin-right: auto !important;
}

.margin-right * {
    margin-left: auto !important;
    margin-right: 0 !important;
}

.margin-left * {
    margin-left: 0 !important;
    margin-right: auto !important;
}

.keepmargins {
    padding-top: 1px;
    padding-bottom: 1px;
}

.middle, .middle * {
    vertical-align: middle !important;
}

.hyphenate, .hyphenate * {
    overflow-wrap: break-word;
    word-wrap: break-word;
    hyphens: auto;
}

.break-word, .break-word * {
    overflow-wrap: break-word;
    word-wrap: break-word;
}

.center-element {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translateY(-50%) translateX(-50%);
}

.center-element-horizontal {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
}

.center-element-vertical {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
}

.caption-top-right {
    position: absolute;
    top: 0;
    right: 0;
}

.caption-middle-right {
    position: absolute;
    top: 50%;
    right: 0;
}

.caption-bottom-right {
    position: absolute;
    bottom: 0;
    right: 0;
}

.caption-below-right {
    text-align: right !important;
    display: block !important;
    width: 100%;
}

.caption-top-center {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    text-align: center !important;
}

.caption-middle-center {
    position: absolute;
    top: 50%;
    left: 0;
    right: 0;
    text-align: center !important;
    transform: translateY(-50%)
}

.caption-bottom-center {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    text-align: center !important;
}

.caption-below-center {
    text-align: center !important;
    display: block !important;
    width: 100%;
}

.caption-top-left {
    position: absolute;
    top: 0;
    left: 0;
}

.caption-middle-left {
    position: absolute;
    top: 50%;
    left: 0;
}

.caption-bottom-left {
    position: absolute;
    bottom: 0;
    left: 0;
}

.caption-below-left {
    text-align: left !important;
    display: block !important;
    width: 100%;
}

.caption-overlay {
    display: inline;
    z-index: 1;
}

.caption-overlay .caption-invisible {
    display: none;
}

span.caption-overlay {
    pointer-events: none;
}

.block {
    display: block;
}

.inline-block {
    display: inline-block;
}

.absolute {
    position: absolute;
}

.relative {
    position: relative;
}

.static {
    position: static;
}

.fixed {
    position: fixed;
}

.cover {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
}

.high-z {
    position: relative;
    z-index: 999999;
}

.ellipsis {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.nowrap {
    white-space: nowrap;
}

.remove-margin-bottom * {
    margin-bottom: 0 !important;
}

.remove-last-margin-bottom *:last-child {
    margin-bottom: 0 !important;
}

.remove-margin {
    margin: 0 !important;
}

.hide {
    display: none !important;
}

.hidden {
    display: none !important;
}

.pointer {
    cursor: pointer;
}

.pointer-events-none {
    pointer-events: none;
}

.pointer-events-auto {
    pointer-events: auto;
}

.animated {
    transition: all 0.4s ease;
}

.animated-slow {
    transition: all 0.6s ease;
}

.animated-fast {
    transition: all 0.2s ease;
}

.notransition, .notransition * {
    transition: none !important;
}

.fixed-screen {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
}

.fixed-top {
    position: fixed;
    top: 0;
}

.fixed-bottom {
    position: fixed;
    bottom: 0;
}

.table {
    display: table !important;
}

.table-row {
    display: table-row !important;
}

.table-cell {
    display: table-cell !important;
}

.rotate {
    display: inline-block;
    overflow: hidden;
}

.rotate-inner {
    display: inline-block;
    white-space: nowrap;
}

.rotate-clockwise {
    transform: rotate(90deg);
    transform-origin: 0 0;
}

.rotate-counter-clockwise {
    transform: translate(0, 100%) rotate(-90deg);
    transform-origin: 0 0;
}

.rotate-inner:after {
    content: "";
    float: left;
    margin-top: 100%;
}

.object-fit-fill {
    object-fit: fill;
}

.object-fit-contain {
    object-fit: contain;
}

.object-fit-cover {
    object-fit: cover;
    width: 100%;
    height: 100%;
}

.object-fit-none {
    object-fit: none;
}

.object-fit-scale-down {
    object-fit: scale-down;
}

.space-evenly:before, .space-evenly:after {
    content: '';
    display: block;
}

.flex-row {
    display: flex;
    flex-direction: row;
}

.flex-column {
    display: flex;
    flex-direction: column;
}

.inline-flex-row {
    display: inline-flex !important;
    flex-direction: row;
}

.inline-flex-column {
    display: inline-flex !important;
    flex-direction: column;
}

.flex-wrap {
    flex-wrap: wrap;
}

.flex-wrap-reverse {
    flex-wrap: wrap-reverse;
}

.flex-nowrap {
    flex-wrap: nowrap;
}

.flex-align-center {
    align-items: center;
}

.flex-align-start {
    align-items: flex-start;
}

.flex-align-end {
    align-items: flex-end;
}

.flex-stretch {
    align-items: stretch;
}

.flex-space-between {
    justify-content: space-between;
}

.flex-space-around {
    justify-content: space-around;
}

.flex-center {
    display: flex;
    align-items: center;
    justify-content: center;
}

.flex-center-row {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
}

.flex-center-column {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.flex-stretch {
    align-items: stretch;
}

.flex-top-left {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    justify-content: flex-start;
}

.flex-top-center {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    justify-content: center;
}

.flex-top-right {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    justify-content: flex-end;
}

.flex-center-left {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-start;
}

.flex-center-center {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
}

.flex-center-right {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-end;
}

.flex-bottom-left {
    display: flex;
    flex-direction: row;
    align-items: flex-end;
    justify-content: flex-start;
}

.flex-bottom-center {
    display: flex;
    flex-direction: row;
    align-items: flex-end;
    justify-content: center;
}

.flex-bottom-right {
    display: flex;
    flex-direction: row;
    align-items: flex-end;
    justify-content: flex-end;
}

.flex-grow {
    flex: 1 0 auto;
}

.flex-samesize * {
    flex: 1 1 0;
}

.flex-cover-grow {
    flex: 1 1 auto;
    align-self: stretch;
}

.flex-fill {
    display: flex;
    align-items: stretch;
}

.flex-fill * {
    flex: 1 0 auto;
}

.hover-caption-container {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    opacity: 0;
}

.hover-caption-content {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 100%;
    text-align: center;
}

.hover-caption-container:hover, a:hover .hover-caption-container, a.hover .hover-caption-container {
    opacity: 1;
}

.transition-ease-fast {
    transition: all 0.2s ease 0s;
}

.transition-ease-normal {
    transition: all 0.4s ease 0s;
}

.transition-ease-slow {
    transition: all 0.6s ease 0s;
}

.responsive-video iframe, .responsive-video video {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

.responsive-video {
    position: relative;
    padding-bottom: 56.25%;
    padding-top: 0;
    height: 0;
    overflow: hidden;
}

.responsive-iframe {
    position: relative;
    overflow: hidden;
}

div:has(> .background-video) {
    position: relative;
    overflow: hidden;
}

.background-video {
    position: absolute;
    width: auto;
    height: auto;
    min-width: 100%;
    min-height: 100%;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: -1;
}

.responsive-iframe iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

.aspect-ratio-box-4-by-1 {
    aspect-ratio: 4/1;
}

.aspect-ratio-box-3-by-1 {
    aspect-ratio: 3/1;
}

.aspect-ratio-box-21-by-9 {
    aspect-ratio: 21/9;
}

.aspect-ratio-box-2-by-1 {
    aspect-ratio: 2/1;
}

.aspect-ratio-box-16-by-9 {
    aspect-ratio: 16/9;
}

.aspect-ratio-box-16-by-10 {
    aspect-ratio: 16/10;
}

.aspect-ratio-box-3-by-2 {
    aspect-ratio: 3/2;
}

.aspect-ratio-box-4-by-3 {
    aspect-ratio: 4/3;
}

.aspect-ratio-box-5-by-4 {
    aspect-ratio: 5/4;
}

.aspect-ratio-box-1-by-1 {
    aspect-ratio: 1;
}

.aspect-ratio-box-2-by-3 {
    aspect-ratio: 2/3;
}

.aspect-ratio-box-1-by-2 {
    aspect-ratio: 1/2;
}

.placeholder {
    position: relative;
    background-color: #EEEEEE;
    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAAwCAIAAADCXI5eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNzU4NTA2MDIwNzQxMUUzOUEyMEY0NDFBRDNDQ0Y1RCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxRUNGRDM2Q0FCRjAxMUVBOTY3RUVGNEUyMjlDRTdBRSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxRUNGRDM2QkFCRjAxMUVBOTY3RUVGNEUyMjlDRTdBRSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjhmODNhYmYtOWI0ZC00NTQxLTk4MzYtNzhhNmRkNGUwYWJjIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA3NTg1MDYwMjA3NDExRTM5QTIwRjQ0MUFEM0NDRjVEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+BLlTRQAABI9JREFUeNrUmtlO6zAURWkwlOnSFpCYRJnUigd4QeL/vwAk5lGCyyAolHkoM6z2SL5RiNMkvRDjhyo0ibO8s8/xsUuqXC47jtPe3n57e3t5efn29pZKpZpsah8fH0qpXC7X1dVVqVTe399Vc3NzOp3+W2tPT0+pWrMNmgbk2NjYyMjI4+Ojamtr29vbW19f7+zsZCicbrKvoePz8/Pq6irH+XxeXV9fozHEra2tnEBs3GIVMX5I1xrHu7u7+EThY1jRmE+cPTo6Kq/DHo1pp6enuAJZ7+7uAFZEnvgGjcfHxwuFAqetUhoD87m1tYUdGMDr66uS0fCJK0Cv1JqFttamhVa5c8VXV/CNpBd9AwPFSD+fPdzfqOCrOzo6QDw6Orq/vycgcBVx0NPTw5cvLy9JJUcVQIyHzs/PMRP2l4CoJnalBgYGsD7yS163BVo0hnhhYQF76PwNIoFLXgd3ZmaGUwwjAX/7D0UpDIDGYJEHtaU4ICCy2ezJycnBwYH7VPLQvHpSI67wxZJJVXIno4r6SPokNhoZrWOyB5GHGUxd81SIuYZ3EmmmwHX7+/tXV1cETGxuI3Tdco9rMHT4QORKYoNEtLKyQhXBgGNzO6ZMjgECmCSNoLdMqGGIQaTIWVtby2Qy3DU/Px+b2x+aTok2U3KAAG/8qTXmmpAa4wqI0YJuMQlpPja3PzQZra+vj3x8c3PjEZs/pRKktAqT74RYql9CsKWlRXzl5o5aEhs9TcorFouDg4PUrlDKXMobYIGDutPT07yKuqWVm5i6B0e5sycaCzdpKpLejulhdMcBM8jU1BQPRhtYERj55+bm+vv7Jb3U9THEGxsbaOwm1oGB3nQblVsFPBKB8R/16tDQkK49ZADBxDIHicYQezT2XMl4qCuZemdnZwkSKRniKK25hY9PusMPhBEPqFtyaOKvrjBxi954L4y/Q62sgJaVmM4VAdDaFRJ5wcTuUkfyYBjuOMtBMgCSy6KhcWKtS3i9I0PTHdUSUxrckr/CR14kvenKlFKdqMSlUonqj5kCMje3Jt7c3IxB7OEmLqlP9IopPjSxCPHS0hJALF4oTbXenNUa1428uj6Bm+g/PDyUniOkPF9XCLEUllDCzQETDWe3t7cb0djDzSM83osMLa5YXFzUxO6qDWlhBfq/EDc0uXiI0Zihe4p34UZviX3ffJIAtLhieXnZrfHXDCgD+LGllxMceR4fB+xcJb9GlDg7Pj72dUXiTZkWtmjMushCYqPSFHcEH0neQuIge6Ax6HbusTtNv7D9SmgVsNx6eHhIal+URwfsyirTFkJ3dzerLFOd9d2NBQcApv0JZboH4nw+n1Qgyu69aV2nPJe67wmzEfPd6L4z7r+ijKJHfrq1LeyoIgHTq5jqD7hSmjEU5pGzszPSM6dt+0kOMPCkJmP2UJlMhnqIyCPmWJlR0Fn44yfE4JFP0LQKzMJpeHh4Z2eHaOWrSPvNPxyXaFosFrPZrCJCJycnkZ01GXrbJrMWG1cUCoWJiYlqSimXy1IuX1xcWPuvExDncrne3l7ZMPoUYAAd4L/OvipSGwAAAABJRU5ErkJggg==');
    background-position: center;
    background-repeat: no-repeat;
}

.placeholder-caption {
    font-family: sans-serif;
    font-size: 0.8rem;
    color: #808080;
    padding: 0.5rem;
}

.zoom-on-hover {
    overflow: hidden;
    position: relative;
}

.zoom-on-hover img {
    transition: transform 400ms ease;
    overflow: hidden;
}

.zoom-on-hover:hover img {
    transform: scale(1.1);
}

.zoom-on-hover.zoom-120:hover img {
    transform: scale(1.2);
}

.zoom-on-hover.zoom-130:hover img {
    transform: scale(1.3);
}

.zoom-on-hover.zoom-140:hover img {
    transform: scale(1.4);
}