');mask-image:url('data:image/svg+xml;utf8, ');mask-mode:alpha;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}}:root :where(.wp-block-image.is-style-rounded img,.wp-block-image .is-style-rounded img){border-radius:9999px}.wp-block-image figure{margin:0}.wp-lightbox-container{display:flex;flex-direction:column;position:relative}.wp-lightbox-container img{cursor:zoom-in}.wp-lightbox-container img:hover+button{opacity:1}.wp-lightbox-container button{align-items:center;-webkit-backdrop-filter:blur(16px) saturate(180%);backdrop-filter:blur(16px) saturate(180%);background-color:#5a5a5a40;border:none;border-radius:4px;cursor:zoom-in;display:flex;height:20px;justify-content:center;opacity:0;padding:0;position:absolute;right:16px;text-align:center;top:16px;transition:opacity .2s ease;width:20px;z-index:100}.wp-lightbox-container button:focus-visible{outline:3px auto #5a5a5a40;outline:3px auto -webkit-focus-ring-color;outline-offset:3px}.wp-lightbox-container button:hover{cursor:pointer;opacity:1}.wp-lightbox-container button:focus{opacity:1}.wp-lightbox-container button:focus,.wp-lightbox-container button:hover,.wp-lightbox-container button:not(:hover):not(:active):not(.has-background){background-color:#5a5a5a40;border:none}.wp-lightbox-overlay{box-sizing:border-box;cursor:zoom-out;height:100vh;left:0;overflow:hidden;position:fixed;top:0;visibility:hidden;width:100%;z-index:100000}.wp-lightbox-overlay .close-button{align-items:center;cursor:pointer;display:flex;justify-content:center;min-height:40px;min-width:40px;padding:0;position:absolute;right:calc(env(safe-area-inset-right) + 16px);top:calc(env(safe-area-inset-top) + 16px);z-index:5000000}.wp-lightbox-overlay .close-button:focus,.wp-lightbox-overlay .close-button:hover,.wp-lightbox-overlay .close-button:not(:hover):not(:active):not(.has-background){background:0 0;border:none}.wp-lightbox-overlay .lightbox-image-container{height:var(--wp--lightbox-container-height);left:50%;overflow:hidden;position:absolute;top:50%;transform:translate(-50%,-50%);transform-origin:top left;width:var(--wp--lightbox-container-width);z-index:9999999999}.wp-lightbox-overlay .wp-block-image{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;margin:0;position:relative;transform-origin:0 0;width:100%;z-index:3000000}.wp-lightbox-overlay .wp-block-image img{height:var(--wp--lightbox-image-height);min-height:var(--wp--lightbox-image-height);min-width:var(--wp--lightbox-image-width);width:var(--wp--lightbox-image-width)}.wp-lightbox-overlay .wp-block-image figcaption{display:none}.wp-lightbox-overlay button{background:0 0;border:none}.wp-lightbox-overlay .scrim{background-color:#fff;height:100%;opacity:.9;position:absolute;width:100%;z-index:2000000}.wp-lightbox-overlay.active{animation:turn-on-visibility .25s both;visibility:visible}.wp-lightbox-overlay.active img{animation:turn-on-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active){animation:turn-off-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active) img{animation:turn-off-visibility .25s both}@media (prefers-reduced-motion:no-preference){.wp-lightbox-overlay.zoom.active{animation:none;opacity:1;visibility:visible}.wp-lightbox-overlay.zoom.active .lightbox-image-container{animation:lightbox-zoom-in .4s}.wp-lightbox-overlay.zoom.active .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.active .scrim{animation:turn-on-visibility .4s forwards}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active){animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container{animation:lightbox-zoom-out .4s}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .scrim{animation:turn-off-visibility .4s forwards}}@keyframes turn-on-visibility{0%{opacity:0}to{opacity:1}}@keyframes turn-off-visibility{0%{opacity:1;visibility:visible}99%{opacity:0;visibility:visible}to{opacity:0;visibility:hidden}}@keyframes lightbox-zoom-in{0%{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale))}to{transform:translate(-50%,-50%) scale(1)}}@keyframes lightbox-zoom-out{0%{transform:translate(-50%,-50%) scale(1);visibility:visible}99%{visibility:visible}to{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale));visibility:hidden}}ol.wp-block-latest-comments{box-sizing:border-box;margin-left:0}:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment)){line-height:1.1}:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment-excerpt p)){line-height:1.8}.has-dates :where(.wp-block-latest-comments:not([style*=line-height])),.has-excerpts :where(.wp-block-latest-comments:not([style*=line-height])){line-height:1.5}.wp-block-latest-comments .wp-block-latest-comments{padding-left:0}.wp-block-latest-comments__comment{list-style:none;margin-bottom:1em}.has-avatars .wp-block-latest-comments__comment{list-style:none;min-height:2.25em}.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-excerpt,.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-meta{margin-left:3.25em}.wp-block-latest-comments__comment-excerpt p{font-size:.875em;margin:.36em 0 1.4em}.wp-block-latest-comments__comment-date{display:block;font-size:.75em}.wp-block-latest-comments .avatar,.wp-block-latest-comments__comment-avatar{border-radius:1.5em;display:block;float:left;height:2.5em;margin-right:.75em;width:2.5em}.wp-block-latest-comments[class*=-font-size] a,.wp-block-latest-comments[style*=font-size] a{font-size:inherit}.wp-block-latest-posts{box-sizing:border-box}.wp-block-latest-posts.alignleft{margin-right:2em}.wp-block-latest-posts.alignright{margin-left:2em}.wp-block-latest-posts.wp-block-latest-posts__list{list-style:none}.wp-block-latest-posts.wp-block-latest-posts__list li{clear:both;overflow-wrap:break-word}.wp-block-latest-posts.is-grid{display:flex;flex-wrap:wrap}.wp-block-latest-posts.is-grid li{margin:0 1.25em 1.25em 0;width:100%}@media (min-width:600px){.wp-block-latest-posts.columns-2 li{width:calc(50% - .625em)}.wp-block-latest-posts.columns-2 li:nth-child(2n){margin-right:0}.wp-block-latest-posts.columns-3 li{width:calc(33.33333% - .83333em)}.wp-block-latest-posts.columns-3 li:nth-child(3n){margin-right:0}.wp-block-latest-posts.columns-4 li{width:calc(25% - .9375em)}.wp-block-latest-posts.columns-4 li:nth-child(4n){margin-right:0}.wp-block-latest-posts.columns-5 li{width:calc(20% - 1em)}.wp-block-latest-posts.columns-5 li:nth-child(5n){margin-right:0}.wp-block-latest-posts.columns-6 li{width:calc(16.66667% - 1.04167em)}.wp-block-latest-posts.columns-6 li:nth-child(6n){margin-right:0}}:root :where(.wp-block-latest-posts.is-grid){padding:0}:root :where(.wp-block-latest-posts.wp-block-latest-posts__list){padding-left:0}.wp-block-latest-posts__post-author,.wp-block-latest-posts__post-date{display:block;font-size:.8125em}.wp-block-latest-posts__post-excerpt{margin-bottom:1em;margin-top:.5em}.wp-block-latest-posts__featured-image a{display:inline-block}.wp-block-latest-posts__featured-image img{height:auto;max-width:100%;width:auto}.wp-block-latest-posts__featured-image.alignleft{float:left;margin-right:1em}.wp-block-latest-posts__featured-image.alignright{float:right;margin-left:1em}.wp-block-latest-posts__featured-image.aligncenter{margin-bottom:1em;text-align:center}ol,ul{box-sizing:border-box}:root :where(ul.has-background,ol.has-background){padding:1.25em 2.375em}.wp-block-media-text{box-sizing:border-box;direction:ltr;display:grid;grid-template-columns:50% 1fr;grid-template-rows:auto}.wp-block-media-text.has-media-on-the-right{grid-template-columns:1fr 50%}.wp-block-media-text.is-vertically-aligned-top>.wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-top>.wp-block-media-text__media{align-self:start}.wp-block-media-text.is-vertically-aligned-center>.wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-center>.wp-block-media-text__media,.wp-block-media-text>.wp-block-media-text__content,.wp-block-media-text>.wp-block-media-text__media{align-self:center}.wp-block-media-text.is-vertically-aligned-bottom>.wp-block-media-text__content,.wp-block-media-text.is-vertically-aligned-bottom>.wp-block-media-text__media{align-self:end}.wp-block-media-text>.wp-block-media-text__media{grid-column:1;grid-row:1;margin:0}.wp-block-media-text>.wp-block-media-text__content{direction:ltr;grid-column:2;grid-row:1;padding:0 8%;word-break:break-word}.wp-block-media-text.has-media-on-the-right>.wp-block-media-text__media{grid-column:2;grid-row:1}.wp-block-media-text.has-media-on-the-right>.wp-block-media-text__content{grid-column:1;grid-row:1}.wp-block-media-text__media img,.wp-block-media-text__media video{height:auto;max-width:unset;vertical-align:middle;width:100%}.wp-block-media-text.is-image-fill>.wp-block-media-text__media{background-size:cover;height:100%;min-height:250px}.wp-block-media-text.is-image-fill>.wp-block-media-text__media>a{display:block;height:100%}.wp-block-media-text.is-image-fill>.wp-block-media-text__media img{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border:0}@media (max-width:600px){.wp-block-media-text.is-stacked-on-mobile{grid-template-columns:100%!important}.wp-block-media-text.is-stacked-on-mobile>.wp-block-media-text__media{grid-column:1;grid-row:1}.wp-block-media-text.is-stacked-on-mobile>.wp-block-media-text__content{grid-column:1;grid-row:2}}.wp-block-navigation{position:relative;--navigation-layout-justification-setting:flex-start;--navigation-layout-direction:row;--navigation-layout-wrap:wrap;--navigation-layout-justify:flex-start;--navigation-layout-align:center}.wp-block-navigation ul{margin-bottom:0;margin-left:0;margin-top:0;padding-left:0}.wp-block-navigation ul,.wp-block-navigation ul li{list-style:none;padding:0}.wp-block-navigation .wp-block-navigation-item{align-items:center;display:flex;position:relative}.wp-block-navigation .wp-block-navigation-item .wp-block-navigation__submenu-container:empty{display:none}.wp-block-navigation .wp-block-navigation-item__content{display:block}.wp-block-navigation .wp-block-navigation-item__content.wp-block-navigation-item__content{color:inherit}.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content,.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content:active,.wp-block-navigation.has-text-decoration-underline .wp-block-navigation-item__content:focus{text-decoration:underline}.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content,.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content:active,.wp-block-navigation.has-text-decoration-line-through .wp-block-navigation-item__content:focus{text-decoration:line-through}.wp-block-navigation :where(a),.wp-block-navigation :where(a:active),.wp-block-navigation :where(a:focus){text-decoration:none}.wp-block-navigation .wp-block-navigation__submenu-icon{align-self:center;background-color:inherit;border:none;color:currentColor;display:inline-block;font-size:inherit;height:.6em;line-height:0;margin-left:.25em;padding:0;width:.6em}.wp-block-navigation .wp-block-navigation__submenu-icon svg{display:inline-block;stroke:currentColor;height:inherit;margin-top:.075em;width:inherit}.wp-block-navigation.is-vertical{--navigation-layout-direction:column;--navigation-layout-justify:initial;--navigation-layout-align:flex-start}.wp-block-navigation.no-wrap{--navigation-layout-wrap:nowrap}.wp-block-navigation.items-justified-center{--navigation-layout-justification-setting:center;--navigation-layout-justify:center}.wp-block-navigation.items-justified-center.is-vertical{--navigation-layout-align:center}.wp-block-navigation.items-justified-right{--navigation-layout-justification-setting:flex-end;--navigation-layout-justify:flex-end}.wp-block-navigation.items-justified-right.is-vertical{--navigation-layout-align:flex-end}.wp-block-navigation.items-justified-space-between{--navigation-layout-justification-setting:space-between;--navigation-layout-justify:space-between}.wp-block-navigation .has-child .wp-block-navigation__submenu-container{align-items:normal;background-color:inherit;color:inherit;display:flex;flex-direction:column;height:0;left:-1px;opacity:0;overflow:hidden;position:absolute;top:100%;transition:opacity .1s linear;visibility:hidden;width:0;z-index:2}.wp-block-navigation .has-child .wp-block-navigation__submenu-container>.wp-block-navigation-item>.wp-block-navigation-item__content{display:flex;flex-grow:1}.wp-block-navigation .has-child .wp-block-navigation__submenu-container>.wp-block-navigation-item>.wp-block-navigation-item__content .wp-block-navigation__submenu-icon{margin-left:auto;margin-right:0}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation-item__content{margin:0}@media (min-width:782px){.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:100%;top:-1px}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container:before{background:#0000;content:"";display:block;height:100%;position:absolute;right:100%;width:.5em}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-icon{margin-right:.25em}.wp-block-navigation .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-icon svg{transform:rotate(-90deg)}}.wp-block-navigation .has-child .wp-block-navigation-submenu__toggle[aria-expanded=true]~.wp-block-navigation__submenu-container,.wp-block-navigation .has-child:not(.open-on-click):hover>.wp-block-navigation__submenu-container,.wp-block-navigation .has-child:not(.open-on-click):not(.open-on-hover-click):focus-within>.wp-block-navigation__submenu-container{height:auto;min-width:200px;opacity:1;overflow:visible;visibility:visible;width:auto}.wp-block-navigation.has-background .has-child .wp-block-navigation__submenu-container{left:0;top:100%}@media (min-width:782px){.wp-block-navigation.has-background .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:100%;top:0}}.wp-block-navigation-submenu{display:flex;position:relative}.wp-block-navigation-submenu .wp-block-navigation__submenu-icon svg{stroke:currentColor}button.wp-block-navigation-item__content{background-color:initial;border:none;color:currentColor;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;text-align:left;text-transform:inherit}.wp-block-navigation-submenu__toggle{cursor:pointer}.wp-block-navigation-item.open-on-click .wp-block-navigation-submenu__toggle{padding-left:0;padding-right:.85em}.wp-block-navigation-item.open-on-click .wp-block-navigation-submenu__toggle+.wp-block-navigation__submenu-icon{margin-left:-.6em;pointer-events:none}.wp-block-navigation-item.open-on-click button.wp-block-navigation-item__content:not(.wp-block-navigation-submenu__toggle){padding:0}.wp-block-navigation .wp-block-page-list,.wp-block-navigation__container,.wp-block-navigation__responsive-close,.wp-block-navigation__responsive-container,.wp-block-navigation__responsive-container-content,.wp-block-navigation__responsive-dialog{gap:inherit}:where(.wp-block-navigation.has-background .wp-block-navigation-item a:not(.wp-element-button)),:where(.wp-block-navigation.has-background .wp-block-navigation-submenu a:not(.wp-element-button)){padding:.5em 1em}:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item a:not(.wp-element-button)),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-submenu a:not(.wp-element-button)),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-submenu button.wp-block-navigation-item__content),:where(.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-pages-list__item button.wp-block-navigation-item__content){padding:.5em 1em}.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container{left:auto;right:0}.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:-1px;right:-1px}@media (min-width:782px){.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-right .wp-block-page-list>.has-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between .wp-block-page-list>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container,.wp-block-navigation.items-justified-space-between>.wp-block-navigation__container>.has-child:last-child .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container{left:auto;right:100%}}.wp-block-navigation:not(.has-background) .wp-block-navigation__submenu-container{background-color:#fff;border:1px solid #00000026}.wp-block-navigation.has-background .wp-block-navigation__submenu-container{background-color:inherit}.wp-block-navigation:not(.has-text-color) .wp-block-navigation__submenu-container{color:#000}.wp-block-navigation__container{align-items:var(--navigation-layout-align,initial);display:flex;flex-direction:var(--navigation-layout-direction,initial);flex-wrap:var(--navigation-layout-wrap,wrap);justify-content:var(--navigation-layout-justify,initial);list-style:none;margin:0;padding-left:0}.wp-block-navigation__container .is-responsive{display:none}.wp-block-navigation__container:only-child,.wp-block-page-list:only-child{flex-grow:1}@keyframes overlay-menu__fade-in-animation{0%{opacity:0;transform:translateY(.5em)}to{opacity:1;transform:translateY(0)}}.wp-block-navigation__responsive-container{bottom:0;display:none;left:0;position:fixed;right:0;top:0}.wp-block-navigation__responsive-container :where(.wp-block-navigation-item a){color:inherit}.wp-block-navigation__responsive-container .wp-block-navigation__responsive-container-content{align-items:var(--navigation-layout-align,initial);display:flex;flex-direction:var(--navigation-layout-direction,initial);flex-wrap:var(--navigation-layout-wrap,wrap);justify-content:var(--navigation-layout-justify,initial)}.wp-block-navigation__responsive-container:not(.is-menu-open.is-menu-open){background-color:inherit!important;color:inherit!important}.wp-block-navigation__responsive-container.is-menu-open{animation:overlay-menu__fade-in-animation .1s ease-out;animation-fill-mode:forwards;background-color:inherit;display:flex;flex-direction:column;overflow:auto;padding:clamp(1rem,var(--wp--style--root--padding-top),20rem) clamp(1rem,var(--wp--style--root--padding-right),20rem) clamp(1rem,var(--wp--style--root--padding-bottom),20rem) clamp(1rem,var(--wp--style--root--padding-left),20em);z-index:100000}@media (prefers-reduced-motion:reduce){.wp-block-navigation__responsive-container.is-menu-open{animation-delay:0s;animation-duration:1ms}}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content{align-items:var(--navigation-layout-justification-setting,inherit);display:flex;flex-direction:column;flex-wrap:nowrap;overflow:visible;padding-top:calc(2rem + 24px)}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-page-list{justify-content:flex-start}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-icon{display:none}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .has-child .wp-block-navigation__submenu-container{border:none;height:auto;min-width:200px;opacity:1;overflow:initial;padding-left:2rem;padding-right:2rem;position:static;visibility:visible;width:auto}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container{gap:inherit}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container{padding-top:var(--wp--style--block-gap,2em)}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item__content{padding:0}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation-item,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-page-list{align-items:var(--navigation-layout-justification-setting,initial);display:flex;flex-direction:column}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item .wp-block-navigation__submenu-container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container,.wp-block-navigation__responsive-container.is-menu-open .wp-block-page-list{background:#0000!important;color:inherit!important}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container{left:auto;right:auto}@media (min-width:600px){.wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open){background-color:inherit;display:block;position:relative;width:100%;z-index:auto}.wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) .wp-block-navigation__responsive-container-close{display:none}.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container{left:0}}.wp-block-navigation:not(.has-background) .wp-block-navigation__responsive-container.is-menu-open{background-color:#fff}.wp-block-navigation:not(.has-text-color) .wp-block-navigation__responsive-container.is-menu-open{color:#000}.wp-block-navigation__toggle_button_label{font-size:1rem;font-weight:700}.wp-block-navigation__responsive-container-close,.wp-block-navigation__responsive-container-open{background:#0000;border:none;color:currentColor;cursor:pointer;margin:0;padding:0;text-transform:inherit;vertical-align:middle}.wp-block-navigation__responsive-container-close svg,.wp-block-navigation__responsive-container-open svg{fill:currentColor;display:block;height:24px;pointer-events:none;width:24px}.wp-block-navigation__responsive-container-open{display:flex}.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open{font-family:inherit;font-size:inherit;font-weight:inherit}@media (min-width:600px){.wp-block-navigation__responsive-container-open:not(.always-shown){display:none}}.wp-block-navigation__responsive-container-close{position:absolute;right:0;top:0;z-index:2}.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close.wp-block-navigation__responsive-container-close{font-family:inherit;font-size:inherit;font-weight:inherit}.wp-block-navigation__responsive-close{width:100%}.has-modal-open .wp-block-navigation__responsive-close{margin-left:auto;margin-right:auto;max-width:var(--wp--style--global--wide-size,100%)}.wp-block-navigation__responsive-close:focus{outline:none}.is-menu-open .wp-block-navigation__responsive-close,.is-menu-open .wp-block-navigation__responsive-container-content,.is-menu-open .wp-block-navigation__responsive-dialog{box-sizing:border-box}.wp-block-navigation__responsive-dialog{position:relative}.has-modal-open .admin-bar .is-menu-open .wp-block-navigation__responsive-dialog{margin-top:46px}@media (min-width:782px){.has-modal-open .admin-bar .is-menu-open .wp-block-navigation__responsive-dialog{margin-top:32px}}html.has-modal-open{overflow:hidden}.wp-block-navigation .wp-block-navigation-item__label{overflow-wrap:break-word}.wp-block-navigation .wp-block-navigation-item__description{display:none}.link-ui-tools{border-top:1px solid #f0f0f0;padding:8px}.link-ui-block-inserter{padding-top:8px}.link-ui-block-inserter__back{margin-left:8px;text-transform:uppercase}.wp-block-navigation .wp-block-page-list{align-items:var(--navigation-layout-align,initial);background-color:inherit;display:flex;flex-direction:var(--navigation-layout-direction,initial);flex-wrap:var(--navigation-layout-wrap,wrap);justify-content:var(--navigation-layout-justify,initial)}.wp-block-navigation .wp-block-navigation-item{background-color:inherit}.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter {float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter {float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg}.wp-block-post-author{display:flex;flex-wrap:wrap}.wp-block-post-author__byline{font-size:.5em;margin-bottom:0;margin-top:0;width:100%}.wp-block-post-author__avatar{margin-right:1em}.wp-block-post-author__bio{font-size:.7em;margin-bottom:.7em}.wp-block-post-author__content{flex-basis:0;flex-grow:1}.wp-block-post-author__name{margin:0}:where(.wp-block-post-comments-form) input:not([type=submit]),:where(.wp-block-post-comments-form) textarea{border:1px solid #949494;font-family:inherit;font-size:1em}:where(.wp-block-post-comments-form) input:where(:not([type=submit]):not([type=checkbox])),:where(.wp-block-post-comments-form) textarea{padding:calc(.667em + 2px)}.wp-block-post-comments-form{box-sizing:border-box}.wp-block-post-comments-form[style*=font-weight] :where(.comment-reply-title){font-weight:inherit}.wp-block-post-comments-form[style*=font-family] :where(.comment-reply-title){font-family:inherit}.wp-block-post-comments-form[class*=-font-size] :where(.comment-reply-title),.wp-block-post-comments-form[style*=font-size] :where(.comment-reply-title){font-size:inherit}.wp-block-post-comments-form[style*=line-height] :where(.comment-reply-title){line-height:inherit}.wp-block-post-comments-form[style*=font-style] :where(.comment-reply-title){font-style:inherit}.wp-block-post-comments-form[style*=letter-spacing] :where(.comment-reply-title){letter-spacing:inherit}.wp-block-post-comments-form input[type=submit]{box-shadow:none;cursor:pointer;display:inline-block;overflow-wrap:break-word;text-align:center}.wp-block-post-comments-form .comment-form input:not([type=submit]):not([type=checkbox]):not([type=hidden]),.wp-block-post-comments-form .comment-form textarea{box-sizing:border-box;display:block;width:100%}.wp-block-post-comments-form .comment-form-author label,.wp-block-post-comments-form .comment-form-email label,.wp-block-post-comments-form .comment-form-url label{display:block;margin-bottom:.25em}.wp-block-post-comments-form .comment-form-cookies-consent{display:flex;gap:.25em}.wp-block-post-comments-form .comment-form-cookies-consent #wp-comment-cookies-consent{margin-top:.35em}.wp-block-post-comments-form .comment-reply-title{margin-bottom:0}.wp-block-post-comments-form .comment-reply-title :where(small){font-size:var(--wp--preset--font-size--medium,smaller);margin-left:.5em}.wp-block-post-date{box-sizing:border-box}:where(.wp-block-post-excerpt){margin-bottom:var(--wp--style--block-gap);margin-top:var(--wp--style--block-gap)}.wp-block-post-excerpt__excerpt{margin-bottom:0;margin-top:0}.wp-block-post-excerpt__more-text{margin-bottom:0;margin-top:var(--wp--style--block-gap)}.wp-block-post-excerpt__more-link{display:inline-block}.wp-block-post-featured-image{margin-left:0;margin-right:0}.wp-block-post-featured-image a{display:block;height:100%}.wp-block-post-featured-image img{box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom;width:100%}.wp-block-post-featured-image.alignfull img,.wp-block-post-featured-image.alignwide img{width:100%}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim{background-color:#000;inset:0;position:absolute}.wp-block-post-featured-image{position:relative}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-gradient{background-color:initial}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-0{opacity:0}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-10{opacity:.1}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-20{opacity:.2}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-30{opacity:.3}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-40{opacity:.4}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-50{opacity:.5}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-60{opacity:.6}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-70{opacity:.7}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-80{opacity:.8}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-90{opacity:.9}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-100{opacity:1}.wp-block-post-featured-image:where(.alignleft,.alignright){width:100%}.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-previous{display:inline-block;margin-right:1ch}.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-previous:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-next{display:inline-block;margin-left:1ch}.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-next:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-post-navigation-link.has-text-align-left[style*="writing-mode: vertical-lr"],.wp-block-post-navigation-link.has-text-align-right[style*="writing-mode: vertical-rl"]{rotate:180deg}.wp-block-post-terms{box-sizing:border-box}.wp-block-post-terms .wp-block-post-terms__separator{white-space:pre-wrap}.wp-block-post-time-to-read,.wp-block-post-title{box-sizing:border-box}.wp-block-post-title{word-break:break-word}.wp-block-post-title a{display:inline-block}.wp-block-preformatted{box-sizing:border-box;white-space:pre-wrap}:where(.wp-block-preformatted.has-background){padding:1.25em 2.375em}.wp-block-pullquote{box-sizing:border-box;margin:0 0 1em;overflow-wrap:break-word;padding:4em 0;text-align:center}.wp-block-pullquote blockquote,.wp-block-pullquote cite,.wp-block-pullquote p{color:inherit}.wp-block-pullquote blockquote{margin:0}.wp-block-pullquote p{margin-top:0}.wp-block-pullquote p:last-child{margin-bottom:0}.wp-block-pullquote.alignleft,.wp-block-pullquote.alignright{max-width:420px}.wp-block-pullquote cite,.wp-block-pullquote footer{position:relative}.wp-block-pullquote .has-text-color a{color:inherit}.wp-block-pullquote.has-text-align-left blockquote{text-align:left}.wp-block-pullquote.has-text-align-right blockquote{text-align:right}.wp-block-pullquote.is-style-solid-color{border:none}.wp-block-pullquote.is-style-solid-color blockquote{margin-left:auto;margin-right:auto;max-width:60%}.wp-block-pullquote.is-style-solid-color blockquote p{font-size:2em;margin-bottom:0;margin-top:0}.wp-block-pullquote.is-style-solid-color blockquote cite{font-style:normal;text-transform:none}.wp-block-pullquote cite{color:inherit}.wp-block-post-template{list-style:none;margin-bottom:0;margin-top:0;max-width:100%;padding:0}.wp-block-post-template.is-flex-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:1.25em}.wp-block-post-template.is-flex-container>li{margin:0;width:100%}@media (min-width:600px){.wp-block-post-template.is-flex-container.is-flex-container.columns-2>li{width:calc(50% - .625em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-3>li{width:calc(33.33333% - .83333em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-4>li{width:calc(25% - .9375em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-5>li{width:calc(20% - 1em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-6>li{width:calc(16.66667% - 1.04167em)}}@media (max-width:600px){.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid{grid-template-columns:1fr}}.wp-block-post-template-is-layout-constrained>li>.alignright,.wp-block-post-template-is-layout-flow>li>.alignright{float:right;margin-inline-end:0;margin-inline-start:2em}.wp-block-post-template-is-layout-constrained>li>.alignleft,.wp-block-post-template-is-layout-flow>li>.alignleft{float:left;margin-inline-end:2em;margin-inline-start:0}.wp-block-post-template-is-layout-constrained>li>.aligncenter,.wp-block-post-template-is-layout-flow>li>.aligncenter{margin-inline-end:auto;margin-inline-start:auto}.wp-block-query-pagination>.wp-block-query-pagination-next,.wp-block-query-pagination>.wp-block-query-pagination-numbers,.wp-block-query-pagination>.wp-block-query-pagination-previous{margin-bottom:.5em;margin-right:.5em}.wp-block-query-pagination>.wp-block-query-pagination-next:last-child,.wp-block-query-pagination>.wp-block-query-pagination-numbers:last-child,.wp-block-query-pagination>.wp-block-query-pagination-previous:last-child{margin-right:0}.wp-block-query-pagination.is-content-justification-space-between>.wp-block-query-pagination-next:last-of-type{margin-inline-start:auto}.wp-block-query-pagination.is-content-justification-space-between>.wp-block-query-pagination-previous:first-child{margin-inline-end:auto}.wp-block-query-pagination .wp-block-query-pagination-previous-arrow{display:inline-block;margin-right:1ch}.wp-block-query-pagination .wp-block-query-pagination-previous-arrow:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-query-pagination .wp-block-query-pagination-next-arrow{display:inline-block;margin-left:1ch}.wp-block-query-pagination .wp-block-query-pagination-next-arrow:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-query-pagination.aligncenter{justify-content:center}.wp-block-query-title,.wp-block-quote{box-sizing:border-box}.wp-block-quote{overflow-wrap:break-word}.wp-block-quote.is-large:where(:not(.is-style-plain)),.wp-block-quote.is-style-large:where(:not(.is-style-plain)){margin-bottom:1em;padding:0 1em}.wp-block-quote.is-large:where(:not(.is-style-plain)) p,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) p{font-size:1.5em;font-style:italic;line-height:1.6}.wp-block-quote.is-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-large:where(:not(.is-style-plain)) footer,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) footer{font-size:1.125em;text-align:right}.wp-block-quote>cite{display:block}.wp-block-read-more{display:block;width:-moz-fit-content;width:fit-content}.wp-block-read-more:where(:not([style*=text-decoration])){text-decoration:none}.wp-block-read-more:where(:not([style*=text-decoration])):active,.wp-block-read-more:where(:not([style*=text-decoration])):focus{text-decoration:none}ul.wp-block-rss{list-style:none;padding:0}ul.wp-block-rss.wp-block-rss{box-sizing:border-box}ul.wp-block-rss.alignleft{margin-right:2em}ul.wp-block-rss.alignright{margin-left:2em}ul.wp-block-rss.is-grid{display:flex;flex-wrap:wrap;list-style:none;padding:0}ul.wp-block-rss.is-grid li{margin:0 1em 1em 0;width:100%}@media (min-width:600px){ul.wp-block-rss.columns-2 li{width:calc(50% - 1em)}ul.wp-block-rss.columns-3 li{width:calc(33.33333% - 1em)}ul.wp-block-rss.columns-4 li{width:calc(25% - 1em)}ul.wp-block-rss.columns-5 li{width:calc(20% - 1em)}ul.wp-block-rss.columns-6 li{width:calc(16.66667% - 1em)}}.wp-block-rss__item-author,.wp-block-rss__item-publish-date{display:block;font-size:.8125em}.wp-block-search__button{margin-left:10px;word-break:normal}.wp-block-search__button.has-icon{line-height:0}.wp-block-search__button svg{height:1.25em;min-height:24px;min-width:24px;width:1.25em;fill:currentColor;vertical-align:text-bottom}:where(.wp-block-search__button){border:1px solid #ccc;padding:6px 10px}.wp-block-search__inside-wrapper{display:flex;flex:auto;flex-wrap:nowrap;max-width:100%}.wp-block-search__label{width:100%}.wp-block-search__input{appearance:none;border:1px solid #949494;flex-grow:1;margin-left:0;margin-right:0;min-width:3rem;padding:8px;text-decoration:unset!important}.wp-block-search.wp-block-search__button-only .wp-block-search__button{flex-shrink:0;margin-left:0;max-width:100%}.wp-block-search.wp-block-search__button-only .wp-block-search__button[aria-expanded=true]{max-width:calc(100% - 100px)}.wp-block-search.wp-block-search__button-only .wp-block-search__inside-wrapper{min-width:0!important;transition-property:width}.wp-block-search.wp-block-search__button-only .wp-block-search__input{flex-basis:100%;transition-duration:.3s}.wp-block-search.wp-block-search__button-only.wp-block-search__searchfield-hidden,.wp-block-search.wp-block-search__button-only.wp-block-search__searchfield-hidden .wp-block-search__inside-wrapper{overflow:hidden}.wp-block-search.wp-block-search__button-only.wp-block-search__searchfield-hidden .wp-block-search__input{border-left-width:0!important;border-right-width:0!important;flex-basis:0;flex-grow:0;margin:0;min-width:0!important;padding-left:0!important;padding-right:0!important;width:0!important}:where(.wp-block-search__input){font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;text-transform:inherit}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper){border:1px solid #949494;box-sizing:border-box;padding:4px}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) .wp-block-search__input{border:none;border-radius:0;padding:0 4px}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) .wp-block-search__input:focus{outline:none}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) :where(.wp-block-search__button){padding:4px 8px}.wp-block-search.aligncenter .wp-block-search__inside-wrapper{margin:auto}.wp-block[data-align=right] .wp-block-search.wp-block-search__button-only .wp-block-search__inside-wrapper{float:right}.wp-block-separator{border:none;border-top:2px solid}:root :where(.wp-block-separator.is-style-dots){height:auto;line-height:1;text-align:center}:root :where(.wp-block-separator.is-style-dots):before{color:currentColor;content:"···";font-family:serif;font-size:1.5em;letter-spacing:2em;padding-left:2em}.wp-block-separator.is-style-dots{background:none!important;border:none!important}.wp-block-site-logo{box-sizing:border-box;line-height:0}.wp-block-site-logo a{display:inline-block;line-height:0}.wp-block-site-logo.is-default-size img{height:auto;width:120px}.wp-block-site-logo img{height:auto;max-width:100%}.wp-block-site-logo a,.wp-block-site-logo img{border-radius:inherit}.wp-block-site-logo.aligncenter{margin-left:auto;margin-right:auto;text-align:center}:root :where(.wp-block-site-logo.is-style-rounded){border-radius:9999px}:root :where(.wp-block-site-title a){color:inherit}.wp-block-social-links{background:0 0;box-sizing:border-box;margin-left:0;padding-left:0;padding-right:0;text-indent:0}.wp-block-social-links .wp-social-link a,.wp-block-social-links .wp-social-link a:hover{border-bottom:0;box-shadow:none;text-decoration:none}.wp-block-social-links .wp-social-link svg{height:1em;width:1em}.wp-block-social-links .wp-social-link span:not(.screen-reader-text){font-size:.65em;margin-left:.5em;margin-right:.5em}.wp-block-social-links.has-small-icon-size{font-size:16px}.wp-block-social-links,.wp-block-social-links.has-normal-icon-size{font-size:24px}.wp-block-social-links.has-large-icon-size{font-size:36px}.wp-block-social-links.has-huge-icon-size{font-size:48px}.wp-block-social-links.aligncenter{display:flex;justify-content:center}.wp-block-social-links.alignright{justify-content:flex-end}.wp-block-social-link{border-radius:9999px;display:block;height:auto;transition:transform .1s ease}@media (prefers-reduced-motion:reduce){.wp-block-social-link{transition-delay:0s;transition-duration:0s}}.wp-block-social-link a{align-items:center;display:flex;line-height:0;transition:transform .1s ease}.wp-block-social-link:hover{transform:scale(1.1)}.wp-block-social-links .wp-block-social-link.wp-social-link{display:inline-block;margin:0;padding:0}.wp-block-social-links .wp-block-social-link.wp-social-link .wp-block-social-link-anchor,.wp-block-social-links .wp-block-social-link.wp-social-link .wp-block-social-link-anchor svg,.wp-block-social-links .wp-block-social-link.wp-social-link .wp-block-social-link-anchor:active,.wp-block-social-links .wp-block-social-link.wp-social-link .wp-block-social-link-anchor:hover,.wp-block-social-links .wp-block-social-link.wp-social-link .wp-block-social-link-anchor:visited{color:currentColor;fill:currentColor}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link{background-color:#f0f0f0;color:#444}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-amazon{background-color:#f90;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-bandcamp{background-color:#1ea0c3;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-behance{background-color:#0757fe;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-bluesky{background-color:#0a7aff;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-codepen{background-color:#1e1f26;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-deviantart{background-color:#02e49b;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-dribbble{background-color:#e94c89;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-dropbox{background-color:#4280ff;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-etsy{background-color:#f45800;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-facebook{background-color:#1778f2;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-fivehundredpx{background-color:#000;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-flickr{background-color:#0461dd;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-foursquare{background-color:#e65678;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-github{background-color:#24292d;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-goodreads{background-color:#eceadd;color:#382110}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-google{background-color:#ea4434;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-gravatar{background-color:#1d4fc4;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-instagram{background-color:#f00075;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-lastfm{background-color:#e21b24;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-linkedin{background-color:#0d66c2;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-mastodon{background-color:#3288d4;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-medium{background-color:#000;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-meetup{background-color:#f6405f;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-patreon{background-color:#000;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-pinterest{background-color:#e60122;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-pocket{background-color:#ef4155;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-reddit{background-color:#ff4500;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-skype{background-color:#0478d7;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-snapchat{background-color:#fefc00;color:#fff;stroke:#000}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-soundcloud{background-color:#ff5600;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-spotify{background-color:#1bd760;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-telegram{background-color:#2aabee;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-threads{background-color:#000;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-tiktok{background-color:#000;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-tumblr{background-color:#011835;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-twitch{background-color:#6440a4;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-twitter{background-color:#1da1f2;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-vimeo{background-color:#1eb7ea;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-vk{background-color:#4680c2;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-wordpress{background-color:#3499cd;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-whatsapp{background-color:#25d366;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-x{background-color:#000;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-yelp{background-color:#d32422;color:#fff}:where(.wp-block-social-links:not(.is-style-logos-only)) .wp-social-link-youtube{background-color:red;color:#fff}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link{background:0 0}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link svg{height:1.25em;width:1.25em}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-amazon{color:#f90}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-bandcamp{color:#1ea0c3}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-behance{color:#0757fe}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-bluesky{color:#0a7aff}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-codepen{color:#1e1f26}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-deviantart{color:#02e49b}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-dribbble{color:#e94c89}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-dropbox{color:#4280ff}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-etsy{color:#f45800}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-facebook{color:#1778f2}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-fivehundredpx{color:#000}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-flickr{color:#0461dd}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-foursquare{color:#e65678}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-github{color:#24292d}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-goodreads{color:#382110}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-google{color:#ea4434}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-gravatar{color:#1d4fc4}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-instagram{color:#f00075}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-lastfm{color:#e21b24}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-linkedin{color:#0d66c2}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-mastodon{color:#3288d4}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-medium{color:#000}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-meetup{color:#f6405f}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-patreon{color:#000}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-pinterest{color:#e60122}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-pocket{color:#ef4155}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-reddit{color:#ff4500}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-skype{color:#0478d7}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-snapchat{color:#fff;stroke:#000}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-soundcloud{color:#ff5600}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-spotify{color:#1bd760}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-telegram{color:#2aabee}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-threads{color:#000}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-tiktok{color:#000}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-tumblr{color:#011835}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-twitch{color:#6440a4}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-twitter{color:#1da1f2}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-vimeo{color:#1eb7ea}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-vk{color:#4680c2}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-whatsapp{color:#25d366}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-wordpress{color:#3499cd}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-x{color:#000}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-yelp{color:#d32422}:where(.wp-block-social-links.is-style-logos-only) .wp-social-link-youtube{color:red}.wp-block-social-links.is-style-pill-shape .wp-social-link{width:auto}:root :where(.wp-block-social-links .wp-social-link a){padding:.25em}:root :where(.wp-block-social-links.is-style-logos-only .wp-social-link a){padding:0}:root :where(.wp-block-social-links.is-style-pill-shape .wp-social-link a){padding-left:.66667em;padding-right:.66667em}.wp-block-social-links:not(.has-icon-color):not(.has-icon-background-color) .wp-social-link-snapchat .wp-block-social-link-label{color:#000}.wp-block-spacer{clear:both}.wp-block-tag-cloud{box-sizing:border-box}.wp-block-tag-cloud.aligncenter{justify-content:center;text-align:center}.wp-block-tag-cloud.alignfull{padding-left:1em;padding-right:1em}.wp-block-tag-cloud a{display:inline-block;margin-right:5px}.wp-block-tag-cloud span{display:inline-block;margin-left:5px;text-decoration:none}:root :where(.wp-block-tag-cloud.is-style-outline){display:flex;flex-wrap:wrap;gap:1ch}:root :where(.wp-block-tag-cloud.is-style-outline a){border:1px solid;font-size:unset!important;margin-right:0;padding:1ch 2ch;text-decoration:none!important}.wp-block-table{overflow-x:auto}.wp-block-table table{border-collapse:collapse;width:100%}.wp-block-table thead{border-bottom:3px solid}.wp-block-table tfoot{border-top:3px solid}.wp-block-table td,.wp-block-table th{border:1px solid;padding:.5em}.wp-block-table .has-fixed-layout{table-layout:fixed;width:100%}.wp-block-table .has-fixed-layout td,.wp-block-table .has-fixed-layout th{word-break:break-word}.wp-block-table.aligncenter,.wp-block-table.alignleft,.wp-block-table.alignright{display:table;width:auto}.wp-block-table.aligncenter td,.wp-block-table.aligncenter th,.wp-block-table.alignleft td,.wp-block-table.alignleft th,.wp-block-table.alignright td,.wp-block-table.alignright th{word-break:break-word}.wp-block-table .has-subtle-light-gray-background-color{background-color:#f3f4f5}.wp-block-table .has-subtle-pale-green-background-color{background-color:#e9fbe5}.wp-block-table .has-subtle-pale-blue-background-color{background-color:#e7f5fe}.wp-block-table .has-subtle-pale-pink-background-color{background-color:#fcf0ef}.wp-block-table.is-style-stripes{background-color:initial;border-bottom:1px solid #f0f0f0;border-collapse:inherit;border-spacing:0}.wp-block-table.is-style-stripes tbody tr:nth-child(odd){background-color:#f0f0f0}.wp-block-table.is-style-stripes.has-subtle-light-gray-background-color tbody tr:nth-child(odd){background-color:#f3f4f5}.wp-block-table.is-style-stripes.has-subtle-pale-green-background-color tbody tr:nth-child(odd){background-color:#e9fbe5}.wp-block-table.is-style-stripes.has-subtle-pale-blue-background-color tbody tr:nth-child(odd){background-color:#e7f5fe}.wp-block-table.is-style-stripes.has-subtle-pale-pink-background-color tbody tr:nth-child(odd){background-color:#fcf0ef}.wp-block-table.is-style-stripes td,.wp-block-table.is-style-stripes th{border-color:#0000}.wp-block-table .has-border-color td,.wp-block-table .has-border-color th,.wp-block-table .has-border-color tr,.wp-block-table .has-border-color>*{border-color:inherit}.wp-block-table table[style*=border-top-color] tr:first-child,.wp-block-table table[style*=border-top-color] tr:first-child td,.wp-block-table table[style*=border-top-color] tr:first-child th,.wp-block-table table[style*=border-top-color]>*,.wp-block-table table[style*=border-top-color]>* td,.wp-block-table table[style*=border-top-color]>* th{border-top-color:inherit}.wp-block-table table[style*=border-top-color] tr:not(:first-child){border-top-color:initial}.wp-block-table table[style*=border-right-color] td:last-child,.wp-block-table table[style*=border-right-color] th,.wp-block-table table[style*=border-right-color] tr,.wp-block-table table[style*=border-right-color]>*{border-right-color:inherit}.wp-block-table table[style*=border-bottom-color] tr:last-child,.wp-block-table table[style*=border-bottom-color] tr:last-child td,.wp-block-table table[style*=border-bottom-color] tr:last-child th,.wp-block-table table[style*=border-bottom-color]>*,.wp-block-table table[style*=border-bottom-color]>* td,.wp-block-table table[style*=border-bottom-color]>* th{border-bottom-color:inherit}.wp-block-table table[style*=border-bottom-color] tr:not(:last-child){border-bottom-color:initial}.wp-block-table table[style*=border-left-color] td:first-child,.wp-block-table table[style*=border-left-color] th,.wp-block-table table[style*=border-left-color] tr,.wp-block-table table[style*=border-left-color]>*{border-left-color:inherit}.wp-block-table table[style*=border-style] td,.wp-block-table table[style*=border-style] th,.wp-block-table table[style*=border-style] tr,.wp-block-table table[style*=border-style]>*{border-style:inherit}.wp-block-table table[style*=border-width] td,.wp-block-table table[style*=border-width] th,.wp-block-table table[style*=border-width] tr,.wp-block-table table[style*=border-width]>*{border-style:inherit;border-width:inherit}:where(.wp-block-term-description){margin-bottom:var(--wp--style--block-gap);margin-top:var(--wp--style--block-gap)}.wp-block-term-description p{margin-bottom:0;margin-top:0}.wp-block-text-columns,.wp-block-text-columns.aligncenter{display:flex}.wp-block-text-columns .wp-block-column{margin:0 1em;padding:0}.wp-block-text-columns .wp-block-column:first-child{margin-left:0}.wp-block-text-columns .wp-block-column:last-child{margin-right:0}.wp-block-text-columns.columns-2 .wp-block-column{width:50%}.wp-block-text-columns.columns-3 .wp-block-column{width:33.33333%}.wp-block-text-columns.columns-4 .wp-block-column{width:25%}pre.wp-block-verse{overflow:auto;white-space:pre-wrap}:where(pre.wp-block-verse){font-family:inherit}.wp-block-video{box-sizing:border-box}.wp-block-video video{vertical-align:middle;width:100%}@supports (position:sticky){.wp-block-video [poster]{object-fit:cover}}.wp-block-video.aligncenter{text-align:center}.wp-block-video :where(figcaption){margin-bottom:1em;margin-top:.5em}.editor-styles-wrapper,.entry-content{counter-reset:footnotes}a[data-fn].fn{counter-increment:footnotes;display:inline-flex;font-size:smaller;text-decoration:none;text-indent:-9999999px;vertical-align:super}a[data-fn].fn:after{content:"[" counter(footnotes) "]";float:left;text-indent:0}.wp-element-button{cursor:pointer}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}.has-text-align-center{text-align:center}.has-text-align-left{text-align:left}.has-text-align-right{text-align:right}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.screen-reader-text:focus{background-color:#ddd;clip:auto!important;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}:root{--theme-default-editor:var(--true);--theme-border:none;--theme-transition:all .12s cubic-bezier(.455,.03,.515,.955);--theme-list-indent:2.5em;--true:initial;--false:"";--has-link-decoration:var(--true);--has-transparent-header:0;--theme-container-width:min(100%,var(--theme-container-width-base));--theme-container-width-base:calc(var(--theme-container-edge-spacing,90vw) - var(--theme-frame-size,0px)*2)}@supports not (aspect-ratio:auto){.ct-media-container img,.ct-media-container video,.ct-media-container iframe{position:absolute;width:100%;height:100%}.ct-media-container:before{display:block;content:"";width:100%;padding-bottom:100%}}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);scroll-behavior:smooth}body{overflow-x:hidden;overflow-wrap:break-word;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}*,*:before,*:after{box-sizing:border-box}body,p,h1,h2,h3,h4,h5,h6,em,ol,ul,li,tr,th,td,dl,ins,sub,sup,big,cite,code,form,small,label,table,figure,button,legend,strike,address,caption,fieldset,blockquote{margin:0;padding:0;border:none;font:inherit}input,select,textarea{margin:0}b,strong{font-weight:700}em{font-style:italic}small{font-size:80%}ins,mark{color:inherit;text-decoration:none;background:rgba(0,0,0,0)}del{opacity:.5}sup,sub{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}hr{height:1px;border:none}a{transition:var(--theme-transition)}a:focus,button:focus{transition:none;outline-width:0}a:focus-visible,button:focus-visible{outline-width:2px;outline-offset:var(--outline-offset,3px);outline-color:var(--theme-palette-color-2)}img{height:auto;max-width:100%;vertical-align:middle}figure,iframe,textarea{display:block}audio,canvas,progress,video{display:inline-block}embed,iframe,object,video{max-width:100%}svg>*{transition:none}code,kbd,samp{padding:3px 6px}code,kbd,samp,pre{tab-size:4;border-radius:2px;background:var(--theme-palette-color-6)}code:focus,kbd:focus,samp:focus,pre:focus{outline:none}pre{overflow:auto;padding:15px 20px}pre code{padding:0;background:rgba(0,0,0,0)}table{border-collapse:collapse;border-spacing:0;empty-cells:show;width:100%;max-width:100%}table,th,td{font-size:var(--theme-table-font-size);border-width:var(--theme-table-border-width,1px);border-style:var(--theme-table-border-style,solid);border-color:var(--theme-table-border-color,var(--theme-border-color))}th,td{padding:var(--theme-table-padding,.7em 1em)}th{font-weight:600}caption{font-weight:600;padding:.7rem}dl{--theme-description-list-indent:1.5em;--theme-description-list-spacing:.5em}dl>*:last-child{margin-bottom:0}dt{font-weight:600}dd{margin-top:calc(var(--theme-description-list-spacing)/2);margin-left:var(--theme-description-list-indent);margin-bottom:calc(var(--theme-description-list-spacing)*2)}dd p{--theme-content-spacing:var(--theme-description-list-spacing)}dd p:last-child{margin-bottom:0}body{color:var(--theme-text-color)}body ::selection{color:var(--theme-selection-text-color);background-color:var(--theme-selection-background-color)}h1{color:var(--theme-heading-color,var(--theme-heading-1-color,var(--theme-headings-color)))}h2{color:var(--theme-heading-color,var(--theme-heading-2-color,var(--theme-headings-color)))}h3{color:var(--theme-heading-color,var(--theme-heading-3-color,var(--theme-headings-color)))}h4{color:var(--theme-heading-color,var(--theme-heading-4-color,var(--theme-headings-color)))}h5{color:var(--theme-heading-color,var(--theme-heading-5-color,var(--theme-headings-color)))}h6{color:var(--theme-heading-color,var(--theme-heading-6-color,var(--theme-headings-color)))}.ct-module-title:is(p,span),.related-entry-title:is(p,span),.woocommerce-loop-product__title:is(p,span),.woocommerce-loop-category__title:is(p,span){color:var(--theme-heading-color)}hr{background-color:var(--theme-form-field-border-initial-color)}@media(max-width:689.98px){.ct-hidden-sm{display:none !important}}@media(min-width:690px)and (max-width:999.98px){.ct-hidden-md{display:none !important}}@media(min-width:1000px){.ct-hidden-lg{display:none !important}}.hidden{display:none}.aligncenter{clear:both;display:block;text-align:center}.sticky,.wp-caption,.bypostauthor,.wp-caption-text,.gallery-caption,.screen-reader-text{background:rgba(0,0,0,0)}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes shake{10%,90%{transform:translate3d(-4px,0,0)}20%,80%{transform:translate3d(5px,0,0)}30%,50%,70%{transform:translate3d(-7px,0,0)}40%,60%{transform:translate3d(7px,0,0)}}@keyframes bounce-in{0%{transform:scale(0,0)}20%{transform:scale(1.4,1.4)}50%{transform:scale(.8,.8)}85%{transform:scale(1.1,1.1)}100%{transform:scale(1,1)}}body,h1,h2,h3,h4,h5,h6,pre,kbd,code,samp,label,figcaption,.wp-block-quote,.wp-block-pullquote,.ct-label,.site-title,.entry-meta,.ct-menu-badge,.entry-excerpt,.ct-post-title,.ct-breadcrumbs,.ct-header-text,.ct-product-sku,.author-box-bio,.author-box-name,.ct-contact-info,.site-description,.page-description,.mobile-menu a,.menu .ct-menu-link,.comment-reply-title,.ct-footer-copyright,.ct-language-switcher,:is(.entry-summary,[data-products],.ct-trending-block,.ct-added-to-cart-product) .price,.woocommerce-tabs .tabs,.woocommerce-tabs .ct-accordion-heading,.woocommerce-result-count,.ct-header-account-dropdown,.ct-module-title:is(p,span),.related-entry-title:is(p,span),.woocommerce-loop-product__title:is(p,span),.woocommerce-loop-category__title:is(p,span),.ct-shortcuts-bar,.ct-widget>*,.ct-dynamic-data-layer,.ct-dynamic-filter,.ct-search-results,.tutor-ratings,.tutor-meta>*,.tutor-course-details-title,.tutor-course-details-actions>a,.ct-language-switcher ul[data-placement]{font-family:var(--theme-font-family);font-size:var(--theme-font-size);font-weight:var(--theme-font-weight);font-style:var(--theme-font-style,inherit);line-height:var(--theme-line-height);letter-spacing:var(--theme-letter-spacing);text-transform:var(--theme-text-transform);-webkit-text-decoration:var(--theme-text-decoration);text-decoration:var(--theme-text-decoration)}.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute !important;width:1px;word-wrap:normal !important;word-break:normal}.screen-reader-text:focus{background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px rgba(0,0,0,.6);clip:auto !important;-webkit-clip-path:none;clip-path:none;color:#21759b;display:block;font-size:14px;font-size:.875rem;font-weight:700;height:auto;right:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}#primary[tabindex="-1"]:focus{outline:0}.skip-link{background-color:#24292e;color:#fff;padding:10px 20px}.show-on-focus{position:absolute;width:1px;height:1px;margin:0;overflow:hidden;clip:rect(1px,1px,1px,1px);top:0;left:0}.show-on-focus:focus{z-index:100;width:auto;height:auto;clip:auto}p{margin-block-end:var(--theme-content-spacing)}ul,ol{padding-inline-start:var(--theme-list-indent);margin-block-end:var(--theme-content-spacing)}h1,h2,h3,h4,h5,h6{margin-block-end:calc(var(--has-theme-content-spacing,1)*(.3em + 10px))}h1:where(:last-child),h2:where(:last-child),h3:where(:last-child),h4:where(:last-child),h5:where(:last-child),h6:where(:last-child){margin-block-end:0}:is(.is-layout-flow,.is-layout-constrained)>*:where(:not(h1,h2,h3,h4,h5,h6)){margin-block-start:0;margin-block-end:var(--theme-content-spacing)}:is(.is-layout-flow,.is-layout-constrained) :where(h1,h2,h3,h4,h5,h6){margin-block-end:calc(var(--has-theme-content-spacing,1)*(.3em + 10px))}@media screen and (max-width:600px){.admin-bar{--admin-bar:0px}}@media screen and (min-width:601px)and (max-width:782px){.admin-bar{--admin-bar:46px}}@media screen and (min-width:783px){.admin-bar{--admin-bar:32px}}.menu,.entry-meta,.ct-account-modal>ul,.ct-language-switcher ul,[class*=ct-contact-info] ul,.products:is(ul),.woocommerce-Reviews :where(ol,ul),.ct-comments :where(ol,ul),.ct-comments ul,.mobile-menu ul,.woocommerce-tabs>ul,.wc-item-meta,.ct-header-account ul,.ct-product-additional-info ul,.woocommerce-pagination .page-numbers,.wc-block-review-list,.woocommerce-mini-cart,.woocommerce-MyAccount-navigation ul,.wp-block-latest-comments,.ct-filter-widget,.ct-compare-bar ul,.ct-product-hero ul,.ct-widget ul,.ct-added-to-cart-product ul{margin-bottom:0;list-style-type:none;--theme-list-indent:0}ul:last-child,ol:last-child,ul li:last-child,ol li:last-child,.ct-widget p:last-child,.entry-excerpt *:last-child,.wp-block-columns:last-child,.ct-dynamic-data p:last-child,[class*=ct-form-notification] p:last-child,.ct-product-description p:last-child,.woocommerce-variation-availability p:last-child{margin-bottom:0}[data-parallax]>figure{display:flex;align-items:center}@media(prefers-reduced-motion:no-preference){[data-reveal]{transition-property:opacity,transform;transition-duration:1.5s;transition-timing-function:cubic-bezier(.2,1,.2,1)}[data-reveal][data-reveal*=no]{opacity:.01}[data-reveal][data-reveal*=yes]{opacity:1}[data-reveal][data-reveal*=bottom]{transform:translateY(100px)}[class*=entries] article[data-reveal*="2"]{transition-delay:.3s}[class*=entries] article[data-reveal*="3"]{transition-delay:.6s}[class*=entries] article[data-reveal*="4"]{transition-delay:.9s}[class*=entries] article[data-reveal*="5"]{transition-delay:1.2s}[class*=entries] article[data-reveal*="6"]{transition-delay:1.5s}[class*=entries] article[data-reveal*="7"]{transition-delay:1.8s}[class*=entries] article[data-reveal*="8"]{transition-delay:2.1s}[class*=entries] article[data-reveal*="9"]{transition-delay:2.4s}[class*=entries] article[data-reveal*="10"]{transition-delay:2.7s}[class*=entries] article[data-reveal*="11"]{transition-delay:3s}[class*=entries] article[data-reveal*="12"]{transition-delay:3.3s}}.ct-icon,.ct-icon-container svg{width:var(--theme-icon-size,15px);height:var(--theme-icon-size,15px);fill:var(--theme-icon-color,var(--theme-text-color));transition:var(--theme-icon-transition,fill .12s cubic-bezier(.455,.03,.515,.955))}.ct-icon,.ct-icon-container{position:relative}.ct-icon-container{display:flex;align-items:center;justify-content:center}.ct-icon-container.ct-left{margin-inline-end:.5em}.ct-icon-container.ct-right{margin-inline-start:.5em}[data-icons-type*=":"] .ct-icon-container{width:calc(var(--theme-icon-size,15px)*2.5);height:calc(var(--theme-icon-size,15px)*2.5);transition:background .12s cubic-bezier(.455,.03,.515,.955),border-color .12s cubic-bezier(.455,.03,.515,.955)}[data-icons-type*=square] .ct-icon-container{border-radius:2px}[data-icons-type*=rounded] .ct-icon-container{border-radius:100%}[data-icons-type]>*{transition:none}[data-icons-type]>*:hover svg{fill:var(--theme-icon-hover-color,var(--theme-palette-color-2))}[data-icons-type*=solid] .ct-icon-container{background-color:var(--background-color)}[data-icons-type*=solid]>*:hover .ct-icon-container{background-color:var(--background-hover-color)}[data-icons-type*=outline] .ct-icon-container{border:1px solid var(--background-color)}[data-icons-type*=outline]>*:hover .ct-icon-container{border-color:var(--background-hover-color)}[class*=ct-media-container]{display:inline-flex;overflow:hidden;isolation:isolate;vertical-align:middle}.ct-media-container{position:relative;width:100%}.ct-media-container img,.ct-media-container picture{width:inherit;border-radius:inherit;object-fit:var(--theme-object-fit,cover)}.ct-media-container picture{display:inline-flex}.ct-media-container-static img{aspect-ratio:1/1}a{color:var(--theme-link-initial-color);-webkit-text-decoration:var(--has-link-decoration,var(--theme-text-decoration,none));text-decoration:var(--has-link-decoration,var(--theme-text-decoration,none))}a:hover{color:var(--theme-link-hover-color)}[data-link=type-2] .entry-content p>a,[data-link=type-2] .entry-content em>a,[data-link=type-2] .entry-content strong>a,[data-link=type-2] .entry-content>ul a,[data-link=type-2] .entry-content>ol a,[data-link=type-2] .wp-block-table a,[data-link=type-2] .ct-link-styles{--theme-text-decoration:underline}[data-link=type-3] .entry-content p>a,[data-link=type-3] .entry-content em>a,[data-link=type-3] .entry-content strong>a,[data-link=type-3] .entry-content>ul a,[data-link=type-3] .entry-content>ol a,[data-link=type-3] .wp-block-table a,[data-link=type-3] .ct-link-styles,[data-link=type-4] .entry-content p>a,[data-link=type-4] .entry-content em>a,[data-link=type-4] .entry-content strong>a,[data-link=type-4] .entry-content>ul a,[data-link=type-4] .entry-content>ol a,[data-link=type-4] .wp-block-table a,[data-link=type-4] .ct-link-styles,[data-link=type-5] .entry-content p>a,[data-link=type-5] .entry-content em>a,[data-link=type-5] .entry-content strong>a,[data-link=type-5] .entry-content>ul a,[data-link=type-5] .entry-content>ol a,[data-link=type-5] .wp-block-table a,[data-link=type-5] .ct-link-styles{background-position:var(--has-link-decoration,0% 100%);background-repeat:var(--has-link-decoration,no-repeat)}[data-link=type-4] .entry-content p>a,[data-link=type-4] .entry-content em>a,[data-link=type-4] .entry-content strong>a,[data-link=type-4] .entry-content>ul a,[data-link=type-4] .entry-content>ol a,[data-link=type-4] .wp-block-table a,[data-link=type-4] .ct-link-styles{background-size:var(--has-link-decoration,100% 1px);background-image:var(--has-link-decoration,linear-gradient(currentColor,currentColor))}footer.ct-footer [data-link] a,[data-link] .ct-posts-shortcode .entry-title a{--has-link-decoration:var(--false)}footer.ct-footer [data-link] a:hover,[data-link] .ct-posts-shortcode .entry-title a:hover{color:var(--theme-link-hover-color)}footer.ct-footer [data-link=underline] a{text-decoration:underline}.ct-ajax-loader{position:absolute;inset:0;z-index:0;margin:auto;display:flex;border-radius:100%;width:var(--loader-size,20px);height:var(--loader-size,20px);color:var(--loader-color,#c5cbd0)}.ct-ajax-loader[data-type=boxed]{padding:8px;background:#fff;box-sizing:content-box;--loader-color:var(--theme-text-color)}[data-label=bottom]{text-align:center;flex-direction:column}[data-label=bottom] .ct-label{order:2;line-height:1;margin-top:.5em}[data-label=left] .ct-label{margin-inline-end:.7em}[data-label=right] .ct-label{order:2;margin-inline-start:.7em}.ct-tooltip{position:absolute;opacity:0;visibility:hidden}select,textarea,input[type=url],input[type=tel],input[type=text],input[type=time],input[type=date],input[type=datetime],input[type=datetime-local],input[type=email],input[type=number],input[type=search],input[type=password],fieldset .wc-stripe-elements-field,.ff-inherit-theme-style .ff-el-form-control:not([size]):not([multiple]){-webkit-appearance:none;appearance:none;width:var(--has-width,var(--theme-form-field-width,100%));height:var(--has-height,var(--theme-form-field-height,40px));font-family:inherit;font-size:var(--theme-form-font-size,16px);color:var(--theme-form-text-initial-color,var(--theme-text-color));padding:var(--has-classic-forms,var(--theme-form-field-padding,0 15px));border-width:var(--theme-form-field-border-width,1px);border-style:var(--theme-form-field-border-style,solid);border-color:var(--theme-form-field-border-initial-color);border-radius:var(--has-classic-forms,var(--theme-form-field-border-radius,3px));background-color:var(--has-classic-forms,var(--theme-form-field-background-initial-color));transition:color .12s cubic-bezier(.455,.03,.515,.955),border-color .12s cubic-bezier(.455,.03,.515,.955),background-color .12s cubic-bezier(.455,.03,.515,.955)}select:focus,textarea:focus,input[type=url]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=date]:focus,input[type=datetime]:focus,input[type=datetime-local]:focus,input[type=email]:focus,input[type=number]:focus,input[type=search]:focus,input[type=password]:focus,fieldset .wc-stripe-elements-field:focus,.ff-inherit-theme-style .ff-el-form-control:not([size]):not([multiple]):focus{outline:none;color:var(--theme-form-text-focus-color,var(--theme-text-color));border-color:var(--theme-form-field-border-focus-color);background-color:var(--has-classic-forms,var(--theme-form-field-background-focus-color))}select::placeholder,textarea::placeholder,input[type=url]::placeholder,input[type=tel]::placeholder,input[type=text]::placeholder,input[type=time]::placeholder,input[type=date]::placeholder,input[type=datetime]::placeholder,input[type=datetime-local]::placeholder,input[type=email]::placeholder,input[type=number]::placeholder,input[type=search]::placeholder,input[type=password]::placeholder,fieldset .wc-stripe-elements-field::placeholder,.ff-inherit-theme-style .ff-el-form-control:not([size]):not([multiple])::placeholder{opacity:.6;color:inherit}input[type=date]{min-height:var(--has-height,var(--theme-form-field-height,40px))}input[type=date]::-webkit-date-and-time-value{text-align:inherit}select{padding-inline-end:25px;background-image:url("data:image/svg+xml,%3Csvg width='21' height='13' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18.5.379L20.621 2.5 10.5 12.621.379 2.5 2.5.379l8 8z' fill='%234F5D6D' fill-rule='nonzero'/%3E%3C/svg%3E");background-repeat:no-repeat,repeat;background-size:8px auto,100%;background-position:right 10px top 50%,0 0}select option{color:initial}textarea{line-height:1.5;resize:vertical;--theme-form-field-padding:12px 15px}fieldset{padding:30px;border:1px dashed var(--theme-border-color)}legend{font-size:14px;font-weight:600;padding:0 15px;margin-left:-15px}.ct-checkbox,.comment-form input[type=checkbox],#ship-to-different-address-checkbox,.wc-block-checkbox-list input[type=checkbox],.wc-block-checkbox-list .wc-block-components-checkbox .wc-block-components-checkbox__input[type=checkbox],.woocommerce-form__input[type=checkbox],.woocommerce-form__label-for-checkbox input[type=checkbox],.woocommerce-input-wrapper input[type=checkbox],#wc-stripe-new-payment-method[type=checkbox],.ppcp-credit-card-vault[type=checkbox],.forminator-ui[data-design=none] .forminator-checkbox input[type=checkbox],.wpforms-container:not(.wpforms-container-full) input[type=checkbox],.ff-inherit-theme-style input[type=checkbox],.wc_payment_method>input[type=radio],.woocommerce-shipping-methods input[type=radio],.payment_box input[type=radio],.mp-ticket-payments input[type=radio],.forminator-ui[data-design=none] .forminator-radio input[type=radio],.wpforms-container:not(.wpforms-container-full) input[type=radio],.ff-inherit-theme-style input[type=radio]{display:inline-block;vertical-align:baseline;position:relative;top:var(--top,3px);min-width:16px;width:16px;height:16px;min-height:initial;padding:0 !important;margin:0;margin-inline-end:.7em;border-width:var(--form-selection-control-border-width,var(--theme-form-field-border-width,1px));border-style:solid;cursor:pointer;-webkit-appearance:none;background:rgba(0,0,0,0);border-color:var(--theme-form-selection-field-initial-color)}.ct-checkbox:before,.comment-form input[type=checkbox]:before,#ship-to-different-address-checkbox:before,.wc-block-checkbox-list input[type=checkbox]:before,.wc-block-checkbox-list .wc-block-components-checkbox .wc-block-components-checkbox__input[type=checkbox]:before,.woocommerce-form__input[type=checkbox]:before,.woocommerce-form__label-for-checkbox input[type=checkbox]:before,.woocommerce-input-wrapper input[type=checkbox]:before,#wc-stripe-new-payment-method[type=checkbox]:before,.ppcp-credit-card-vault[type=checkbox]:before,.forminator-ui[data-design=none] .forminator-checkbox input[type=checkbox]:before,.wpforms-container:not(.wpforms-container-full) input[type=checkbox]:before,.ff-inherit-theme-style input[type=checkbox]:before,.wc_payment_method>input[type=radio]:before,.woocommerce-shipping-methods input[type=radio]:before,.payment_box input[type=radio]:before,.mp-ticket-payments input[type=radio]:before,.forminator-ui[data-design=none] .forminator-radio input[type=radio]:before,.wpforms-container:not(.wpforms-container-full) input[type=radio]:before,.ff-inherit-theme-style input[type=radio]:before{position:absolute;content:"";z-index:2;inset:0;opacity:0;margin:auto}.ct-checkbox:checked,.comment-form input[type=checkbox]:checked,#ship-to-different-address-checkbox:checked,.wc-block-checkbox-list input[type=checkbox]:checked,.wc-block-checkbox-list .wc-block-components-checkbox .wc-block-components-checkbox__input[type=checkbox]:checked,.woocommerce-form__input[type=checkbox]:checked,.woocommerce-form__label-for-checkbox input[type=checkbox]:checked,.woocommerce-input-wrapper input[type=checkbox]:checked,#wc-stripe-new-payment-method[type=checkbox]:checked,.ppcp-credit-card-vault[type=checkbox]:checked,.forminator-ui[data-design=none] .forminator-checkbox input[type=checkbox]:checked,.wpforms-container:not(.wpforms-container-full) input[type=checkbox]:checked,.ff-inherit-theme-style input[type=checkbox]:checked,.wc_payment_method>input[type=radio]:checked,.woocommerce-shipping-methods input[type=radio]:checked,.payment_box input[type=radio]:checked,.mp-ticket-payments input[type=radio]:checked,.forminator-ui[data-design=none] .forminator-radio input[type=radio]:checked,.wpforms-container:not(.wpforms-container-full) input[type=radio]:checked,.ff-inherit-theme-style input[type=radio]:checked{border-color:var(--theme-form-selection-field-active-color);background:var(--theme-form-selection-field-active-color)}.ct-checkbox:checked:before,.comment-form input[type=checkbox]:checked:before,#ship-to-different-address-checkbox:checked:before,.wc-block-checkbox-list input[type=checkbox]:checked:before,.wc-block-checkbox-list .wc-block-components-checkbox .wc-block-components-checkbox__input[type=checkbox]:checked:before,.woocommerce-form__input[type=checkbox]:checked:before,.woocommerce-form__label-for-checkbox input[type=checkbox]:checked:before,.woocommerce-input-wrapper input[type=checkbox]:checked:before,#wc-stripe-new-payment-method[type=checkbox]:checked:before,.ppcp-credit-card-vault[type=checkbox]:checked:before,.forminator-ui[data-design=none] .forminator-checkbox input[type=checkbox]:checked:before,.wpforms-container:not(.wpforms-container-full) input[type=checkbox]:checked:before,.ff-inherit-theme-style input[type=checkbox]:checked:before,.wc_payment_method>input[type=radio]:checked:before,.woocommerce-shipping-methods input[type=radio]:checked:before,.payment_box input[type=radio]:checked:before,.mp-ticket-payments input[type=radio]:checked:before,.forminator-ui[data-design=none] .forminator-radio input[type=radio]:checked:before,.wpforms-container:not(.wpforms-container-full) input[type=radio]:checked:before,.ff-inherit-theme-style input[type=radio]:checked:before{opacity:1}.ct-checkbox:focus-visible,.comment-form input[type=checkbox]:focus-visible,#ship-to-different-address-checkbox:focus-visible,.wc-block-checkbox-list input[type=checkbox]:focus-visible,.wc-block-checkbox-list .wc-block-components-checkbox .wc-block-components-checkbox__input[type=checkbox]:focus-visible,.woocommerce-form__input[type=checkbox]:focus-visible,.woocommerce-form__label-for-checkbox input[type=checkbox]:focus-visible,.woocommerce-input-wrapper input[type=checkbox]:focus-visible,#wc-stripe-new-payment-method[type=checkbox]:focus-visible,.ppcp-credit-card-vault[type=checkbox]:focus-visible,.forminator-ui[data-design=none] .forminator-checkbox input[type=checkbox]:focus-visible,.wpforms-container:not(.wpforms-container-full) input[type=checkbox]:focus-visible,.ff-inherit-theme-style input[type=checkbox]:focus-visible,.wc_payment_method>input[type=radio]:focus-visible,.woocommerce-shipping-methods input[type=radio]:focus-visible,.payment_box input[type=radio]:focus-visible,.mp-ticket-payments input[type=radio]:focus-visible,.forminator-ui[data-design=none] .forminator-radio input[type=radio]:focus-visible,.wpforms-container:not(.wpforms-container-full) input[type=radio]:focus-visible,.ff-inherit-theme-style input[type=radio]:focus-visible{outline:none;border-color:var(--theme-form-selection-field-active-color)}.ct-checkbox,.comment-form input[type=checkbox],#ship-to-different-address-checkbox,.wc-block-checkbox-list input[type=checkbox],.wc-block-checkbox-list .wc-block-components-checkbox .wc-block-components-checkbox__input[type=checkbox],.woocommerce-form__input[type=checkbox],.woocommerce-form__label-for-checkbox input[type=checkbox],.woocommerce-input-wrapper input[type=checkbox],#wc-stripe-new-payment-method[type=checkbox],.ppcp-credit-card-vault[type=checkbox],.forminator-ui[data-design=none] .forminator-checkbox input[type=checkbox],.wpforms-container:not(.wpforms-container-full) input[type=checkbox],.ff-inherit-theme-style input[type=checkbox]{border-radius:var(--theme-form-checkbox-border-radius,3px)}.ct-checkbox:before,.comment-form input[type=checkbox]:before,#ship-to-different-address-checkbox:before,.wc-block-checkbox-list input[type=checkbox]:before,.wc-block-checkbox-list .wc-block-components-checkbox .wc-block-components-checkbox__input[type=checkbox]:before,.woocommerce-form__input[type=checkbox]:before,.woocommerce-form__label-for-checkbox input[type=checkbox]:before,.woocommerce-input-wrapper input[type=checkbox]:before,#wc-stripe-new-payment-method[type=checkbox]:before,.ppcp-credit-card-vault[type=checkbox]:before,.forminator-ui[data-design=none] .forminator-checkbox input[type=checkbox]:before,.wpforms-container:not(.wpforms-container-full) input[type=checkbox]:before,.ff-inherit-theme-style input[type=checkbox]:before{top:-2px;width:8px;height:5px;border:2px solid #fff;border-top:none;border-right:none;transform:rotate(-45deg)}.wc_payment_method>input[type=radio],.woocommerce-shipping-methods input[type=radio],.payment_box input[type=radio],.mp-ticket-payments input[type=radio],.forminator-ui[data-design=none] .forminator-radio input[type=radio],.wpforms-container:not(.wpforms-container-full) input[type=radio],.ff-inherit-theme-style input[type=radio]{border-radius:100% !important}.wc_payment_method>input[type=radio]:before,.woocommerce-shipping-methods input[type=radio]:before,.payment_box input[type=radio]:before,.mp-ticket-payments input[type=radio]:before,.forminator-ui[data-design=none] .forminator-radio input[type=radio]:before,.wpforms-container:not(.wpforms-container-full) input[type=radio]:before,.ff-inherit-theme-style input[type=radio]:before{width:6px;height:6px;background:#fff;border-radius:inherit}label{font-size:15px;line-height:inherit;cursor:pointer;margin:0 0 .5em}label:last-child{margin-bottom:0}.gdpr-confirm-policy label,.comment-form-cookies-consent label{font-size:13px}.ct-pagination{display:flex;flex-wrap:wrap;justify-content:space-between;margin-top:var(--spacing,60px)}.ct-pagination[data-divider]{padding-top:var(--spacing,60px);border-top:var(--pagination-divider,none)}[data-pagination=simple],[data-pagination=next_prev]{display:grid;grid-template-columns:1fr auto 1fr;font-size:14px;font-weight:600;color:var(--theme-text-color);--theme-link-initial-color:var(--theme-text-color)}[data-pagination=simple] .page-numbers,[data-pagination=next_prev] .page-numbers{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;border-radius:var(--theme-border-radius,4px);border:2px solid rgba(0,0,0,0)}[data-pagination=simple] .page-numbers.current,[data-pagination=next_prev] .page-numbers.current{color:var(--theme-text-active-color,#fff);background:var(--theme-link-hover-color)}[data-pagination=simple] .page-numbers:not(.dots):hover,[data-pagination=next_prev] .page-numbers:not(.dots):hover{border-color:var(--theme-link-hover-color)}[data-pagination=simple] .prev,[data-pagination=simple] .next,[data-pagination=next_prev] .prev,[data-pagination=next_prev] .next{font-size:12px;text-transform:uppercase;padding:0 17px;white-space:nowrap;border-color:var(--theme-border-color)}[data-pagination=simple] .prev,[data-pagination=next_prev] .prev{grid-column:1;justify-self:start}[data-pagination=simple] .next,[data-pagination=next_prev] .next{grid-column:3;justify-self:end}[data-pagination=simple]>div{grid-column:2;text-align:center;margin:-5px}[data-pagination=simple]>div .page-numbers{flex:0 0 41px;width:41px;margin:5px}[data-pagination=load_more],[data-pagination=infinite_scroll]{justify-content:center}[data-pagination=load_more] .page-numbers,[data-pagination=infinite_scroll] .page-numbers{display:none}[data-pagination=load_more] .ct-load-more-helper,[data-pagination=infinite_scroll] .ct-load-more-helper{display:flex;align-items:center;justify-content:center;position:relative;min-width:var(--theme-button-min-height,45px);min-height:var(--theme-button-min-height,45px)}[data-pagination=load_more] .ct-load-more-helper .ct-ajax-loader,[data-pagination=infinite_scroll] .ct-load-more-helper .ct-ajax-loader{opacity:0}[data-pagination=load_more] .ct-load-more-helper.ct-loading .ct-ajax-loader,[data-pagination=infinite_scroll] .ct-load-more-helper.ct-loading .ct-ajax-loader{opacity:1}[data-pagination=load_more] .ct-load-more-helper.ct-loading .ct-load-more,[data-pagination=infinite_scroll] .ct-load-more-helper.ct-loading .ct-load-more{opacity:0}[data-pagination=load_more] .ct-load-more,[data-pagination=infinite_scroll] .ct-load-more{z-index:2;opacity:1}[data-pagination=load_more] .ct-last-page-text,[data-pagination=infinite_scroll] .ct-last-page-text{display:none}[data-pagination=load_more].ct-last-page .ct-load-more,[data-pagination=load_more].ct-last-page .ct-ajax-loader,[data-pagination=infinite_scroll].ct-last-page .ct-load-more,[data-pagination=infinite_scroll].ct-last-page .ct-ajax-loader{display:none}[data-pagination=load_more].ct-last-page .ct-last-page-text,[data-pagination=infinite_scroll].ct-last-page .ct-last-page-text{display:flex;opacity:.7}.entry-meta{--items-spacing:9px}.entry-meta li{display:inline-block}.entry-meta li:not(:last-of-type){margin-inline-end:var(--items-spacing)}.entry-meta li:after{margin-inline-start:var(--items-spacing)}.entry-meta li svg,.entry-meta li:after,.entry-meta li [class*=ct-media-container]{position:relative;top:-.1em;vertical-align:var(--vertical-align,middle)}.entry-meta li [class*=ct-media-container]{border-radius:100%;margin-inline-end:.5em}.entry-meta li [class*=ct-media-container]+svg{display:none}.entry-meta li svg{fill:currentColor;margin-inline-end:7px}.entry-meta li>span{margin-inline-end:.27em}.entry-meta[data-type*=none] li:not(:last-of-type){--items-spacing:20px}.entry-meta[data-type*=slash] li:not(:last-of-type):after{content:"/";--vertical-align:baseline}.entry-meta[data-type*=line] li:not(:last-of-type):after{content:"-"}.entry-meta[data-type*=circle] li:not(:last-of-type):after{content:"●";font-size:.35em}.entry-meta[data-type*=icons] svg{width:13px;height:13px}.entry-meta [data-type=pill] a,.entry-meta [data-type=underline] a{display:inline-flex;align-items:center;margin-top:2px;margin-bottom:2px}.entry-meta [data-type=pill] a{min-height:25px;padding:0 8px;border-radius:3px;background:var(--theme-button-background-initial-color);--theme-link-initial-color:var(--theme-button-text-initial-color);--theme-link-hover-color:var(--theme-button-text-hover-color)}.entry-meta [data-type=pill] a:not(:last-of-type){margin-inline-end:4px}.entry-meta [data-type=pill] a:hover{background:var(--theme-button-background-hover-color)}.entry-meta [data-type=underline] a{position:relative}.entry-meta [data-type=underline] a:before{position:absolute;bottom:-.1em;content:"";width:100%;height:1px;opacity:.5;background:currentColor;transform:opacity .12s cubic-bezier(.455,.03,.515,.955)}.entry-meta [data-type=underline] a:hover:before{opacity:1}.entry-tags{display:flex;flex-direction:column;align-items:var(--horizontal-alignment);margin-top:40px}.entry-tags-items{display:flex;flex-wrap:wrap;gap:10px}.entry-tags-items a{font-size:14px;font-weight:500;padding:.3em .85em;border-radius:var(--theme-border-radius);--theme-button-text-initial-color:var(--theme-text-color);--theme-button-background-initial-color:transparent}.entry-tags-items a:not(:hover){box-shadow:inset 0px 0px 0px 1px var(--theme-border-color)}.ct-breadcrumbs{color:var(--theme-text-color);--has-link-decoration:var(--false)}.ct-breadcrumbs[data-source=default]>span{display:inline-flex;align-items:center;vertical-align:middle}.ct-breadcrumbs[data-source=default]>span .ct-separator{margin:0 8px}.ct-breadcrumbs[data-source=default] .ct-home-icon{position:relative;top:-.15em;vertical-align:middle}@font-face{font-family:"star";src:url(//www.btc505.com/wp-content/themes/blocksy/static/bundle/../fonts/stars.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}:is(.star-rating,.wc-block-components-product-rating-stars__stars,.wc-block-rating-filter .wc-block-components-product-rating__stars,.wc-block-grid__product-rating .wc-block-grid__product-rating__stars,.has-rating .wc-block-components-review-list-item__rating>.wc-block-components-review-list-item__rating__stars){overflow:hidden;position:relative;width:7em;height:1em;font-family:"star";font-size:.9em;font-weight:400;line-height:1em;letter-spacing:.4em;color:var(--star-rating-inactive-color,#f9dfcc)}:is(.star-rating,.wc-block-components-product-rating-stars__stars,.wc-block-rating-filter .wc-block-components-product-rating__stars,.wc-block-grid__product-rating .wc-block-grid__product-rating__stars,.has-rating .wc-block-components-review-list-item__rating>.wc-block-components-review-list-item__rating__stars):before{content:"SSSSS";top:0;inset-inline-start:0;position:absolute;line-height:inherit}:is(.star-rating,.wc-block-components-product-rating-stars__stars,.wc-block-rating-filter .wc-block-components-product-rating__stars,.wc-block-grid__product-rating .wc-block-grid__product-rating__stars,.has-rating .wc-block-components-review-list-item__rating>.wc-block-components-review-list-item__rating__stars) span{overflow:hidden;top:0;inset-inline-start:0;position:absolute;padding-top:1em;line-height:inherit}:is(.star-rating,.wc-block-components-product-rating-stars__stars,.wc-block-rating-filter .wc-block-components-product-rating__stars,.wc-block-grid__product-rating .wc-block-grid__product-rating__stars,.has-rating .wc-block-components-review-list-item__rating>.wc-block-components-review-list-item__rating__stars) span:before{content:"SSSSS";top:0;inset-inline-start:0;position:absolute;color:var(--star-rating-initial-color,#fda256);line-height:inherit}.has-hover-effect img{transition:opacity .5s ease,transform .5s ease}@media(hover:hover){[data-hover=zoom-in]>*:hover .has-hover-effect img{transform:scale(1.1)}}[data-hover=zoom-out] .has-hover-effect img{transform:scale(1.1)}@media(hover:hover){[data-hover=zoom-out]>*:hover .has-hover-effect img{transform:scale(1)}}[data-hover=swap] .ct-swap{position:absolute;inset:0;opacity:0}@media(hover:hover){[data-hover=swap] .has-hover-effect:hover .ct-swap{opacity:1}[data-hover=swap] .has-hover-effect:hover .ct-swap+img{opacity:0}}:target,.elementor-menu-anchor{scroll-margin-top:calc(var(--admin-bar,0px) + var(--theme-frame-size,0px) + var(--scroll-margin-top,0px) + var(--scroll-margin-top-offset,0px))}[data-header*=sticky]{--scroll-margin-top-offset:calc((var(--header-sticky-height,var(--header-height,0px))*var(--has-transparent-header)*(var(--sticky-shrink,100)/100)) + var(--header-sticky-height,var(--header-height,0px))*(1 - var(--has-transparent-header))*(var(--sticky-shrink,100)/100))}[data-header*="sticky:shrink"]{--scroll-margin-top-offset:calc(var(--header-sticky-height,var(--header-height,0px))*(var(--sticky-shrink,100)/100))}[data-header*="sticky:auto"]{--scroll-margin-top-offset:0px}.button,.ct-button,.added_to_cart,.ct-button-ghost,[type=submit],.wp-element-button,.wp-block-button__link,button.regform-button,button[class*=ajax],.woocommerce button.button,.woocommerce-message .showlogin,.woocommerce-message .restore-item,.forminator-ui[data-design=none] .forminator-button,.fluentform .ff-el-group button.ff-btn{display:inline-flex;align-items:center;justify-content:center;min-height:var(--theme-button-min-height);padding:var(--theme-button-padding);border:none;-webkit-appearance:none;appearance:none;cursor:pointer;-webkit-user-select:none;user-select:none;text-align:center;border-radius:var(--theme-button-border-radius,3px);transition:all .12s cubic-bezier(.455,.03,.515,.955);--has-link-decoration:var(--false)}.button:disabled,.button.disabled,.ct-button:disabled,.ct-button.disabled,.added_to_cart:disabled,.added_to_cart.disabled,.ct-button-ghost:disabled,.ct-button-ghost.disabled,[type=submit]:disabled,[type=submit].disabled,.wp-element-button:disabled,.wp-element-button.disabled,.wp-block-button__link:disabled,.wp-block-button__link.disabled,button.regform-button:disabled,button.regform-button.disabled,button[class*=ajax]:disabled,button[class*=ajax].disabled,.woocommerce button.button:disabled,.woocommerce button.button.disabled,.woocommerce-message .showlogin:disabled,.woocommerce-message .showlogin.disabled,.woocommerce-message .restore-item:disabled,.woocommerce-message .restore-item.disabled,.forminator-ui[data-design=none] .forminator-button:disabled,.forminator-ui[data-design=none] .forminator-button.disabled,.fluentform .ff-el-group button.ff-btn:disabled,.fluentform .ff-el-group button.ff-btn.disabled{opacity:.5;cursor:not-allowed;--theme-button-shadow:none;--theme-button-transform:none}@media(max-width:479.98px){.button,.ct-button,.added_to_cart,.ct-button-ghost,[type=submit],.wp-element-button,.wp-block-button__link,button.regform-button,button[class*=ajax],.woocommerce button.button,.woocommerce-message .showlogin,.woocommerce-message .restore-item,.forminator-ui[data-design=none] .forminator-button,.fluentform .ff-el-group button.ff-btn{--padding:5px 15px}}.button.has-text-align-left,.ct-button.has-text-align-left,.added_to_cart.has-text-align-left,.ct-button-ghost.has-text-align-left,[type=submit].has-text-align-left,.wp-element-button.has-text-align-left,.wp-block-button__link.has-text-align-left,button.regform-button.has-text-align-left,button[class*=ajax].has-text-align-left,.woocommerce button.button.has-text-align-left,.woocommerce-message .showlogin.has-text-align-left,.woocommerce-message .restore-item.has-text-align-left,.forminator-ui[data-design=none] .forminator-button.has-text-align-left,.fluentform .ff-el-group button.ff-btn.has-text-align-left{justify-content:flex-start}.button.has-text-align-right,.ct-button.has-text-align-right,.added_to_cart.has-text-align-right,.ct-button-ghost.has-text-align-right,[type=submit].has-text-align-right,.wp-element-button.has-text-align-right,.wp-block-button__link.has-text-align-right,button.regform-button.has-text-align-right,button[class*=ajax].has-text-align-right,.woocommerce button.button.has-text-align-right,.woocommerce-message .showlogin.has-text-align-right,.woocommerce-message .restore-item.has-text-align-right,.forminator-ui[data-design=none] .forminator-button.has-text-align-right,.fluentform .ff-el-group button.ff-btn.has-text-align-right{justify-content:flex-end}.button,.ct-button,.entry-tags a,.added_to_cart,[type=submit],.wp-element-button,.wp-block-button__link,button.regform-button,button[class*=ajax],.woocommerce button.button,.woocommerce-message .showlogin,.woocommerce-message .restore-item,.forminator-ui[data-design=none] .forminator-button,.fluentform .ff-el-group button.ff-btn{position:relative;color:var(--theme-button-text-initial-color);border:var(--theme-button-border);background-color:var(--theme-button-background-initial-color)}.button:hover,.ct-button:hover,.entry-tags a:hover,.added_to_cart:hover,[type=submit]:hover,.wp-element-button:hover,.wp-block-button__link:hover,button.regform-button:hover,button[class*=ajax]:hover,.woocommerce button.button:hover,.woocommerce-message .showlogin:hover,.woocommerce-message .restore-item:hover,.forminator-ui[data-design=none] .forminator-button:hover,.fluentform .ff-el-group button.ff-btn:hover{color:var(--theme-button-text-hover-color);border-color:var(--theme-button-border-hover-color);background-color:var(--theme-button-background-hover-color)}@media(hover:hover){@supports(filter:blur()){.button:before,.ct-button:before,.entry-tags a:before,.added_to_cart:before,[type=submit]:before,.wp-element-button:before,.wp-block-button__link:before,button.regform-button:before,button[class*=ajax]:before,.woocommerce button.button:before,.woocommerce-message .showlogin:before,.woocommerce-message .restore-item:before,.forminator-ui[data-design=none] .forminator-button:before,.fluentform .ff-el-group button.ff-btn:before{display:var(--theme-button-shadow,block);position:absolute;z-index:-1;content:"";inset-inline:10px;inset-block:12px 0;opacity:0;border-radius:inherit;background:inherit;transition:opacity .2s ease;filter:blur(11px)}@media(hover:hover)and (prefers-reduced-motion:no-preference){.button:hover,.ct-button:hover,.entry-tags a:hover,.added_to_cart:hover,[type=submit]:hover,.wp-element-button:hover,.wp-block-button__link:hover,button.regform-button:hover,button[class*=ajax]:hover,.woocommerce button.button:hover,.woocommerce-message .showlogin:hover,.woocommerce-message .restore-item:hover,.forminator-ui[data-design=none] .forminator-button:hover,.fluentform .ff-el-group button.ff-btn:hover{transform:var(--theme-button-transform,translate3d(0,-3px,0))}.button:hover:before,.ct-button:hover:before,.entry-tags a:hover:before,.added_to_cart:hover:before,[type=submit]:hover:before,.wp-element-button:hover:before,.wp-block-button__link:hover:before,button.regform-button:hover:before,button[class*=ajax]:hover:before,.woocommerce button.button:hover:before,.woocommerce-message .showlogin:hover:before,.woocommerce-message .restore-item:hover:before,.forminator-ui[data-design=none] .forminator-button:hover:before,.fluentform .ff-el-group button.ff-btn:hover:before{opacity:.8}}}}.ct-button-ghost,.wp-block-buttons .wp-block-button .wp-block-button__link.is-style-outline,.wp-block-buttons .wp-block-button.is-style-outline .wp-block-button__link{--theme-button-text-initial-color:var(--theme-button-background-initial-color);border-width:2px;border-style:solid;color:var(--theme-button-text-initial-color);border-color:var(--theme-button-background-initial-color);background-color:rgba(0,0,0,0)}.ct-button-ghost:hover,.wp-block-buttons .wp-block-button .wp-block-button__link.is-style-outline:hover,.wp-block-buttons .wp-block-button.is-style-outline .wp-block-button__link:hover{color:var(--theme-button-text-hover-color);border-color:var(--theme-button-background-hover-color);background-color:var(--theme-button-background-hover-color)}.button,.ct-button,.added_to_cart,.ct-button-ghost,[type=submit],.wp-element-button,.wp-block-button__link,button.regform-button,button[class*=ajax],.woocommerce button.button,.woocommerce-message .showlogin,.woocommerce-message .restore-item,.forminator-ui[data-design=none] .forminator-button,.fluentform .ff-el-group button.ff-btn,.ct-button-secondary-text{font-family:var(--theme-button-font-family,var(--theme-font-family));font-size:var(--theme-button-font-size);font-weight:var(--theme-button-font-weight);font-style:var(--theme-button-font-style);line-height:var(--theme-button-line-height);letter-spacing:var(--theme-button-letter-spacing);text-transform:var(--theme-button-text-transform);-webkit-text-decoration:var(--theme-button-text-decoration);text-decoration:var(--theme-button-text-decoration)}[class*=ct-toggle]{display:flex;align-items:center;justify-content:center;position:var(--toggle-button-position,relative);z-index:var(--toggle-button-z-index,initial);cursor:pointer;-webkit-appearance:none;appearance:none;width:var(--toggle-button-size);height:var(--toggle-button-size);flex:0 0 var(--toggle-button-size);margin-inline-start:var(--toggle-button-margin-start,auto);margin-inline-end:var(--toggle-button-margin-end,initial);transition:border-color .12s cubic-bezier(.455,.03,.515,.955),background .12s cubic-bezier(.455,.03,.515,.955);padding:var(--toggle-button-padding,0px) !important;box-shadow:var(--toggle-button-shadow,none) !important;border-radius:var(--toggle-button-radius,0) !important;border-width:var(--toggle-button-border-width,0px) !important;border-style:var(--toggle-button-border-style,solid) !important;border-color:var(--toggle-button-border-color,transparent) !important;background:var(--toggle-button-background,transparent) !important}[class*=ct-toggle] svg{transform:var(--toggle-icon-transform);--theme-icon-transition:transform .15s ease-out,fill .12s cubic-bezier(.455,.03,.515,.955)}[class*=ct-toggle-close]{top:var(--toggle-button-top,initial);inset-inline-end:var(--toggle-button-inset-end,0);--theme-icon-size:12px;--theme-icon-color:rgba(255,255,255,.7)}[class*=ct-toggle-close]:hover{--toggle-icon-transform:rotate(90deg)}[class*=ct-toggle-close]:not([data-type=type-1]){--toggle-button-size:33px;--toggle-button-radius:5px}[class*=ct-toggle-close][data-type=type-1]{--outline-offset:5px}[class*=ct-toggle-close][data-type=type-2]{--toggle-button-border-width:1px;--toggle-button-border-color:rgba(0,0,0,.5)}[class*=ct-toggle-close][data-type=type-3]{--toggle-button-background:rgba(0,0,0,.5)}[data-button-state] .ct-button-loader{display:none}[data-button-state*=loading] .ct-button-loader{display:block}[data-button-state*=loading] svg:not(.ct-button-loader){display:none}[data-frame=default]{border:var(--theme-frame-size,0px) solid var(--theme-frame-color)}[data-frame=default]:before,[data-frame=default]:after{position:fixed;content:"";z-index:99999;left:0;width:100%;height:var(--theme-frame-size,0px);background:var(--theme-frame-color)}[data-frame=default]:before{top:calc(var(--admin-bar,0px))}[data-frame=default]:after{bottom:0}.entry-button{gap:.5em;font-size:15px;align-self:var(--horizontal-alignment,flex-start)}.entry-button:not([class*=ct-button]){display:flex;align-items:center}.entry-button[class*=ct-button]{min-height:40px;padding:5px 15px}.entries:not([data-cards=cover]) .entry-button{margin-top:auto}.ct-module-title:is(p,span):not(:empty){display:flex;margin-bottom:15px}.ct-slider-arrows{display:flex}.ct-slider-arrows span{position:relative;z-index:0;display:flex;align-items:center;justify-content:center;cursor:pointer;width:var(--slider-arrow-button-size,26px);height:var(--slider-arrow-button-size,26px);color:var(--theme-text-color);border:1px solid var(--theme-border-color);transition:all .12s cubic-bezier(.455,.03,.515,.955)}.ct-slider-arrows span:hover{z-index:1;color:var(--theme-button-text-hover-color);background:var(--theme-button-background-hover-color);border-color:var(--theme-button-background-hover-color)}.ct-slider-arrows .ct-arrow-prev{margin-inline-end:-1px;border-start-start-radius:3px;border-end-start-radius:3px}.ct-slider-arrows .ct-arrow-next{border-start-end-radius:3px;border-end-end-radius:3px}[data-cards=cover] .entry-card>.ct-media-container:after,.hero-section[data-type=type-2]>figure>.ct-media-container:after{position:absolute;content:"";inset:0}.gdpr-confirm-policy label a{text-decoration:underline}.ct-related-posts-container{display:var(--visibility,block);padding:var(--padding,50px) 0}.ct-related-posts .ct-module-title{text-align:var(--horizontal-alignment)}.ct-related-posts .ct-media-container{border-radius:var(--theme-border-radius,5px)}.ct-related-posts .related-entry-title{margin:15px 0 0;word-break:break-word}.ct-related-posts .related-entry-title a:not(:hover){color:inherit}.ct-related-posts .entry-meta{margin-top:5px;color:var(--theme-text-color);--theme-link-initial-color:var(--theme-text-color)}.ct-related-posts .flexy-items{margin-inline:calc(var(--grid-columns-gap,30px)/-2)}.ct-related-posts .flexy-items .flexy-item{flex:0 0 var(--grid-columns-width,25%);width:var(--grid-columns-width,25%);padding-inline:calc(var(--grid-columns-gap,30px)/2)}form:is(.login,.register,.edit-account,.lost_reset_password) [class*=password-input]{position:relative;display:block}form:is(.login,.register,.edit-account,.lost_reset_password) [class*=password-input] input{padding-inline-end:38px}form:is(.login,.register,.edit-account,.lost_reset_password) [class*=password-input] .show-password-input{position:absolute;inset-inline-end:12px;top:calc(var(--theme-form-field-height,40px)/2 - 7px);width:14px;height:14px;cursor:pointer;background-color:var(--theme-text-color);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.9,11.6C23.7,11.2,19.5,3,12,3S0.3,11.2,0.1,11.6c-0.1,0.3-0.1,0.6,0,0.9C0.3,12.8,4.5,21,12,21s11.7-8.2,11.9-8.6 C24,12.2,24,11.8,23.9,11.6zM12,19c-5.4,0-8.9-5.4-9.9-7c0.9-1.6,4.5-7,9.9-7c5.4,0,8.9,5.4,9.9,7C20.9,13.6,17.4,19,12,19zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8zM12,14c-1.1,0-2-0.9-2-2c0-1.1,0.9-2,2-2c1.1,0,2,0.9,2,2C14,13.1,13.1,14,12,14z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.9,11.6C23.7,11.2,19.5,3,12,3S0.3,11.2,0.1,11.6c-0.1,0.3-0.1,0.6,0,0.9C0.3,12.8,4.5,21,12,21s11.7-8.2,11.9-8.6 C24,12.2,24,11.8,23.9,11.6zM12,19c-5.4,0-8.9-5.4-9.9-7c0.9-1.6,4.5-7,9.9-7c5.4,0,8.9,5.4,9.9,7C20.9,13.6,17.4,19,12,19zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8zM12,14c-1.1,0-2-0.9-2-2c0-1.1,0.9-2,2-2c1.1,0,2,0.9,2,2C14,13.1,13.1,14,12,14z'/%3E%3C/svg%3E")}form:is(.login,.register,.edit-account,.lost_reset_password) [class*=password-input] input[type=text]~.show-password-input{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13.9,5.2C13.3,5.1,12.6,5,12,5c-5.4,0-8.9,5.4-9.9,7c0.5,0.9,1.1,1.8,1.8,2.5C4.3,15,4.2,15.6,3.8,16 c-0.2,0.2-0.4,0.2-0.6,0.2c-0.3,0-0.6-0.1-0.8-0.4c-0.9-1-1.6-2.2-2.3-3.4c-0.2-0.3-0.2-0.6,0-0.9C0.3,11.2,4.5,3,12,3c0.8,0,1.6,0.1,2.3,0.3c0.5,0.1,0.9,0.7,0.7,1.2C14.9,5,14.4,5.3,13.9,5.2z M0.3,22.3l22-22c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4L19.4,6c1.8,1.6,3.3,3.4,4.5,5.5c0.2,0.3,0.2,0.6,0,0.9C23.7,12.8,19.5,21,12,21c-2.1,0-4.1-0.6-5.8-1.8l-4.5,4.5C1.5,23.9,1.3,24,1,24s-0.5-0.1-0.7-0.3C-0.1,23.3-0.1,22.7,0.3,22.3zM14,11.4L11.4,14c0.2,0.1,0.4,0.1,0.6,0.1c0.5,0,1-0.2,1.4-0.5c0.4-0.4,0.6-0.9,0.6-1.4C14.1,11.9,14,11.7,14,11.4zM12,19c5.4,0,8.9-5.4,9.9-7c-1-1.8-2.3-3.3-3.9-4.6L15.5,10c0.4,0.7,0.6,1.5,0.6,2.3c0,1.1-0.5,2.1-1.3,2.8c-0.7,0.7-1.7,1.1-2.7,1.1c0,0-0.1,0-0.1,0c-0.7,0-1.4-0.3-2-0.6l-2.3,2.3C9,18.6,10.5,19,12,19z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13.9,5.2C13.3,5.1,12.6,5,12,5c-5.4,0-8.9,5.4-9.9,7c0.5,0.9,1.1,1.8,1.8,2.5C4.3,15,4.2,15.6,3.8,16 c-0.2,0.2-0.4,0.2-0.6,0.2c-0.3,0-0.6-0.1-0.8-0.4c-0.9-1-1.6-2.2-2.3-3.4c-0.2-0.3-0.2-0.6,0-0.9C0.3,11.2,4.5,3,12,3c0.8,0,1.6,0.1,2.3,0.3c0.5,0.1,0.9,0.7,0.7,1.2C14.9,5,14.4,5.3,13.9,5.2z M0.3,22.3l22-22c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4L19.4,6c1.8,1.6,3.3,3.4,4.5,5.5c0.2,0.3,0.2,0.6,0,0.9C23.7,12.8,19.5,21,12,21c-2.1,0-4.1-0.6-5.8-1.8l-4.5,4.5C1.5,23.9,1.3,24,1,24s-0.5-0.1-0.7-0.3C-0.1,23.3-0.1,22.7,0.3,22.3zM14,11.4L11.4,14c0.2,0.1,0.4,0.1,0.6,0.1c0.5,0,1-0.2,1.4-0.5c0.4-0.4,0.6-0.9,0.6-1.4C14.1,11.9,14,11.7,14,11.4zM12,19c5.4,0,8.9-5.4,9.9-7c-1-1.8-2.3-3.3-3.9-4.6L15.5,10c0.4,0.7,0.6,1.5,0.6,2.3c0,1.1-0.5,2.1-1.3,2.8c-0.7,0.7-1.7,1.1-2.7,1.1c0,0-0.1,0-0.1,0c-0.7,0-1.4-0.3-2-0.6l-2.3,2.3C9,18.6,10.5,19,12,19z'/%3E%3C/svg%3E")}.ct-featured-image{margin-left:auto;margin-right:auto}.ct-featured-image .ct-media-container{border-radius:var(--theme-border-radius)}.ct-featured-image:not(.alignfull){width:var(--theme-block-width)}.ct-featured-image:not(.alignwide):not(.alignfull){max-width:var(--theme-block-max-width)}.ct-featured-image.alignwide{max-width:var(--theme-block-wide-max-width)}@media(max-width:999.98px){.ct-featured-image{padding-bottom:30px}}@media(min-width:1000px){.ct-featured-image{padding-bottom:50px}}.ct-featured-image figcaption{font-size:14px;text-align:center;margin-top:5px}.post-edit-link{display:flex;align-items:center;font-size:15px;margin-top:var(--theme-content-spacing);--theme-link-initial-color:var(--theme-text-color)}.post-edit-link:before{font-family:"dashicons";content:"";margin-inline-end:5px}.ct-video-indicator{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:opacity .12s cubic-bezier(.455,.03,.515,.955),visibility .12s cubic-bezier(.455,.03,.515,.955)}.ct-video-indicator svg{border-radius:100%;transition:transform .12s cubic-bezier(.455,.03,.515,.955)}.ct-video-indicator svg:hover{transform:scale3d(1.1,1.1,1)}.ct-video-indicator .ct-video-loader{visibility:hidden}.ct-video-indicator.loading svg{background:#fff}.ct-video-indicator.loading .ct-video-loader{visibility:visible}.ct-dynamic-media:not([data-state=playing]) .ct-pause-path,.ct-media-container:not([data-state=playing]) .ct-pause-path{display:none}.ct-expandable-trigger[data-icon=arrow]{cursor:pointer;background-color:rgba(0,0,0,0);--theme-icon-size:10px;--theme-icon-transition:transform .1s ease}.ct-expandable-trigger[data-icon=arrow][aria-expanded=false] .ct-icon{transform:rotate(180deg)}[data-behaviour=drop-down][aria-hidden=true]{height:0;overflow-y:clip;visibility:hidden}[data-behaviour=drop-down].is-animating{transition:height .2s ease,opacity .2s ease;overflow-y:clip}nav[class*=menu] .ct-menu-link{color:var(--theme-link-initial-color);--theme-icon-color:var(--theme-link-initial-color)}nav[class*=menu] li:hover>.ct-menu-link,nav[class*=menu] li:hover>.ct-sub-menu-parent{color:var(--theme-link-hover-color)}nav[class*=menu] li:hover>.ct-menu-link svg,nav[class*=menu] li:hover>.ct-sub-menu-parent svg{fill:var(--theme-icon-hover-color,var(--theme-link-hover-color))}nav[class*=menu] li[class*=current-menu-]>.ct-menu-link,nav[class*=menu] li[class*=current-menu-]>.ct-sub-menu-parent{color:var(--theme-link-active-color,var(--theme-link-hover-color))}nav[class*=menu] li[class*=current-menu-]>.ct-menu-link svg,nav[class*=menu] li[class*=current-menu-]>.ct-sub-menu-parent svg{fill:var(--theme-icon-active-color,var(--theme-icon-hover-color,var(--theme-link-active-color,var(--theme-link-hover-color))))}.menu{display:flex;gap:var(--menu-items-gap,0px)}.menu li.menu-item,.menu li.page_item{display:flex;align-items:center}.menu>li>.ct-menu-link{white-space:nowrap;justify-content:var(--menu-item-alignment,center);height:var(--menu-item-height,100%);--menu-item-padding:0 calc(var(--menu-items-spacing,25px)/2)}.ct-menu-link{display:flex;align-items:center;position:relative;width:100%;border-radius:var(--menu-item-radius,inherit)}.ct-menu-link:not(:empty){padding:var(--menu-item-padding,0px)}[data-stretch]{width:100%}[data-stretch]>.menu{width:inherit;justify-content:space-between}.ct-create-menu{display:flex;align-items:center;height:100%;font-size:14px}[data-menu]>ul>li>a:before,[data-menu]>ul>li>a:after{position:absolute;left:var(--menu-indicator-left,0);right:var(--menu-indicator-right,0);margin:var(--menu-indicator-margin,0);height:var(--menu-indicator-height,2px);opacity:var(--menu-indicator-opacity,0);background-color:var(--menu-indicator-hover-color,var(--theme-palette-color-2));transition:opacity .12s cubic-bezier(.455,.03,.515,.955),width .12s cubic-bezier(.455,.03,.515,.955),height .12s cubic-bezier(.455,.03,.515,.955),top .12s cubic-bezier(.455,.03,.515,.955),bottom .12s cubic-bezier(.455,.03,.515,.955)}[data-menu]>ul>li>a:before{top:var(--menu-indicator-y-position,0)}[data-menu]>ul>li>a:after{bottom:var(--menu-indicator-y-position,0)}[data-menu]>ul>li[class*=current-menu-]>a:before,[data-menu]>ul>li[class*=current-menu-]>a:after{background-color:var(--menu-indicator-active-color,var(--menu-indicator-hover-color,var(--theme-palette-color-2)))}[data-column=start] [data-items=primary] [data-menu*=type-1]:first-child>ul>li:first-child>a{padding-inline-start:0}[data-column=end] [data-items=primary] [data-menu*=type-1]:last-child>ul>li:last-child{--toggle-ghost-inset-end:16px}[data-column=end] [data-items=primary] [data-menu*=type-1]:last-child>ul>li:last-child>a{padding-inline-end:0}[data-menu*=type-2]>ul>li>a:after{content:"";width:var(--menu-indicator-width,100%)}[data-menu*=type-2]>ul>li:hover>a,[data-menu*=type-2]>ul>li[class*=current-menu-]>a{--menu-indicator-opacity:1}[data-menu="type-2:center"]>ul>li{--menu-indicator-width:0;--menu-indicator-margin:0 auto}[data-menu="type-2:center"]>ul>li:hover>a,[data-menu="type-2:center"]>ul>li[class*=current-menu-]>a{--menu-indicator-width:calc(100% - var(--menu-items-spacing,25px))}[data-menu="type-2:left"]>ul>li{--menu-indicator-opacity:1;--menu-indicator-left:calc(var(--menu-items-spacing,25px)/2);--menu-indicator-width:0}[data-menu="type-2:left"]>ul>li:hover>a,[data-menu="type-2:left"]>ul>li[class*=current-menu-]>a{--menu-indicator-width:calc(100% - var(--menu-items-spacing,25px))}[data-menu*=type-3]>ul>li:hover>a{background-color:var(--menu-indicator-hover-color,var(--theme-palette-color-2))}[data-menu*=type-3]>ul>li[class*=current-menu-]>a{background-color:var(--menu-indicator-active-color,var(--menu-indicator-hover-color,var(--theme-palette-color-2)))}[data-menu*=type-4]>ul>li>a:before,[data-menu*=type-4]>ul>li>a:after{content:"";--menu-indicator-y-position:10px}[data-menu*=type-4]>ul>li:hover>a:before,[data-menu*=type-4]>ul>li:hover>a:after,[data-menu*=type-4]>ul>li[class*=current-menu-]>a:before,[data-menu*=type-4]>ul>li[class*=current-menu-]>a:after{--menu-indicator-opacity:1;--menu-indicator-y-position:0px}[data-responsive=no]{overflow:hidden}[data-responsive=no] .sub-menu{display:none}[class*=animated-submenu][data-submenu]{position:relative}[class*=animated-submenu]>.sub-menu{position:var(--dropdown-position,absolute);top:100%;z-index:10;min-width:100px;margin-top:var(--sticky-state-dropdown-top-offset,var(--dropdown-top-offset,0));border-radius:var(--theme-border-radius);width:var(--dropdown-width,200px);background-color:var(--dropdown-background-color,var(--theme-palette-color-4));box-shadow:var(--theme-box-shadow)}[class*=animated-submenu]>.sub-menu:before{position:absolute;content:"";top:0;left:0;width:100%;height:var(--sticky-state-dropdown-top-offset,var(--dropdown-top-offset,0));transform:translateY(-100%);transition:height .2s ease}.animated-submenu-block[data-submenu=right]>.sub-menu{left:var(--theme-submenu-inline-offset,0)}.animated-submenu-block[data-submenu=left]>.sub-menu{right:var(--theme-submenu-inline-offset,0)}.animated-submenu-inline>.sub-menu{top:0;margin-top:0}.animated-submenu-inline>.sub-menu:before{width:var(--dropdown-horizontal-offset,5px);height:100%;transform:initial}.animated-submenu-inline[data-submenu=right]>.sub-menu{left:calc(100% + var(--dropdown-horizontal-offset,5px))}.animated-submenu-inline[data-submenu=right]>.sub-menu:before{left:calc(var(--dropdown-horizontal-offset,5px)*-1);right:initial}.animated-submenu-inline[data-submenu=left]>.sub-menu{right:calc(100% + var(--dropdown-horizontal-offset,5px))}.animated-submenu-inline[data-submenu=left]>.sub-menu:before{left:initial;right:calc(var(--dropdown-horizontal-offset,5px)*-1)}.ct-toggle-dropdown-desktop{--theme-icon-size:8px;--toggle-button-size:24px;--toggle-button-margin-end:-8px;--toggle-button-margin-start:var(--dropdown-toggle-margin-start,.2em)}.animated-submenu-inline [class*=ct-toggle]{--toggle-button-size:18px;--dropdown-toggle-margin-start:auto;--toggle-ghost-inset-end:calc(var(--dropdown-items-spacing,13px)*1.5 + 16px)}.animated-submenu-inline[data-submenu=left]>a{--toggle-icon-transform:rotate(90deg)}.animated-submenu-inline[data-submenu=right]>a{--toggle-icon-transform:rotate(-90deg)}.ct-toggle-dropdown-desktop-ghost{pointer-events:none;inset-inline-end:var(--toggle-ghost-inset-end,calc(var(--menu-items-spacing,25px)/2 + 16px));--toggle-button-size:24px;--toggle-button-margin-end:-24px}.sub-menu{--menu-item-padding:var(--dropdown-items-spacing,13px) calc(var(--dropdown-items-spacing,13px)*1.5)}.sub-menu .menu-item{border-top:var(--dropdown-divider)}[class*=animated-submenu]>.sub-menu{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease,visibility .2s ease,transform .2s ease,margin .2s ease,height .2s ease}[class*=animated-submenu].ct-active>.sub-menu{opacity:1;visibility:visible;pointer-events:auto}[class*=animated-submenu]:not(.ct-active):not([class*=ct-mega-menu])>.sub-menu{overflow:hidden;max-height:calc(100vh - var(--header-height) - var(--admin-bar,0px) - var(--theme-frame-size,0px) - 10px)}[data-dropdown*=type-1] [class*=animated-submenu]>.sub-menu{transform:translate3d(0,10px,0)}[data-dropdown*=type-1] [class*=animated-submenu].ct-active>.sub-menu{transform:translate3d(0,0,0)}[data-dropdown*=type-3] [class*=animated-submenu]>.sub-menu>li{transition:opacity .5s cubic-bezier(.35,.81,.41,1),transform .5s cubic-bezier(.35,.81,.41,1)}[data-dropdown*=type-3] [class*=animated-submenu]:not(.ct-active)>.sub-menu>li{opacity:0;transform:translate3d(0,5px,0)}[data-dropdown*=type-4] [class*=animated-submenu]>.sub-menu{transition:none}.mobile-menu{width:100%}.mobile-menu li{display:flex;flex-direction:column;align-items:var(--horizontal-alignment)}.mobile-menu .ct-menu-link{text-align:var(--text-horizontal-alignment);justify-content:var(--horizontal-alignment);--menu-item-padding:var(--items-vertical-spacing,5px) 0}.mobile-menu .ct-sub-menu-parent{display:flex;align-items:center;column-gap:10px}.mobile-menu [class*=children]>ul{position:relative;width:calc(100% + 10px);margin-inline-end:-10px;padding-inline-end:10px;overflow:hidden}.mobile-menu [class*=children]>ul.is-animating{transition:height .3s ease}.mobile-menu[data-interaction=click] [class*=children]:not(.dropdown-active)>ul{display:none}.mobile-menu-inline ul,.footer-menu-inline ul{flex-wrap:wrap;justify-content:var(--horizontal-alignment);row-gap:calc(var(--menu-items-spacing,25px)/2);margin:0 calc(var(--menu-items-spacing,25px)/2*-1)}.footer-menu-inline{--menu-item-alignment:var(--horizontal-alignment)}.footer-menu-inline li{width:var(--menu-item-width)}#header{position:relative;z-index:50}@media(max-width:999.98px){#header [data-device=desktop]{display:none}}@media(min-width:1000px){#header [data-device=mobile]{display:none}}#header [data-row]{position:var(--position,relative);box-shadow:var(--theme-box-shadow);border-top:var(--theme-border-top);border-bottom:var(--theme-border-bottom);-webkit-backdrop-filter:blur(var(--theme-backdrop-blur));backdrop-filter:blur(var(--theme-backdrop-blur))}#header [data-row]>div{min-height:var(--shrink-height,var(--height));border-top:var(--theme-border-top);border-bottom:var(--theme-border-bottom)}#header [data-row*=top]{z-index:3}#header [data-row*=middle]{z-index:2}#header [data-row*=bottom]{z-index:1}#header [data-row*=boxed]{box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}#header [data-row*=boxed]>div{padding:var(--padding,0 35px);box-shadow:var(--theme-box-shadow);border-radius:var(--row-border-radius);-webkit-backdrop-filter:blur(var(--theme-backdrop-blur));backdrop-filter:blur(var(--theme-backdrop-blur))}@media(max-width:689.98px){#header [data-row*=boxed]>div{--padding:0 5vw}}@media(min-width:690px)and (max-width:999.98px){#header [data-row*=boxed]>div{--padding:0 4vw}}#header [data-column]{min-height:inherit}#header [data-column=middle]{display:flex}#header [data-column=start],#header [data-column=end]{min-width:0}#header [data-items]{width:100%}#header [data-column-set="2"]>div{display:grid;grid-template-columns:auto auto}#header [data-column-set="3"]>div{display:grid;grid-template-columns:1fr var(--middle-column-width,auto) 1fr}[data-placements]{display:grid}[data-placements="2"]{display:grid;grid-template-columns:auto auto}[data-column=middle]>[data-items]{justify-content:center}[data-column=start]>[data-items=secondary]{justify-content:flex-end}[data-column=end]>[data-items=primary]{justify-content:flex-end}#header [data-items]{display:flex;align-items:center;min-width:0}#header [data-items]>*{margin:var(--margin,0 10px)}[data-column=start] [data-items=primary]>*:first-child{--margin:0 10px 0 0}[data-column=end] [data-items=primary]>*:last-child{--margin:0 0 0 10px}.ct-cart-item,.ct-header-cta,.ct-header-text,.ct-account-item,.ct-header-compare,.ct-header-wishlist{display:flex;align-items:var(--align-items,center)}.ct-cart-item,.ct-social-box,.ct-account-item,.ct-header-compare,.ct-header-wishlist{--theme-link-initial-color:var(--theme-text-color)}.ct-cart-item:hover svg,.ct-social-box a:hover svg,.ct-color-switch:hover svg,.ct-header-search:hover svg,.ct-account-item:hover svg,.ct-header-trigger:hover svg,.ct-header-compare:hover svg,.ct-header-wishlist:hover svg,.ct-language-switcher:hover svg{fill:var(--theme-icon-hover-color,var(--theme-palette-color-2))}.ct-color-switch,.ct-header-search,.ct-header-trigger{--theme-link-initial-color:var(--theme-text-color)}.ct-color-switch .ct-label,.ct-header-search .ct-label,.ct-header-trigger .ct-label{transition:inherit;color:var(--theme-link-initial-color)}.ct-color-switch:hover .ct-label,.ct-header-search:hover .ct-label,.ct-header-trigger:hover .ct-label{color:var(--theme-link-hover-color)}.ct-builder-no-item{font-size:13px}[class*=header-menu]{display:flex;align-items:center;height:100%;min-width:0}[class*=header-menu] .menu{height:inherit}#search-modal{--vertical-alignment:initial}#search-modal input{--has-classic-forms:var(--false);--theme-form-field-border-width:0 0 1px;--search-input-additional-padding:10px}@media(max-width:689.98px){#search-modal input{--theme-form-font-size:22px;--theme-form-field-height:70px;--theme-form-field-padding:0px;margin-bottom:25px}}@media(min-width:690px){#search-modal input{--theme-form-font-size:35px;--theme-form-field-height:90px;--theme-form-field-padding:0 50px 0 0;margin-bottom:35px}}#search-modal form{display:block;margin:auto;width:100%;max-width:var(--max-width,800px)}@media(max-width:999.98px){#search-modal form{--max-width:90%;--search-button-size:40px}}@media(min-width:690px){#search-modal form{--search-button-size:48px}}#search-modal form .ct-search-form-controls{position:absolute;inset-inline-end:0}@media(max-width:689.98px){#search-modal form .ct-search-form-controls{top:15px}}@media(min-width:690px){#search-modal form .ct-search-form-controls{top:21px}}#search-modal form .ct-search-form-controls button{--theme-button-border-radius:100%;--theme-icon-size:calc(100%/3)}.ct-header-text{color:var(--theme-text-color);text-align:var(--horizontal-alignment)}.ct-header-text[data-width=stretch]{width:100%;max-width:var(--max-width)}.ct-header-text .entry-content{width:100%}.ct-header-trigger .ct-icon{transition:none}.ct-header-trigger .ct-icon rect{transform-origin:50% 50%;transition:all .12s cubic-bezier(.455,.03,.515,.955)}.ct-header-trigger .ct-icon[data-type=type-2] rect:nth-child(1){width:10px}.ct-header-trigger .ct-icon[data-type=type-2] rect:nth-child(3){width:15px}.ct-header-trigger .ct-icon[data-type=type-3] rect:nth-child(1),.ct-header-trigger .ct-icon[data-type=type-3] rect:nth-child(3){width:12px}.ct-header-trigger .ct-icon[data-type=type-3] rect:nth-child(1){x:6px}.ct-header-trigger:hover [data-type=type-2] rect:nth-child(1),.ct-header-trigger:hover [data-type=type-2] rect:nth-child(3),.ct-header-trigger:hover [data-type=type-3] rect:nth-child(1),.ct-header-trigger:hover [data-type=type-3] rect:nth-child(3){width:18px}.ct-header-trigger:hover [data-type=type-3] rect:nth-child(1){x:0px}.ct-header-trigger[aria-expanded=true] .ct-icon rect:nth-child(1),.ct-header-trigger[aria-expanded=true] .ct-icon rect:nth-child(3){width:18px;y:6.15px}.ct-header-trigger[aria-expanded=true] .ct-icon rect:nth-child(1){x:0px;transform:rotate(45deg)}.ct-header-trigger[aria-expanded=true] .ct-icon rect:nth-child(2){opacity:0}.ct-header-trigger[aria-expanded=true] .ct-icon rect:nth-child(3){transform:rotate(-45deg)}.ct-header-trigger[data-design*=outline]{--toggle-button-border-width:1px;--toggle-button-border-color:var(--secondColor,rgba(224,229,235,.9))}.ct-header-trigger[data-design*=outline]:hover{--toggle-button-border-color:var(--secondColorHover,rgba(224,229,235,.9))}.ct-header-trigger[data-design*=solid]{--toggle-button-background:var(--secondColor,rgba(224,229,235,.9))}.ct-header-trigger[data-design*=solid]:hover{--toggle-button-background:var(--secondColorHover,rgba(224,229,235,.9))}.site-branding{display:flex;text-align:var(--horizontal-alignment)}.site-branding:not([data-logo=top]){align-items:center}.site-title{display:block;margin-bottom:0}.site-description{color:var(--theme-text-color);margin-bottom:0}@media(min-width:1000px){.site-description{white-space:nowrap}}.site-description:not(:only-child){margin-top:.3em}.site-logo-container{position:relative;line-height:0;height:var(--logo-shrink-height,var(--logo-max-height,50px));transition:none}.site-logo-container img{width:auto;max-width:initial;object-fit:contain}.site-logo-container img,.site-logo-container svg,.site-logo-container picture{height:inherit;vertical-align:initial}.sticky-logo,.dark-mode-logo{display:none}[data-sticky*=yes] .sticky-logo{display:initial}[data-sticky*=yes] .sticky-logo~.default-logo{display:none}[data-color-mode*=dark] .dark-mode-logo{display:initial}[data-color-mode*=dark] .dark-mode-logo~.sticky-logo,[data-color-mode*=dark] .dark-mode-logo~.default-logo{display:none}@media(prefers-color-scheme:dark){[data-color-mode*=os-default] .dark-mode-logo{display:initial}[data-color-mode*=os-default] .dark-mode-logo~.sticky-logo,[data-color-mode*=os-default] .dark-mode-logo~.default-logo{display:none}}[data-logo=top]{flex-direction:column}[data-logo=top] .site-description{margin-top:.3em}[data-logo=left] .site-title-container{margin-inline-start:1em}[data-logo=right]{flex-direction:row-reverse}[data-logo=right] .site-title-container{margin-inline-end:1em}.ct-header-cta{--theme-button-line-height:1.3;--theme-icon-color:currentColor}.ct-header-cta a{gap:.5em}.ct-header-cta [data-size=small]{--theme-button-min-height:34px;--theme-button-padding:5px 15px;--theme-button-font-size:13px}.ct-header-cta [data-size=medium]{--theme-button-min-height:42px;--theme-button-padding:5px 20px}.ct-header-cta [data-size=large]{--theme-button-min-height:50px;--theme-button-padding:5px 30px;--theme-button-font-size:16px}.ct-header-cta .ct-button-text{display:flex;flex-direction:column;text-align:var(--horizontal-alignment)}.ct-header-cta .ct-button-secondary-text{color:var(--theme-button-text-initial-color);transition:color .12s cubic-bezier(.455,.03,.515,.955)}.ct-header-cta a:hover .ct-button-secondary-text{color:var(--theme-button-text-hover-color)}#offcanvas .ct-panel-content-inner{--margin:0 0 20px}#offcanvas .ct-panel-content-inner>*{margin:var(--margin)}#offcanvas .ct-panel-content-inner>*:first-child{margin-top:0}#offcanvas .ct-panel-content-inner>*:last-child{margin-bottom:0}@media(max-width:999.98px){#offcanvas [data-device=desktop]{display:none}}@media(min-width:1000px){#offcanvas [data-device=mobile]{display:none}}.ct-header-cart,.ct-header-account,.ct-language-switcher[data-type=dropdown]{position:relative}.ct-header-cart:hover [data-placement],.ct-header-cart:focus-within [data-placement],.ct-header-account:hover [data-placement],.ct-header-account:focus-within [data-placement],.ct-language-switcher[data-type=dropdown]:hover [data-placement],.ct-language-switcher[data-type=dropdown]:focus-within [data-placement]{opacity:1;visibility:visible;transform:translate3d(0,0,0)}.ct-cart-content,.ct-header-account>ul,.ct-language-switcher[data-type=dropdown]>ul{position:absolute;z-index:15;top:100%;opacity:0;visibility:hidden;transform:translate3d(0,10px,0);transition:opacity .2s ease,visibility .2s ease,transform .2s ease}.ct-cart-content:not([data-placement]) *,.ct-header-account>ul:not([data-placement]) *,.ct-language-switcher[data-type=dropdown]>ul:not([data-placement]) *{transition:none}#offcanvas .ct-cart-content,#offcanvas .ct-header-account>ul,#offcanvas .ct-language-switcher[data-type=dropdown]>ul{display:none}[data-sticky*=yes],[data-sticky*=fixed]{position:fixed;z-index:5;top:calc(var(--admin-bar,0px) + var(--theme-frame-size,0px) + var(--header-sticky-offset,0px));left:var(--theme-frame-size,0px);right:calc(var(--theme-frame-size,0px) + var(--scrollbar-width,0px))}[data-sticky*=slide][data-sticky*=yes-start]{transform:translateY(-100%)}[data-sticky*=slide][data-sticky*=yes-end]{transition:transform .2s cubic-bezier(.455,.03,.515,.955)}[data-sticky*=slide][data-sticky*=yes-hide-start]{transform:none}[data-sticky*=slide][data-sticky*=yes-hide-end]{transform:translateY(-100%);transition:transform .2s cubic-bezier(.455,.03,.515,.955)}[data-sticky*=fade][data-sticky*=yes-start]{opacity:0}[data-sticky*=fade][data-sticky*=yes-end]{transition:opacity .2s cubic-bezier(.455,.03,.515,.955)}[data-sticky*=fade][data-sticky*=yes-hide-start]{opacity:1}[data-sticky*=fade][data-sticky*=yes-hide-end]{opacity:0;transition:opacity .2s cubic-bezier(.455,.03,.515,.955)}[data-sticky],[data-sticky] [data-row],[data-sticky] [data-row*=boxed]>div{transition:box-shadow .2s cubic-bezier(.455,.03,.515,.955),background-color .2s cubic-bezier(.455,.03,.515,.955),-webkit-backdrop-filter .2s cubic-bezier(.455,.03,.515,.955);transition:box-shadow .2s cubic-bezier(.455,.03,.515,.955),backdrop-filter .2s cubic-bezier(.455,.03,.515,.955),background-color .2s cubic-bezier(.455,.03,.515,.955);transition:box-shadow .2s cubic-bezier(.455,.03,.515,.955),backdrop-filter .2s cubic-bezier(.455,.03,.515,.955),background-color .2s cubic-bezier(.455,.03,.515,.955),-webkit-backdrop-filter .2s cubic-bezier(.455,.03,.515,.955)}[data-sticky] .ct-header-text,[data-sticky] .site-description{transition:color .12s cubic-bezier(.455,.03,.515,.955)}@media(max-width:999.98px){[data-device=mobile][data-transparent]{position:absolute;top:0;left:0;right:0}}@media(min-width:1000px){[data-device=desktop][data-transparent]{position:absolute;top:0;left:0;right:0}}.ct-footer{padding:var(--footer-container-padding)}.ct-footer.ct-container{margin-bottom:var(--footer-container-bottom-offset);border-radius:var(--footer-container-border-radius)}.ct-footer [data-row]>div{display:grid;grid-template-columns:var(--grid-template-columns);grid-column-gap:var(--columns-gap,50px);grid-row-gap:var(--columns-gap,50px);padding-block:var(--container-spacing)}.ct-footer [data-column]{display:flex;flex-direction:column;align-items:var(--horizontal-alignment);justify-content:var(--vertical-alignment,flex-start)}.ct-footer [data-column*=widget]{text-align:var(--text-horizontal-alignment)}@media(max-width:999.98px){.ct-footer [data-column=ghost]{display:none}}.ct-footer [data-row]{border-top:var(--theme-border-top);border-bottom:var(--theme-border-bottom)}.ct-footer [data-row]>div{border-top:var(--theme-border-top);border-bottom:var(--theme-border-bottom)}@media(min-width:1000px){.ct-footer [data-column]{position:relative}.ct-footer [data-column]:not(:last-child):after{position:absolute;content:"";top:calc(var(--container-spacing)*-1);inset-inline-end:calc(var(--columns-gap,50px)/2*-1);height:calc(100% + var(--container-spacing)*2);border-inline-end:var(--theme-border)}}[data-columns-divider]{position:relative}[data-columns-divider]:after{position:absolute;inset:0;width:0;margin:0 auto;border-inline-end:var(--theme-border)}@media(min-width:690px)and (max-width:999.98px){[data-columns-divider*=md]:after{content:""}}@media(max-width:689.98px){[data-columns-divider*=sm]:after{content:""}}[data-footer*=reveal] .site-main{box-shadow:var(--footer-box-shadow)}[data-footer*=reveal] .site-main,[data-footer*=reveal] #main-container{background:inherit}[data-footer*=reveal] .site-main,[data-footer*=reveal] .ct-trending-block{z-index:1}[data-footer*=reveal] #main-container>[data-block]{z-index:2}[data-footer*=reveal] .ct-footer{position:var(--position);bottom:var(--theme-frame-size,0px)}.ct-footer [data-column]>[data-id]{margin:var(--margin)}[data-column*=copyright]{display:flex;flex-direction:column;justify-content:var(--vertical-alignment);text-align:var(--horizontal-alignment)}.ct-footer-copyright{color:var(--theme-text-color);--theme-content-spacing:0;--theme-link-initial-color:var(--theme-text-color)}.ct-footer-copyright>*:not(:first-child){margin-top:.5em}.ct-footer-socials .ct-social-box{justify-content:var(--horizontal-alignment)}.ct-footer .ct-widget{color:var(--theme-text-color);margin:var(--margin);--theme-link-initial-color:var(--theme-text-color)}.ct-footer .ct-widget:not(:first-child){margin-top:var(--widgets-gap,40px)}.ct-search-form{position:relative;display:flex;isolation:isolate;--theme-link-initial-color:var(--theme-text-color)}.ct-search-form input{z-index:2}.ct-search-form input::-webkit-search-cancel-button{-webkit-appearance:none}.ct-search-form[data-form-controls=inside] .wp-element-button{transform:none;box-shadow:none;border-radius:var(--has-classic-forms,var(--theme-form-field-border-radius,3px));border-start-start-radius:0;border-end-start-radius:0;border-width:var(--theme-form-field-border-width,1px);border-style:var(--theme-form-field-border-style,solid);border-color:var(--theme-form-field-border-initial-color);--theme-icon-size:13px;--theme-button-text-initial-color:var(--theme-text-color);--theme-button-text-hover-color:var(--theme-form-field-border-focus-color);--theme-button-background-initial-color:var(--has-classic-forms,var(--theme-form-field-background-initial-color));--theme-button-background-hover-color:var(--has-classic-forms,var(--theme-form-field-background-initial-color))}.ct-search-form[data-form-controls=inside]:not([data-taxonomy-filter=true]) [data-button*=icon]{border-inline-start:0}.ct-search-form[data-form-controls=outside] .wp-element-button{margin-inline-start:10px;border-radius:var(--theme-form-field-border-radius,3px)}.ct-search-form[data-taxonomy-filter=true] input,.ct-search-form[data-form-controls=inside] input,.ct-search-form[data-form-controls=inside] select{border-inline-end:0;border-start-end-radius:0;border-end-end-radius:0}.ct-search-form input:focus~.ct-search-form-controls select,.ct-search-form input:focus~.ct-search-form-controls [data-button*=inside]{border-color:var(--theme-form-field-border-focus-color);background-color:var(--has-classic-forms,var(--theme-form-field-background-focus-color))}.ct-search-form .ct-search-form-controls{display:flex;z-index:2}.ct-search-form select{font-size:14px;width:var(--search-form-select-width,auto);border-start-start-radius:0;border-end-start-radius:0}.ct-search-form select:focus{--theme-form-field-border-focus-color:var(--theme-form-field-border-initial-color)}.ct-search-form .wp-element-button{white-space:nowrap;--theme-button-min-height:var(--search-button-size,var(--theme-form-field-height,40px))}.ct-search-form .wp-element-button[data-button*=icon]{padding:initial;width:var(--search-button-size,var(--theme-form-field-height,40px));--theme-icon-color:currentColor}.ct-search-form .ct-ajax-loader{opacity:0;--loader-size:18px}.ct-search-form.ct-has-dropdown{z-index:2}.widget_media_gallery .gallery{display:grid;grid-column-gap:10px;grid-row-gap:10px}.widget_media_gallery .gallery-columns-2{grid-template-columns:repeat(2,1fr)}.widget_media_gallery .gallery-columns-3{grid-template-columns:repeat(3,1fr)}.widget_media_gallery .gallery-columns-4{grid-template-columns:repeat(4,1fr)}.widget_media_gallery .gallery-columns-5{grid-template-columns:repeat(5,1fr)}.widget_media_gallery .gallery-columns-6{grid-template-columns:repeat(6,1fr)}.widget_media_gallery .gallery-item a:hover{opacity:.8}@media(max-width:689.98px){.ct-query-template-grid{--ct-grid-columns:var(--ct-grid-columns-mobile)}}@media(min-width:690px)and (max-width:999.98px){.ct-query-template-grid{--ct-grid-columns:var(--ct-grid-columns-tablet)}}[class*=ct-contact-info]{--theme-link-initial-color:var(--theme-block-text-color,var(--theme-text-color))}[class*=ct-contact-info] ul{display:flex;flex-direction:var(--items-direction,row);flex-wrap:wrap;gap:var(--items-spacing,15px);align-items:var(--horizontal-alignment);text-align:start}[class*=ct-contact-info] li{display:flex;column-gap:15px;align-items:center}[class*=ct-contact-info] li:hover a{color:var(--theme-link-hover-color)}[class*=ct-contact-info] .contact-info{flex:1;display:flex;flex-direction:column;word-break:break-word;color:var(--theme-block-text-color,var(--theme-text-color))}[class*=ct-contact-info] .contact-title{font-weight:600}.ct-dynamic-data a{--theme-link-initial-color:initial}.ct-dynamic-media{display:flex;overflow:hidden;position:relative}.ct-dynamic-media img{aspect-ratio:inherit}@media(hover:hover){.ct-dynamic-media[data-hover] img{transition:transform .5s ease}.ct-dynamic-media[data-hover=zoom-in]:hover img{transform:scale(1.1)}.ct-dynamic-media[data-hover=zoom-out] img{transform:scale(1.1)}.ct-dynamic-media[data-hover=zoom-out]:hover img{transform:scale(1)}}.ct-dynamic-media[style*=border-width]{border-style:solid}.ct-dynamic-data-layer{color:var(--theme-text-color);--theme-link-initial-color:var(--theme-text-color)}.ct-dynamic-data-layer>span{margin-inline-end:5px}.ct-widget li ul,.ct-widget li ol{--theme-list-indent:25px}[data-panel*=in] [data-behaviour=modal].active .ct-panel-content,[data-panel*=out] [data-behaviour=modal] .ct-panel-content{animation-duration:.25s;animation-fill-mode:both}[data-panel*=in] [data-behaviour=modal].active{opacity:1;visibility:visible}[data-panel*=in] [data-behaviour=modal].active .ct-panel-content{animation-name:move-in}[data-panel*=out] [data-behaviour=modal] .ct-panel-content{animation-name:move-out}@keyframes move-in{0%{opacity:0;transform:translate3d(0,-40px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}@keyframes move-out{0%{transform:translate3d(0,0,0)}100%{transform:translate3d(0,40px,0)}}[data-behaviour*=side] .ct-panel-inner{position:absolute;inset-block:0;height:100%;width:var(--side-panel-width,500px);box-shadow:var(--theme-box-shadow);transition:transform .25s ease-in-out}[data-behaviour*=side].active .ct-panel-inner{transform:translate3d(0,0,0)}[data-behaviour*=right-side] .ct-panel-inner{align-self:flex-end;transform:translate3d(var(--theme-panel-reveal-right,20%),0,0)}[data-behaviour*=left-side] .ct-panel-inner{align-self:flex-start;transform:translate3d(var(--theme-panel-reveal-left,-20%),0,0)}body[data-panel]{padding-right:var(--scrollbar-width,0px)}.ct-panel{display:flex;flex-direction:column;position:fixed;z-index:999999;inset:var(--admin-bar,0px) 0 0 0;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .25s ease-in-out,visibility .25s ease-in-out}.ct-panel.active{opacity:1;visibility:visible;pointer-events:auto}.ct-panel .ct-panel-inner{display:flex;flex-direction:column}@media(max-width:689.98px){.ct-panel .ct-panel-inner{--panel-padding:25px}}.ct-panel-actions{display:flex;align-items:center;padding-inline:var(--panel-padding,35px)}@media(max-width:689.98px){.ct-panel-actions{padding-top:20px}}@media(min-width:690px){.ct-panel-actions{padding-top:30px}}.ct-panel-actions .ct-panel-heading{font-size:15px;font-weight:600;color:var(--theme-text-color)}.ct-panel-actions .close-button{margin-inline-start:auto}.ct-panel-content{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:var(--vertical-alignment,flex-start)}.ct-panel-content-inner{display:flex;flex-direction:column;align-items:var(--horizontal-alignment,flex-start);overflow-y:var(--overflow,auto);padding:var(--panel-padding,35px)}.ct-social-box{display:flex;flex-direction:var(--items-direction,row);flex-wrap:var(--wrap,wrap);gap:var(--items-spacing,15px)}.ct-social-box a{display:flex;align-items:center}.ct-social-box .ct-label{margin-inline-start:.7em;transition:color .12s cubic-bezier(.455,.03,.515,.955)}[data-color=official] .ct-icon-container{--theme-icon-color:var(--official-color);--theme-icon-hover-color:var(--official-color);transition:opacity .12s cubic-bezier(.455,.03,.515,.955)}[data-color=official] .ct-icon-container:hover{opacity:.7}[data-color=official] .ct-label{color:var(--official-color)}[data-color=official][data-icons-type*=solid] .ct-icon-container{--theme-icon-color:#fff;--theme-icon-hover-color:#fff;background-color:var(--official-color)}[data-color=official][data-icons-type*=outline] .ct-icon-container{border:1px solid var(--official-color)}.ct-drawer-canvas[data-location=end]{height:calc(var(--shortcuts-bar-parent-height,var(--shortcuts-bar-height,0px)) + var(--floating-bar-parent-height,var(--floating-bar-height,0px)) + var(--compare-bar-height,0px))}.ct-drawer-canvas[data-location=end] .ct-drawer-inner{position:fixed;z-index:100;inset-inline:var(--theme-frame-size,0px) calc(var(--theme-frame-size,0px) + var(--scrollbar-width,0px));bottom:var(--theme-frame-size,0px);height:calc(var(--shortcuts-bar-parent-height,var(--shortcuts-bar-height,0px)) + var(--floating-bar-parent-height,var(--floating-bar-height,0px)) + var(--compare-bar-height,0px));transition:transform .2s ease}#main-container{display:flex;flex-direction:column;position:relative;min-height:calc(100vh - var(--admin-bar,0px) - var(--theme-frame-size,0px)*2);overflow:hidden;overflow:clip}#main-container .site-main{flex-grow:1}[class*=ct-container]{margin-left:auto;margin-right:auto}.ct-container,.ct-container-narrow{width:var(--theme-container-width)}.ct-container{max-width:var(--theme-normal-container-max-width)}.ct-container-narrow{max-width:var(--theme-narrow-container-max-width)}.ct-container-fluid{width:calc(var(--theme-container-edge-spacing) - var(--theme-frame-size,0px)*2)}@media(min-width:1000px){.ct-container-fluid{--theme-container-edge-spacing:calc(100vw - 60px)}}[data-vertical-spacing*=top]{padding-top:var(--theme-content-vertical-spacing)}[data-vertical-spacing*=bottom]{padding-bottom:var(--theme-content-vertical-spacing)}[data-layout*=grid]{display:grid;grid-template-columns:var(--grid-template-columns);grid-column-gap:var(--grid-columns-gap,30px);grid-row-gap:var(--grid-columns-gap,30px)}@media(max-width:689.98px){[data-layout=enhanced-grid]{--grid-template-columns:repeat(1,minmax(0,1fr))}}@media(min-width:690px){[data-layout=enhanced-grid]{--grid-template-columns:repeat(6,1fr)}}@media(min-width:690px)and (max-width:999.98px){[data-layout=enhanced-grid]>article{grid-column:span 3}}@media(min-width:1000px){[data-layout=enhanced-grid]>article{grid-column:span 2}[data-layout=enhanced-grid]>article:nth-child(5n+1),[data-layout=enhanced-grid]>article:nth-child(5n+2){grid-column:span 3}}[data-archive=default][data-layout=simple] article{display:flex;gap:var(--card-inner-spacing,30px)}[data-archive=default][data-layout=simple] article:not(:last-child){margin-bottom:var(--grid-columns-gap,30px)}@media(max-width:689.98px){[data-archive=default][data-layout=simple] article{flex-direction:column}}@media(min-width:690px){[data-archive=default][data-layout=simple] article>.ct-media-container{max-width:var(--card-media-max-width,40%);flex-shrink:0;margin-inline-end:0}[data-archive=default][data-layout=simple] article>.ct-media-container:not(.boundless-image){align-self:center}}[data-archive=default][data-layout=simple] article .card-content{flex:1}@media(min-width:690px){[data-archive=default][data-layout=simple] article .card-content{align-self:center}}@media(min-width:690px){[data-archive=default][data-layout=simple][data-cards=boxed] .entry-card .boundless-image{width:100%;margin-bottom:calc(var(--card-inner-spacing,30px)*-1)}}[data-archive=default][data-layout=classic] article:not(:last-child){margin-bottom:var(--grid-columns-gap,30px)}[data-archive=default][data-layout=gutenberg] article{align-items:center}[data-archive=default][data-layout=gutenberg] article:not(:last-child){margin-bottom:var(--grid-columns-gap,30px)}[data-archive=default][data-layout=gutenberg] article>*:not(.entry-button){width:100%}[data-archive=default][data-layout=gutenberg] article>*:not(.ct-media-container){max-width:var(--theme-narrow-container-max-width)}[data-archive=default][data-layout=gutenberg] article>.ct-media-container{max-width:calc(var(--theme-narrow-container-max-width) + var(--theme-wide-offset)*2)}[data-archive=default][data-layout=gutenberg] article:not(:last-child):after{content:"·····";font-size:25px;letter-spacing:1.5em;padding-inline-start:1.5em;font-family:serif;text-align:center;opacity:.5;margin-top:calc(var(--grid-columns-gap,30px) + 10px)}[data-archive=default] .entry-card{text-align:var(--text-horizontal-alignment)}[data-archive=default] .entry-card .entry-title{--theme-link-initial-color:initial}[data-archive=default] .entry-card .entry-meta{color:var(--theme-text-color);--theme-link-initial-color:var(--theme-text-color)}[data-archive=default] .entry-card .entry-divider{border-bottom:var(--entry-divider)}[data-archive=default] .entry-card .ct-ghost{margin:0;flex:1 0 auto}[data-archive=default] .card-content{display:flex;flex-direction:column}[data-archive=default] .card-content>*{margin-block:0 var(--card-element-spacing,20px)}[data-archive=default] .card-content>*:last-child{margin-bottom:0}[data-cards=boxed] .entry-card,[data-cards=cover] .entry-card{padding:var(--card-inner-spacing,30px);border:var(--card-border,none);box-shadow:var(--theme-box-shadow);border-radius:var(--theme-border-radius)}[data-archive=default][data-cards=cover] .entry-card{position:relative;min-height:var(--card-min-height,400px);justify-content:var(--vertical-alignment)}[data-archive=default][data-cards=cover] .entry-card .ct-media-container{position:absolute;isolation:isolate;inset:0;margin:0}[data-archive=default][data-cards=cover] .entry-card .ct-media-container img{height:100%}[data-archive=default][data-cards=cover] .entry-card>*:not(.ct-media-container){position:relative;z-index:1}[data-archive=default][data-cards=simple] .entry-card{padding-bottom:var(--grid-columns-gap,30px);border-bottom:var(--card-border,none)}.entry-excerpt{color:var(--theme-text-color)}.entry-card .ct-media-container{border-radius:var(--theme-image-border-radius,var(--theme-border-radius,0px))}.entry-card .boundless-image{width:calc(100% + var(--card-inner-spacing,30px)*2);margin-inline:calc(var(--card-inner-spacing,30px)*-1)}.entry-card .boundless-image:first-child{margin-top:calc(var(--card-inner-spacing,30px)*-1)}.entry-card .boundless-image:first-child:not(:only-child){border-end-start-radius:0;border-end-end-radius:0}.entry-card .boundless-image:last-child{margin-bottom:calc(var(--card-inner-spacing,30px)*-1)}.entry-card .boundless-image:last-child:not(:only-child){border-start-start-radius:0;border-start-end-radius:0}.entry-card .boundless-image:not(:first-child):not(:last-child){border-radius:0}.entry-card .boundless-image img{height:100%}@media(min-width:690px){[data-layout=simple][data-cards=boxed] .entry-card .boundless-image{border-radius:var(--theme-image-border-radius,var(--theme-border-radius,0px));border-start-end-radius:0;border-end-end-radius:0}}.ct-constrained-width,.woocommerce-notices-wrapper{margin-inline:auto;width:var(--theme-container-width);max-width:var(--theme-block-max-width)}article>.ct-comments,article>.ct-related-posts{margin-top:60px;padding-top:50px;border-top:1px solid var(--theme-border-color)}@media(max-width:689.98px){.ct-comments-container>div{padding-top:40px;padding-bottom:60px}}@media(min-width:690px){.ct-comments-container>div{padding-top:60px;padding-bottom:100px}}[data-block-structure=custom]{width:100%}.hero-section .ct-author-name [class*=ct-media-container]{border-radius:100%;margin-bottom:10px}.author-box-socials{--theme-icon-size:12px;--theme-icon-color:#fff}.author-box-socials span{display:inline-flex;flex-wrap:wrap;gap:10px}.author-box-socials span a{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:100%;background:var(--background-color,var(--theme-palette-color-1))}.author-box-socials span a:hover{background:var(--background-hover-color,var(--theme-palette-color-2))}.author-box-socials span a:hover .ct-icon{fill:var(--theme-icon-hover-color,#fff)}.ct-no-results{--alignment:center}.ct-no-results .ct-search-form{margin:0 auto;max-width:400px}[data-content=normal]>article{--theme-block-width:var(--has-wide,var(--theme-container-width));--theme-block-max-width:var(--has-wide,var(--theme-normal-container-max-width));--theme-block-wide-max-width:var(--has-wide,calc(var(--theme-normal-container-max-width) + var(--theme-wide-offset)*2));--theme-boxed-content-max-width:var(--theme-normal-container-max-width)}[data-content=narrow]>article{--theme-block-width:var(--has-wide,var(--theme-container-width));--theme-block-max-width:var(--has-wide,var(--theme-narrow-container-max-width));--theme-block-wide-max-width:var(--has-wide,calc(var(--theme-narrow-container-max-width) + var(--theme-wide-offset)*2));--theme-boxed-content-max-width:var(--theme-narrow-container-max-width)}[class*=ct-container]>article{--has-background:var(--has-boxed);--has-boxed-structure:var(--has-boxed);--wp--style--global--content-size:var(--theme-block-max-width);--wp--style--global--wide-size:var(--theme-block-wide-max-width);border:var(--has-boxed,var(--theme-boxed-content-border));padding:var(--has-boxed,var(--theme-boxed-content-spacing));border-radius:var(--has-boxed,var(--theme-boxed-content-border-radius));box-shadow:var(--has-boxed,var(--theme-boxed-content-box-shadow));margin-left:var(--has-boxed-structure,auto);margin-right:var(--has-boxed-structure,auto);width:var(--has-boxed-structure,var(--theme-container-width));max-width:var(--has-boxed-structure,var(--theme-boxed-content-max-width))}[data-prefix*=preview-mode] article[class*=post]{--has-boxed:var(--false);--has-wide:var(--true)}article>.entry-content>*{margin-inline:var(--theme-default-editor,auto)}article>.entry-content>*.alignwide{max-width:var(--theme-default-editor,var(--theme-block-wide-max-width))}article>.entry-content>*:where(:not(.alignfull):not(.alignwide):not(.alignleft):not(.alignright)){max-width:var(--theme-default-editor,var(--theme-block-max-width))}article>.entry-content>*:where(:not(.alignfull):not(.alignleft):not(.alignright)){width:var(--theme-default-editor,var(--theme-block-width))}body .is-layout-constrained>:where(:not(.alignleft):not(.alignright):not(.alignfull)){width:var(--theme-default-editor,var(--theme-block-width))}.alignleft,.alignright{margin-top:.3em;margin-bottom:.3em}.alignleft{float:left;margin-inline-end:1.5em}.alignright{float:right;margin-inline-start:1.5em}.aligncenter{margin-left:auto;margin-right:auto}.entry-content>.alignleft{margin-inline-start:calc((100% - min(var(--theme-block-max-width),var(--theme-container-width-base)))/2)}.entry-content>.alignright{margin-inline-end:calc((100% - min(var(--theme-block-max-width),var(--theme-container-width-base)))/2)}.entry-content .alignleft{margin-inline-end:var(--theme-content-spacing)}.entry-content .alignright{margin-inline-start:var(--theme-content-spacing)}.entry-content:after{display:table;clear:both;content:""}.wp-block-image:last-child{margin-bottom:0}.wp-block-image.wp-lightbox-container{isolation:isolate}.wp-block-buttons .wp-block-button .wp-block-button__link.is-style-outline,.wp-block-buttons .wp-block-button.is-style-outline>.wp-block-button__link{padding:var(--theme-button-padding)}.wp-block-button[style*=font-weight] .wp-block-button__link{font-weight:inherit}article>.entry-content>table,article>.entry-content>iframe{--theme-block-width:var(--theme-container-width)}:where(.wp-block-calendar table:not(.has-background) th){background:var(--theme-form-field-border-initial-color)}.wp-block-calendar table caption{font-weight:500;padding:0;margin-bottom:.7rem}.wp-block-calendar table:where(:not(.has-text-color)) td,.wp-block-calendar table:where(:not(.has-text-color)) th{border-color:var(--theme-form-field-border-initial-color)}.has-drop-cap:not(:focus):first-letter {font-size:5.55em;font-weight:700}@media(max-width:689.98px){.instagram-media{max-width:100% !important;min-width:initial !important}}.entry-content figcaption{text-align:center;margin-block:.5em 0}.wp-block-table table:not(.has-border-color) thead,.wp-block-table table:not(.has-border-color) tfoot,.wp-block-table table:not(.has-border-color) td,.wp-block-table table:not(.has-border-color) th{border-color:var(--theme-table-border-color,var(--theme-border-color))}.wp-block-table.is-style-stripes{border:0}.wp-block-search .wp-element-button{min-height:var(--theme-form-field-height,40px)}.wp-block-search.wp-block-search__icon-button .wp-element-button{padding:5px;min-width:var(--theme-form-field-height,40px)}.wp-block-search.wp-block-search__text-button .wp-element-button{padding:5px 20px}.wp-block-search.wp-block-search__button-inside .wp-block-search__inside-wrapper{border-radius:var(--theme-form-field-border-radius,3px);border-color:var(--theme-form-field-border-initial-color)}.wp-block-search.wp-block-search__button-inside .wp-block-search__inside-wrapper .wp-block-search__input{border:none}.wp-block-spacer{margin-block:0}.wp-block-gallery ul{width:100%;margin-bottom:-16px}.wp-block-gallery figcaption{--theme-block-max-width:100%}.wp-block-separator{border:none;color:var(--theme-form-field-border-initial-color)}.wp-block-separator:not(.is-style-wide):not(.is-style-dots){--theme-block-max-width:100px;max-width:var(--theme-default-editor,var(--theme-block-max-width))}.wp-block-separator:not(.is-style-dots){height:2px}.page-links,.woocommerce-pagination>.page-numbers{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:13px;font-weight:500;border-top:1px solid var(--theme-border-color);padding-top:calc(var(--theme-content-spacing) + 1.5em);margin-top:calc(var(--theme-content-spacing) + 1.5em)}.page-links a,.page-links .current,.page-links .post-pages-label,.woocommerce-pagination>.page-numbers a,.woocommerce-pagination>.page-numbers .current,.woocommerce-pagination>.page-numbers .post-pages-label{display:flex;align-items:center;justify-content:center;height:38px;min-width:38px;padding:0 10px;border-radius:3px;border:1px solid var(--theme-border-color)}.page-links .current,.woocommerce-pagination>.page-numbers .current{color:#fff;background:var(--theme-palette-color-1);--theme-border-color:var(--theme-palette-color-1)}.page-links a,.woocommerce-pagination>.page-numbers a{--theme-link-initial-color:var(--theme-text-color)}.page-links a:hover,.woocommerce-pagination>.page-numbers a:hover{box-shadow:0px 0px 0px 1px var(--theme-palette-color-1);--theme-border-color:var(--theme-palette-color-1)}@media(max-width:600px){.wp-block-media-text .wp-block-media-text__content{padding:var(--theme-content-spacing)}}.wp-block-media-text .wp-block-media-text__content p:last-child{margin-bottom:0}@media(max-width:600px){.wp-block-media-text:not(.has-background) .wp-block-media-text__content{padding-inline:0;padding-bottom:0}}.wp-block-post-title a{--theme-link-initial-color:initial}article>.entry-content .wp-block-post-content.entry-content{width:100%;max-width:100%}.wp-block-post-content>*{margin-inline:var(--theme-default-editor,auto)}.wp-block-post-content>*:where(:not(.alignfull)){width:var(--theme-default-editor,var(--theme-block-width))}.wp-block-post-content>*:where(:not(.alignwide):not(.alignfull)){max-width:var(--theme-default-editor,var(--theme-block-max-width))}.wp-block-post-content>.alignwide{max-width:var(--theme-default-editor,var(--theme-block-wide-max-width))}.post-password-form>p:last-child{display:grid;align-items:flex-end;gap:15px}@media(min-width:690px){.post-password-form>p:last-child{grid-template-columns:1fr 250px}}.post-password-form>p:last-child>label{margin-bottom:0}.post-password-form>p:last-child>label input{margin-top:.5em}.post-password-form>p:last-child>input[type=submit]{height:var(--theme-form-field-height,40px)}.wp-block-quote:not(.is-style-plain):not(.has-text-align-center):not(.has-text-align-right){border-inline-start:4px solid var(--theme-palette-color-1)}.wp-block-quote:not(.is-style-plain).has-text-align-center{padding-block:1.5em;border-block:3px solid var(--theme-palette-color-1)}.wp-block-quote:not(.is-style-plain).has-text-align-right{border-inline-end:4px solid var(--theme-palette-color-1)}.wp-block-quote:not(.has-text-align-center):not(.has-text-align-right){padding-inline-start:1.5em}.wp-block-quote.has-text-align-right{padding-inline-end:1.5em}.wp-block-quote p:last-of-type{margin-bottom:0}.wp-block-quote cite{display:block;margin-top:15px;font-size:14px}figure.wp-block-pullquote{position:relative;padding:70px;text-align:initial;border-width:10px;border-style:solid;border-color:var(--theme-palette-color-1)}@media(max-width:689.98px){figure.wp-block-pullquote{padding:50px}}figure.wp-block-pullquote blockquote{position:relative;isolation:isolate}figure.wp-block-pullquote blockquote:before{position:absolute;z-index:-1;content:"";width:var(--quote-icon-size,70px);height:var(--quote-icon-size,70px);top:calc(var(--quote-icon-size,70px)/-3);inset-inline-start:calc(var(--quote-icon-size,70px)/-3);opacity:.15;background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M0,19.04v-8.62c-0.04-1.24,0.14-2.4,0.54-3.49S1.49,4.88,2.2,4.06C2.92,3.23,3.77,2.55,4.76,2C5.76,1.46,6.84,1.11,8,0.96 v3.72C6.58,5.17,5.6,5.89,5.07,6.85C4.55,7.8,4.29,8.98,4.29,10.37H8v8.67H0zM12,19.04v-8.62c-0.04-1.24,0.14-2.4,0.53-3.49 s0.95-2.05,1.66-2.87c0.71-0.83,1.57-1.51,2.56-2.06c0.99-0.54,2.08-0.89,3.24-1.04v3.72c-1.43,0.49-2.4,1.21-2.93,2.17c-0.53,0.96-0.79,2.13-0.79,3.52H20v8.67H12z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M0,19.04v-8.62c-0.04-1.24,0.14-2.4,0.54-3.49S1.49,4.88,2.2,4.06C2.92,3.23,3.77,2.55,4.76,2C5.76,1.46,6.84,1.11,8,0.96 v3.72C6.58,5.17,5.6,5.89,5.07,6.85C4.55,7.8,4.29,8.98,4.29,10.37H8v8.67H0zM12,19.04v-8.62c-0.04-1.24,0.14-2.4,0.53-3.49 s0.95-2.05,1.66-2.87c0.71-0.83,1.57-1.51,2.56-2.06c0.99-0.54,2.08-0.89,3.24-1.04v3.72c-1.43,0.49-2.4,1.21-2.93,2.17c-0.53,0.96-0.79,2.13-0.79,3.52H20v8.67H12z'/%3E%3C/svg%3E")}@media(max-width:689.98px){figure.wp-block-pullquote blockquote:before{--quote-icon-size:40px}}figure.wp-block-pullquote blockquote p{margin-bottom:1em}figure.wp-block-pullquote blockquote p:last-child{margin-bottom:0}figure.wp-block-pullquote blockquote cite{font-size:16px;font-weight:500}.wp-block-group.is-position-sticky{top:calc(var(--wp-block-top-offset,0px) + var(--admin-bar,0px) + var(--theme-frame-size,0px) + var(--header-sticky-height,0px)*var(--sticky-shrink,100)/100)}.has-background:is(p,.wp-block-group){padding:var(--theme-content-spacing)}.hero-section[data-type=type-1]{text-align:var(--alignment);margin-bottom:var(--margin-bottom,40px)}.hero-section[data-type=type-1] .page-description{display:inline-block;max-width:var(--description-max-width,100%)}.hero-section[data-type=type-2]{position:relative;padding-top:calc(var(--has-transparent-header)*var(--header-height))}.hero-section[data-type=type-2]>[class*=ct-container]{display:flex;flex-direction:column;justify-content:var(--vertical-alignment,center);text-align:var(--alignment,center);position:relative;z-index:2;padding:var(--container-padding,50px 0);min-height:var(--min-height,250px)}.hero-section[data-type=type-2]>figure{position:absolute;overflow:hidden;z-index:1;inset:0;background-color:inherit}.hero-section[data-type=type-2]>figure .ct-media-container{height:100%;vertical-align:top}.hero-section[data-type=type-2]>figure .ct-media-container img{height:100%}.hero-section[data-type=type-2] .ct-title-label{display:block;font-size:12px;text-transform:uppercase;margin-bottom:.5em}.entry-header>*:not(:first-child){margin-top:var(--itemSpacing,20px)}.entry-header .page-title{margin-bottom:0}.entry-header .entry-meta{color:var(--theme-text-color);--theme-link-initial-color:var(--theme-text-color)}.entry-header .page-description{color:var(--theme-text-color)}.entry-header .page-description>*:last-child{margin-bottom:0}.entry-content>.elementor{--theme-default-editor:var(--false)}.ct-elementor-default-template .elementor-top-section:not(.ct-section-stretched):not(.elementor-sticky){margin-left:var(--has-wide,auto);margin-right:var(--has-wide,auto);width:var(--theme-block-width,var(--theme-container-width));max-width:var(--theme-block-max-width,var(--theme-normal-container-max-width))}.ct-elementor-default-template .elementor-section-boxed>.elementor-container{width:var(--theme-block-width,var(--theme-container-width));max-width:var(--theme-block-max-width,var(--theme-normal-container-max-width))}.ct-elementor-default-template .e-container{--container-max-width:min(var(--theme-block-max-width,var(--theme-normal-container-max-width)),var(--theme-container-width-base))}.ct-elementor-default-template .e-con{--container-max-width:var(--theme-block-max-width,var(--theme-normal-container-max-width))}.ct-elementor-default-template .e-con>.e-con-inner{width:var(--theme-block-width,var(--theme-container-width))}.elementor-widget-text-editor p:last-child{margin-bottom:0}.elementor-select-wrapper select{background-image:none}.elementor-search-form__input{--theme-form-field-height:auto}.elementor-search-form__submit{--theme-button-shadow:none;--theme-button-transform:none}.elementor-widget-container style+h1,.elementor-widget-container style+h2,.elementor-widget-container style+h3,.elementor-widget-container style+h4,.elementor-widget-container style+h5,.elementor-widget-container style+h6{margin-top:0}.post-navigation{display:grid;grid-template-columns:repeat(2,1fr);grid-column-gap:8%;position:relative;margin-top:var(--margin,50px)}.post-navigation figure{flex:0 0 var(--thumb-width,70px);max-width:var(--thumb-width,70px);align-items:center;justify-content:center;position:relative;border-radius:var(--theme-border-radius,100%)}@media(max-width:689.98px){.post-navigation figure{--thumb-width:45px;--thumb-margin:15px}}.post-navigation figure svg,.post-navigation figure:after{position:absolute;opacity:0;transition:all .12s cubic-bezier(.455,.03,.515,.955)}.post-navigation figure svg{z-index:3}.post-navigation figure:after{content:"";z-index:2;inset:0;background:var(--image-overlay-color,var(--theme-palette-color-1))}.post-navigation [class*=nav-item]{display:flex;align-items:center}.post-navigation [class*=nav-item]:hover figure:after{opacity:.85}.post-navigation [class*=nav-item]:hover svg{opacity:1;transform:translateX(0)}.post-navigation .nav-item-prev figure{margin-inline-end:var(--thumb-margin,25px)}.post-navigation .nav-item-prev svg{transform:translateX(10px)}.post-navigation .nav-item-next{text-align:end;justify-content:flex-end}.post-navigation .nav-item-next figure{margin-inline-start:var(--thumb-margin,25px)}.post-navigation .nav-item-next svg{transform:translateX(-10px)}.post-navigation .item-label{font-size:12px;font-weight:600;text-transform:uppercase;opacity:.9}@media(max-width:689.98px){.post-navigation .item-label span{display:none}}.post-navigation .item-title{display:block;margin-top:5px;font-size:14px;font-weight:700;word-break:break-word}.post-navigation:after{position:absolute;content:"";top:25%;left:50%;width:1px;height:50%;background:var(--theme-border-color)}
以太坊治理 – 蓝色数据 Skip to content
本文通过七个主要案例探讨了以太坊的治理流程,对决策涉及的程序和机构进行了详细分析。它阐明了以太坊历史上的关键事件,包括 DAO 硬分叉、Parity 多重签名错误、君士坦丁堡升级、ProgPoW、Afrigate、合并和上海升级。文章阐述了开发者和社区如何协调和解决纠纷,强调了以太坊治理的复杂性和挑战。
前言 谁管理以太坊?谁决定对以太坊协议进行哪些更改以及何时更改?以太坊协议的最终用户在影响以太坊核心开发人员的行动和决策方面有多少发言权?在这份报告中,Christine Kim 通过全面概述参与决策的流程和机构,阐明了以太坊治理问题。阐明了以太坊治理问题。她还讨论了以太坊历史上的关键事件,在这些事件中,开发人员和更广泛的以太坊社区之间的协调是迫切需要的,也是有争议的。
介绍 以太坊(Ethereum)是全球最庞大的区块链,支持超过4,000个去中心化应用(dapps),并吸引了超过7,000名开发者,是任何公有区块链平台中最多的。通过采用和发展Layer-2扩展解决方案,如Arbitrum、Optimism和Polygon,网络预计将进一步扩展。作为全球首个通用区块链,以太坊在其他Layer-1竞争对手中保持领先地位,拥有最高的市场资本化和网络安全性(以总质押价值定义),在所有通用区块链中独占鳌头。除了比特币外,以太坊是加密生态系统中最重要和最有价值的区块链,这也是以太坊协议的变更及其变更过程对整个加密行业产生深远而重大影响的原因。
与比特币类似,以太坊的治理过程是基于链下的,由以太坊基金会领导,通过Discord、GitHub、Ethereum Magicians和Zoom等在线论坛进行。没有通过链上提案或去中心化自治组织(DAO)进行的ETH持有者投票决策。一方面,这确保了推动代码更改到以太坊协议的治理过程不会受到大型ETH持有者的影响或被恶意演员利用治理相关智能合约中的漏洞。另一方面,链下形式的治理难以审计和客观评估,因为过程故意不透明、主观且无结构。
与比特币不同的是,以太坊在部署硬分叉方面经验丰富,即需要协调数千名运行和操作以太坊软件的用户的向后不兼容升级。在过去8年中,通过19次硬分叉,核心开发人员已经使以太坊的治理过程变得更加快速和流程驱动,主要依赖于一系列每周会议,称为全体核心开发人员(ACD)会议,以讨论和跟踪影响以太坊协议的治理决策。
本报告深入探讨了以太坊治理,重点介绍了参与决策的流程、人员和论坛。然后,我们讨论七个案例研究,通过解开 DAO 硬分叉、Parity 多重签名漏洞、君士坦丁堡升级、ProgPoW、Afrigate、Merge 和 Shanghai 等事件来说明以太坊治理的实际情况。
EIPP:以太坊改进提案流程 以太坊的官方升级流程被称为以太坊改进提案(Ethereum Improvements Proposals,简称EIP)流程。该流程借鉴了比特币改进提案(Bitcoin Improvement Proposal,简称BIP)流程,这是一种提交比特币协议代码变更的标准化流程。BIP流程又受到Python的PEP-0001流程的启发,后者概述了改进Python编程语言的治理模型。BIP和EIP都是描述对比特币和以太坊的新特性或变更的文件。具体来说,EIP按照EIP-1定义的指南和模板进行格式化。
EIP分为三种类型:
标准轨道EIP(Standards Track EIP):绝大多数EIP属于标准轨道EIP,它们规定了需要进行硬分叉的以太坊代码变更、影响以太坊网络层或执行API的变更,或引入新的应用层标准和约定。标准轨道EIP进一步分类为:核心(Core)、网络(Networking)、接口(Interface)和以太坊请求评论(Ethereum Request for Comments,简称ERCs)。核心(Core):指需要全网升级才能激活的代码变更。 网络(Networking):指围绕以太坊点对点网络层(也称为“devp2p”)的改进。 接口(Interface):指影响以太坊客户端API和RPC规范的代码变更。 ERCs:指与以太坊应用层相关的改进。目前以太坊核心开发者正在讨论将ERCs从EIP中分离出来,成为一个独立的治理流程。 元/过程EIP(Meta/Process EIP):元EIP不建议对以太坊代码库进行更改,而是描述对流程的更改,例如EIP的决策流程。 信息EIP(Informational EIP):信息EIP也不建议对以太坊代码库进行更改,而是提供关于以太坊的一般指南和信息,用户可以选择忽略或遵循。 任何对以太坊感兴趣的人都可以随时提出EIP。EIP提交到以太坊EIP GitHub仓库,由专门的EIP编辑负责审查EIP的技术合理性和格式正确性。截至2024年5月,有五位EIP编辑,他们的名字和GitHub用户名如下:
这些个人由现任或荣誉EIP编辑任命。新的EIP编辑将在滚动基础上进行考虑。上述五位EIP编辑有权授予符合EIP编辑标准的申请人新的EIP编辑权限。成为EIP编辑的标准可以在EIP 5069:EIP编辑手册中找到。
作为EIP流程的一部分,在向EIP编辑提交EIP草案之前,作者需要在Ethereum Magicians论坛上创建一个“discussion-to”主题帖。Ethereum Magicians论坛是一个任何人都可以创建主题并讨论有关以太坊和以太坊开发事项的网站。除了Ethereum Magicians论坛外,EIP还可以在其他在线论坛上进行讨论,包括Discord、ethresear.ch和GitHub。如果提议的EIP是核心EIP,EIP作者还将在ACD电话会议期间向以太坊客户端团队展示他们的提案。以太坊客户端团队是构建和维护以太坊客户端软件的实体。
五个主要的以太坊共识层(CL)客户端是Prysm、Lighthouse、Teku、Nimbus和Lodestar。四个主要的执行层(EL)客户端是Geth、Nethermind、Erigon和Besu。这九个团队的代表每周都会通过Zoom开会,讨论EIPs及其在以太坊升级中的实施。在这些每周一次的会议(即ACD电话会议)上展示EIP之后,EIP作者会继续征求和审查其提案的反馈。EIP作者可能会根据社区和客户端团队的反馈修改其EIP。经过这一审查过程并得到客户端团队支持的EIP将被考虑在未来的以太坊升级中实施。由于EIP数量众多,完成审查过程的提案不能保证在下一个立即的以太坊升级中实施。通常情况下,以太坊客户端团队必须在几个同样技术上可靠并已准备好实施的EIP中选择一个,基于提案的相对紧迫性和范围来决定哪个提案将被纳入下一个升级。
在过去的八年中,以太坊已完成并实施了61个核心EIP,目前有57个核心EIP正在草拟或审查中,而143个核心EIP已被撤回或被认为不活跃。基于这些数据,自区块链创世以来,开发者提议的核心EIP中有23%通过硬分叉升级得以激活。
在报告的下一部分中,我们将详细讨论参与EIP流程的人员和论坛。
参与者 有许多不同的群体参与以太坊的治理。作为世界上最去中心化的通用区块链,没有任何单个用户、个人或组织有权更改协议。然而,通过在社交媒体上分享对网络的看法、操作软件、贡献代码或简单地在以太坊上与dapp交互,每个以太坊生态系统中的用户和利益相关者都以大大小小的方式对治理做出了贡献。由于以太坊背后没有单一公司,因此由一个不断演变和变化的生态系统参与者群体来将用例应用于协议,激发对协议的兴趣,并最终赋予协议价值。
以太坊用户的集体意志很少是同质的,且其规模过于庞大,无法不做笼统概括就进行定义。本报告强调了更广泛的以太坊社区中的四个特定利益相关者群体,这些群体在报告中将统称为“Community”(社区),使用首字母大写的“C”。Community是指使用、构建或开发以太坊的个体和实体的模糊群体。在Community内,有以太坊基金会,这是由以太坊的原始创始人设立的非营利组织,负责引导协议的增长和发展。接着,我们将讨论以太坊客户端团队在Community中的角色。这些开发者构建以太坊软件,可以说是EIP流程中最重要的决策者。然后,我们将定义验证节点运营商,这是以太坊上的一个相对较新的利益相关者群体,他们是代码更改的主要实施者,最后,我们将定义dapp开发者,他们是以太坊的主要用户,塑造了网络的用例,并根据最终用户的需求向客户端团队提供哪些代码更改应优先进行的反馈。
以太坊基金会 以太坊基金会(Ethereum Foundation,简称EF)是最早和最著名的以太坊专用非营利组织,由以太坊的原始创始人创建,包括Vitalik Buterin、Gavin Wood、Joseph Lubin等。在创世时,EF从创世区块预挖中分配到最大数量的ETH,总计7200万ETH中的1200万。
然而,自2015年以来的多个市场周期中,基金会的ETH总持有量已经减少。截至2022年4月,估计EF持有的ETH数量不到总供应量的0.3%。与以太坊类似,EF的结构和治理过程难以定义。不同于传统的非营利组织,以太坊基金会没有明确的组织结构或角色。正如基金会网站所述,EF的角色“随着以太坊生态系统的增长和发展而演变和变化”。更具体地说,随着社区内利益相关者数量的增加,EF在Community中的影响力逐渐减弱,集中的影响力被更多的生态系统参与者所稀释。
截至2024年5月,EF继续在Community中雇佣多名以太坊协议研究人员和开发人员,领导ACD(All Core Devs)电话会议的组织工作,并举办一年一度的以太坊开发者大会Devcon。组织的具体员工人数未知。基金会网站上公开的成员只有三位:执行董事Aya Miyaguchi、以太坊联合创始人Vitalik Buterin和董事会成员Patrick Storchenegger。EF最近一次关于其运营和财务的报告发布于2022年4月。
客户端团队 客户端团队负责构建和维护运行和连接以太坊网络所需的软件。目前有九个主要的以太坊客户端团队,其中只有一个直接由EF维护。以下是每个以太坊客户端团队的背景介绍:
Geth (EL):最早且最受欢迎的以太坊软件客户端,简称Geth,由以太坊基金会全额资助。Geth用Golang编写,被认为是经过最严格测试的以太坊客户端。代码由一个由10名开发人员组成的团队维护,并在GNU宽通用公共许可证(LGPL-3.0)下开源。LGPL-3.0许可证是一种共用开源许可证,要求用户开源对原始代码库所做的任何更改。 (补充说明,LGPL-3.0和Apache 2.0许可证的主要区别在于衍生作品。在Apache 2.0许可证下,代码可以在没有限制的情况下被分叉和分发,而在LGPL-3.0许可证下的代码的衍生作品必须保持免费和开源。此外,Apache 2.0许可证的软件可以与其他类型许可证的软件结合使用,而LGPL-3.0许可证的软件只能与其他GPL许可证的软件兼容。总体而言,Apache 2.0许可证是更宽松的许可证,而LGPL限制使用以专门鼓励开源开发。)
Nethermind (EL):成立于2017年,是以太坊第二受欢迎的EL客户端,用C#编写。它基于一个名为.NET Core的开源计算机软件框架构建。2018年8月,团队获得了以太坊基金会的资助,完成了完整客户端的实现。多年来,团队还通过Gitcoin等平台,以及独立贡献者和合作伙伴,获得了以太坊社区各种利益相关者的资助。2021年7月,Nethermind宣布与Layer-2扩展项目Starkware建立战略合作伙伴关系,为Starkware的ZK-rollup StarkNet构建区块浏览器等相关产品。Nethermind团队由来自55个国家的大约220名成员组成。Nethermind客户端在与Geth相同的GNU宽通用公共许可证下开源。
Erigon (EL):前身为TurboGeth,是Geth客户端的一个分支,重新架构以实现更快的同步速度和磁盘空间效率。成立于2017年,并于2020年7月完成alpha版本发布。Erigon团队由10名开发人员组成,获得了包括以太坊基金会和BNB Chain在内的各种贡献者的资助。值得注意的是,团队还支持其他区块链和侧链的客户端软件,包括BNB智能链和Polygon。此外,团队过去维护了一个用Rust编写的以太坊客户端Akula和一个用C++编写的客户端Silkworm。团队最近宣布创建一个新的以太坊CL客户端Caplin。Erigon客户端与Geth和Nethermind相同,在GNU宽通用公共许可证下开源。
Besu (EL):前身为Pantheon,是专为企业和机构使用而设计的以太坊客户端。由以太坊风险工作室Consensys于2018年11月推出,该项目在2019年重新命名并转移到由Hyperledger Foundation拥有的新GitHub仓库。(Consensys是Hyperledger Foundation的成员。)在Consensys内部,负责构建和维护客户端的开发团队被称为Consensys Quorum,前身为Pegasys。Besu用Java编写,并在Apache 2.0许可证下开源。Consensys还资助了以太坊CL客户端Teku的开发。截至2020年10月,Pegasys团队(也称为Protocol Engineering团队)拥有70多名成员。2023年1月,Consensys宣布将其员工人数从900人减少到约800人。
Reth (EL):Rust Ethereum的缩写,Reth是一个以太坊EL的实验性全节点实现,旨在供包括MEV搜索者、桥接器、Layer-2和RPC节点运营商在内的广泛用户使用。由加密VC公司Paradigm维护,Reth客户端用Rust编写,并在Apache 2.0许可证下开源。Paradigm资助了一个由8名开发人员组成的核心团队来构建Rust。然而,开源代码库拥有90多名贡献者。2024年3月,Rust团队发布了Reth v0.2.0,这是客户端Beta发布周期中的第一个主要版本。
Prysm (CL):Prysm是最受欢迎的以太坊CL客户端,用Golang编写,并在与Geth、Nethermind和Erigon相同的许可证下开源。它由区块链基础设施公司Prysmatic Labs维护和开发。该公司成立于2018年,最初通过以太坊基金会、Gitcoin、Aragon和Spankchain等的资助获得资金。2022年10月,该公司被以太坊Layer-2扩展项目Arbitrum背后的公司Offchain Labs收购。Prysmatic Labs雇佣了大约12名员工。
Lighthouse (CL):Lighthouse是第二受欢迎的以太坊CL客户端,用Rust编写,并在与Besu相同的Apache 2.0许可证下开源。该客户端由Sigma Prime维护和开发,Sigma Prime是一家位于澳大利亚悉尼的信息安全和软件工程公司。Sigma Prime因其在Lighthouse客户端上的工作,获得了以太坊基金会、Consensys、Gitcoin等的资助。公司成立于2018年,雇佣了大约25名员工。
Teku (CL):由维护Besu (EL)的同一团队维护,Teku是Consensys面向机构的CL客户端,用Java编写,并在与Besu和Lighthouse相同的许可证下开源。前身为Artemis,Teku于2020年推出,与Besu一样,由Pegasys团队构建和维护。有关Pegasys团队的更多信息,请参阅Besu (EL)客户端的描述。
Nimbus (CL):用Nim编写,并在与Besu、Teku和Lighthouse相同的许可证下开源,Nimbus设计用于资源效率,使节点运营商能够在资源受限的设备(如手机和笔记本电脑)上轻松运行以太坊客户端软件。Nimbus团队由10名员工组成,几乎完全由加密钱包和Web3浏览器Status以及以太坊基金会资助。Nimbus团队还构建和维护一个名为Nimbus的EL客户端。团队成立于2018年。
Lodestar (CL):用Typescript编写,并在GNU宽通用公共许可证v3.0下开源,Lodestar是一个专注于轻客户端功能的以太坊客户端。轻客户端是一种节点,可以轻松同步到链上而无需下载自创世以来的完整链历史。轻客户端的启动带宽和处理负载显著小于全节点。Lodestar由总部位于加拿大多伦多的区块链研究和开发公司ChainSafe开发和维护。该项目最初由以太坊创始人Vitalik Buterin于2018年资助。此后,ChainSafe通过以太坊基金会和Gitcoin等组织获得了资助。ChainSafe雇佣了超过100名员工。
贡献以太坊客户端软件的个人通常被称为以太坊“核心开发者”。然而,这个术语也被用来描述那些专注于升级测试或一般协议研究工作,而不是客户端开发的基金会员工和承包商。通常,任何通过研究、客户端开发或升级测试积极推动以太坊核心协议某个领域进展的个人都被称为以太坊核心开发者。核心开发者这个术语在社区中是一个热门话题,因为没有任何个人或实体有权定义这个术语或阻止社区中的任何人自由使用它。
验证节点运营商 唯一通过新铸造的ETH获得奖励的节点运营商类型是验证节点运营商。自合并以来,验证节点取代矿工成为网络的主要区块生产者。当32 ETH的存款在以太坊上质押后,就会创建一个验证节点。一旦激活,验证节点会被随机分配职责,如验证交易和将新块添加到规范链上。为了履行这些职责,验证节点会通过网络发行、交易费用和最大可提取价值(MEV)获得奖励。验证节点在以太坊上的质押总量是网络安全的一个函数,确保网络攻击(如双重终结性攻击)无法发生,除非恶意行为者控制超过33%的总质押ETH。
节点运营商是一组个人和实体,他们有权实施或拒绝客户团队对以太坊软件进行的代码更改。作为背景,当客户团队对软件进行向后兼容的代码更改时,升级称为“软分叉”。相反,当向后不兼容的更改被推送到客户端软件时,就会发生“软分叉”。所有节点运营商都必须在达到一定的区块高度之前升级其软件,以避免在硬分叉激活期间被踢出网络。在硬分叉期间故意不升级其软件或运行替代的、向后不兼容的软件的节点运营商将造成永久的链分裂。仅在以太坊一个版本上运行的验证者将因在另一个竞争版本上不活动而受到惩罚。通过逐步增加惩罚,每个以太坊版本上的活跃验证者质押的 ETH 余额最终足以最终确定链并推动网络向前发展。
理论上,节点运营商对以太坊上实施哪些代码更改以及拒绝哪些代码更改拥有最终决定权。然而,在实践中,由于验证者节点运营商之间的分歧而导致以太坊上发生永久链分裂的可能性不太可能,原因有几个。
以太坊一直有一个雄心勃勃的发展路线图,从发布起就设想对共识协议、费用动态和用户体验进行重大改变。对不断变化的代码库的期望为验证器节点运营商设置了优先级,以规范频繁的升级,而不是拒绝它们。 包括预言机和稳定币在内的去中心化金融 (DeFi) 生态系统以及 Layer-2 (L2) rollup 生态系统的增长增加了分叉以太坊的成本,因为永久性的链分裂会分散链上流动性并迫使多个 dapp 和L2 无法重复操作来选择一个网络而不是另一个网络。 以太坊上质押的大部分 ETH 是通过代表用户运行验证器软件的服务提供商质押的。这意味着大多数在以太坊上获得奖励的用户和实体并不直接控制节点或代表他们对节点进行的软件升级。质押者在一定程度上无法实施以太坊客户端团队准备的代码更改,因此,与质押服务相比,有时可能不太有动力跟踪或积极参与协议开发的决策。
尽管存在这些原因,但在以太坊的历史上,也曾出现过以太坊验证器节点运营商强烈影响协议升级决策的情况。例如,在以太坊转为权益证明后的第一次升级中,用户在以太坊上质押的利益是影响质押ETH提现优先级的主要因素。此外,在验证者成为以太坊的主要节点运营商之前,当节点主要由矿工运营时,以太坊经历了永久性的链分裂,尽管存在着令人难以置信的雄心勃勃的发展路线图,这必然需要频繁的升级才能实现。这次链分叉创造了以太坊经典,是以太坊上第一次也是迄今为止唯一一次主要的链分叉,发生在以太坊历史的早期,发生在 2016 年 DeFi 或 L2 行业发展之前。
验证节点运营商是以太坊上重要的利益相关者群体,负责执行客户团队准备的硬分叉升级。他们在治理流程中作为代码执行者的角色是一个微妙的角色,这种角色是由最近的升级(例如合并和上海)(将在本报告后面进一步详细讨论)以及矿工的遗产(前者)塑造的。以太坊的主要节点运营商,自创世到 2022 年底,在以太坊的大部分历史中执行了升级。
Dapp开发者 除了以太坊基金会(EF)、客户端团队和验证节点运营商外,以太坊的Dapp层是另一个对代码更改和硬分叉升级有重要影响的焦点群体。Dapp开发者是以太坊的主要用户,他们与以太坊代码库交互以部署智能合约代码。大多数终端用户通过由钱包服务、基础设施提供商、交易所或Dapp开发者自己支持的前端用户界面(UI)与Dapp交互,而不是直接通过以太坊区块链。因此,Dapp开发者的需求有时是推动以太坊开发和某些代码更改优先级的核心。
例如,在Cancun升级中包含EIP 1153主要是由Uniswap Labs和Optimism Labs两个Dapp协议团队推动的。EIP 1153引入了新的成本效益高的智能合约操作,TSTORE和TLOAD,用于在执行后从以太坊链状态中丢弃的交易中存储数据。在讨论代码更改的ACD电话会议期间,OP Labs的联合创始人Mark Tyneway强调,该EIP有可能仅在Uniswap上每年为终端用户节省300万美元的燃气费用。EIP 1153最初在2018年6月提出,并在2022年11月被提议纳入上海升级。然后,在2023年6月13日的开发者会议上,该EIP被推迟到上海升级后的Cancun升级中。该EIP于2024年3月13日作为Cancun升级的一部分在主网上激活。
除了EIP 1153之外,最近几个月与账户抽象相关的EIPs也主要由Dapp开发者主导。账户抽象是一项功能,它允许智能合约对发起交易进行可定制和可编程的授权。在以太坊上,只有外部操作账户(EOAs)可以发送和接收加密货币。EOAs与智能合约不同,不能执行代码。实现账户抽象一直是以太坊核心开发者和Dapp开发者的长期目标,最近通过一种向后兼容的EIP ERC 4337获得了进展。该提案由以太坊创始人Vitalik Buterin于2021年9月首次提出,目前仍处于草案阶段,但正在由各种客户端团队、EF研究人员和Dapp开发团队(如Matter Labs、Polygon、Gelato等)积极迭代。
量化Dapp开发者社区对客户端团队的影响是困难的,尤其是当开发者的影响力也会塑造社区情绪时。除了Dapp开发者,尽管程度较轻,终端用户、ETH持有者、交易所和其他区块链基础设施提供商也在代码更改倡导中发挥一定作用。客户端团队并不免受终端用户通过Twitter和其他社交媒体论坛的信号影响,我们在本报告中将进一步讨论。此外,组成客户端团队的个人也可能运营自己的验证节点,并有侧项目构建不同类型的Dapp和链上服务。因此,尽管客户端团队、验证节点运营商和Dapp开发者的利益是不同的,但组成这些群体的个人往往重叠,这使得参与以太坊治理过程的利益相关者难以清晰分类或定义。
论坛 以太坊生态系统中不同利益相关群体的声音汇集在各种论坛上。有些论坛专门用于从客户端团队中达成共识,而不是从整个以太坊生态系统的利益相关者中聚集共识。这些论坛的主要语言是英语。这可能是因为总体来说,英语被认为是全球最通用的语言,使用人数最多。对于希望参与以太坊治理过程的个人和公司来说,英语是一个关键要求。然而,以太坊基金会(EF)正在开展一些计划,通过将关于以太坊的关键信息文件翻译成多种语言,以改善与非英语社区的沟通。由EF运营的ethereum.org网站已经翻译成55种语言。此外,EF还特意将Devcon会议安排在世界各地,以扩大以太坊在非英语人群中的影响。2022年,Devcon VI在哥伦比亚波哥大举办。
以下是讨论、组织和执行以太坊开发的四个主要论坛的列表。除了这些论坛外,关于以太坊的社区讨论也会在Twitter和Reddit等社交媒体平台上分享。然而,尽管这些社交媒体平台很受欢迎,但它们并不经常进行关于以太坊开发或治理的专注和深入讨论。相反,以太坊社区成员使用这些平台分享关于以太坊相关主题的快速更新和信息,这些信息可能会引发讨论,但在EIP决策过程中并不被正式承认为关键治理论坛。
以太坊核心开发者(ACD) 以太坊协议开发决策中最重要的论坛之一是ACD(All Core Developers)电话会议。由以太坊基金会组织,ACD电话会议早在2015年11月开始,几个月后以太坊发布。这些会议是公开记录的Zoom电话会议,时长约一个半小时。任何以太坊社区成员都可以参加,但最常出席的是EIP作者、客户端团队、以太坊基金会研究人员和以太坊猫牧人(Ethereum Cat Herders)。ACD电话会议对任何感兴趣的人开放,既可以通过直播加入,也可以直接在Zoom上加入。
从2016年到2021年,ACD电话会议由以太坊基金会员工Hudson Jameson主持。在此期间,ACD电话会议每两周举行一次。Jameson目前已经不再主持ACD电话会议,现为包括Status、Chainlink和Polygon开发团队Matic Labs在内的多个以太坊项目担任顾问。从2021年开始,以太坊基金会的Tim Beiko接任ACD电话会议主席。与这些电话会议并行,从2018年到2022年,专注于构建以太坊权益证明共识协议的以太坊核心开发者们也组织了每两周一次的电话会议。这些电话会议由以太坊基金会的Danny Ryan主持。
自2022年9月完成合并(The Merge)激活以来,ACD电话会议被重新命名并正式分为两个独立的会议系列:核心开发者执行(ACDE)和核心开发者共识(ACDC)电话会议。每次会议每两周举行一次,这意味着现在每周都有一次ACD电话会议。ACDE电话会议由Tim Beiko主持,重点讨论以太坊执行层(EL)的协议级别变化。ACDC电话会议由Danny Ryan主持,重点讨论以太坊共识层(CL)的协议级别变化。
合并后的ACD电话会议结构反映了以太坊的双层网络性质以及协议变化的日益复杂性,因为它涉及越来越多的主题专家和特定网络的客户端团队。ACD电话会议专注于讨论EIP的技术优点。尽管这是目标,但有时根据具体的主题内容,难以防止在ACD电话会议上围绕决策的伦理或道德问题进行讨论。自2015年以来,已经组织了超过250次ACD电话会议。大多数会议都是现场直播并可以在YouTube上重新观看。
ETHMagicians和Ethresear.ch ACD电话会议的议程通常受ETH Magicians和Ethresear.ch论坛上的讨论和对话的影响。这些论坛是讨论和征求EIP反馈的地方,EIP处于构思或草案阶段时就在这里进行讨论和传播。此外,这些论坛还举办关于以太坊协议的非技术性问题的深入讨论,例如基于社区情绪应该优先考虑哪些EIP和计划进行升级。尽管两个论坛都同样活跃,但ETHMagicians是一个更为广泛的论坛,几乎可以讨论任何以太坊的主题,无论是技术性还是非技术性的。Ethresear.ch则倾向于展示关于协议技术代码变化的早期研究想法,这些想法一旦形成正式方案,就会发布到ETHMagicians以供更广泛的社区讨论。
ETHMagicians由前以太坊基金会核心开发者Jamie Pitts和Geth(EL)客户端的匿名开发者“Lightclient”组织。Ethresear.ch由多名以太坊基金会员工组织,包括Hsiao-Wei Wang、Justin Drake、Danny Ryan和Vitalik Buterin。
Discord 对于正在准备即将到来的升级的活跃EIP的日常协调和向客户端团队提供紧急更新,有一个专用的Discord聊天室,在这里以太坊核心开发者、研究人员和以太坊社区的其他成员实时协调开发。以太坊研究与开发Discord频道鼓励客户端团队和更广泛的以太坊社区一起解决协议问题、开展研究项目并提出问题。在以太坊升级期间,该频道被客户端团队用作主要通信渠道,用于通报以太坊网络的健康状况并协调在以太坊测试网络上的升级启动。它也是用于传达和组织社区电话会议的论坛,这些电话会议与ACD电话会议同时进行,例如讨论EIP 4844、proto-danksharding和EIP流程更改的技术细节的会议。
从2015年到2018年,询问关于以太坊协议的问题并参与协议日常开发的主要渠道是一个名为Gitter的聊天室。然而,随着以太坊社区和协议贡献者数量的增长,需要一种更复杂的方法来在一个论坛上组织多个聊天室。因此,开发者将通信迁移到一个共享的Discord频道,截至2023年7月,该频道主办了50多个关于以太坊研究和开发的各种细分主题的聊天室。以太坊研究与开发Discord频道是异步讨论ACD话题和跟踪在ETHMagicians或Ethresear.ch上提出的提案实施的活动工作中心。
GitHub 最后,用于起草和记录以太坊代码库状态的主要论坛是GitHub。在GitHub上,名为“Ethereum”的组织页面主办了数百个代码仓库。这些仓库包含由以太坊研究人员和客户端团队为即将到来的升级而编写的协议草案代码,以及ACD电话会议的历史记录和最终EIP提案的副本。该仓库托管的规范不仅详细说明了以太坊的核心协议,还包括节点API、Solidity智能合约语言、测试工具等的文档。
标题:以太坊官方GitHub仓库首页 来源:GitHub
以太坊的核心代码库,包括EL和CL规范,每个月都会发生变化。客户端团队和以太坊基金会的员工是主要有权限合并和更新以太坊GitHub仓库的人员。当在ACD电话会议或Discord上的异步讨论中做出关键决策时,对以太坊规范的实际变更,即影响以太坊代码的治理决策的执行,都会在GitHub上进行。在GitHub上,用户可以追踪对以太坊规范所做的更改,并访问最新版本的规范。将代码更改合并到官方以太坊GitHub仓库是标志着在其他治理论坛上做出的决策最终确定和实施的最重要步骤之一。
虽然GitHub是计算机程序员中领先的开源代码开发平台,但以太坊开发者过去曾讨论过减少对这一中心化平台依赖的必要性,特别是在GitHub因政府压力关闭其平台访问的情况下。作为Gitcoin的替代方案,开发者可以探索去中心化开发的选项,包括Radicle和Mango。此外,社区被鼓励在其设备上托管以太坊代码库的本地副本,因为支持GitHub的版本控制系统git是一个无需通过网站托管或管理的许可协议。此外,在ETHMagicians和Ethresear.ch上进行代码更改讨论的动机之一是为了在多个平台上重复GitHub上的问题解释和拉取请求。
荣誉奖 荣誉提名 除了上述主要人物和论坛外,还有一些组织和协议在多年来对以太坊的发展产生了重要影响。
以太坊猫牧人 (The Ethereum Cat Herders) 以太坊猫牧人是一群通过捐赠资金支持的个人组成的团队,他们创建会议记录、撰写信息性博客文章、进行社区外联,并制作视频内容,以教育更广泛的公众了解以太坊。该团队于2019年1月由前ACD主席Hudson Jameson和前核心开发者Lane Rettig等以太坊社区知名人士创建。该团队由Herder-in-Chief Pooja Ranjan领导,她也是区块链出版网站EtherWorld的创始人。猫牧人是一个去中心化的“项目经理”团队,致力于帮助协调网络升级并改善客户端团队与更广泛社区之间的沟通。他们对EIP活动进行调查和分析,并提出改进以太坊代码更改治理流程的方法。
与他们通过项目管理引导EIP流程相关联,他们每周都会举办EIP改进会议和EIP办公时间,以跟踪每个EIP的状态,并将其推进到讨论、草案、审核、最后呼叫和最终阶段。他们还举办一个名为PEEPanEIP的每周YouTube系列节目,介绍EIP作者及其提议的代码更改。以太坊猫牧人与EIP编辑密切合作,改进EIP流程并根据群体共识进行更改。
协议公会 (Protocol Guild) 除了以太坊基金会和以太坊猫牧人之外,还有以太坊协议公会,这是一个旨在资助以太坊核心开发的智能合约应用程序。任何人都可以向智能合约发送同质化代币,然后这些代币会分发给由积极参与以太坊协议研究或客户端开发的个人拥有的地址注册表。截至2023年6月,协议公会注册表中有142人,来自Geth、Erigon、Besu、Lighthouse、Lodestar、Nethermind、Prysmatic Labs、Teku和Status等多个客户端团队。截至2024年5月,通过协议公会分发了超过1780万美元,资金由Uniswap、以太坊名称服务、Ether.fi、Nouns DAO和Moloch DAO等主要dapp项目积极捐赠。
协议公会接受来自任何地址和任何时间的资金。所有资金会随着时间的推移逐渐归属于注册表,并根据每个成员积极贡献以太坊协议的时间长短按比例分配。协议公会可以用作评估以太坊核心开发人员数量随时间增长的代理。
协议公会通过自愿捐赠自动分配给贡献者,也称为公会成员,积极帮助资助所有以太坊核心开发人员。公会成员本身负责更新开发人员注册表,通过删除或添加新成员来保持其更新。
Optimism的逆向公共产品资助
协议公会的一个重要贡献者是Optimism Collective。Optimism是建立在以太坊之上的第二大L2,仅次于Arbitrum,链上桥接资产价值为65亿美元。Optimism于2021年由一个名为OP Labs的开发团队推出。OP Labs负责操作聚合和排序用户交易的软件,这个区块称为排序器。虽然目的是逐步实现这一功能的去中心化,但OP Labs承诺将通过交易费用获得的排序器所有利润用于公共产品资助实验。所有排序器收入归属Optimism基金会,这是一家致力于发展去中心化Optimism “Collective”的非营利组织。(可以将OP Collective视为Optimism版本的以太坊社区。)
基金会将收入重定向到由OP代币持有者和其他集体成员根据Optimism的两院治理模式投票选择的公共产品项目。自2021年以来,Optimism基金会和更广泛的集体已向各种公共产品计划重新分配了超过4000万OP代币。协议公会是这些分配的主要接受者,三轮资助中获得了超过60万OP代币。
Gitcoin
协议公会是为了考虑到以太坊基金会预算减少和不断增长的终端用户和dapp生态系统,创建的一个长期资助公共产品的机制。另一个支持以太坊核心协议开发的具有长期潜力的资助机制是Gitcoin。如前所述,Nethermind、Prysmatic Labs、Lighthouse和Lodestar等多个客户端团队过去曾依赖Gitcoin获得部分资金。Gitcoin旨在通过帮助开源软件开发人员为其项目筹集加密货币资金,支持编码人员和开发人员。关于加密货币公共产品资助的更多背景信息,请参阅Galaxy Research报告。
过去的升级 在过去的八年里,以太坊核心开发人员执行了19次不兼容的硬分叉升级。这些升级在复杂性、紧迫性和争议性方面各不相同。其中一次升级导致了永久的链分裂,另一次升级则将整个网络利益相关者群体从网络参与中驱逐出去。每次升级都影响了以太坊的治理过程,并将其塑造成如今涉及多个人物、组织和论坛的多方面过程。在本节中,我们将讨论以太坊八年历史上的七个主要治理决策,并进一步研究决策过程中涉及的人员、组织和论坛。在过去的八年里,以太坊核心开发人员执行了19次不兼容的硬分叉升级。这些升级在复杂性、紧迫性和争议性方面各不相同。其中一次升级导致了永久的链分裂,另一次升级则将整个网络利益相关者群体从网络参与中驱逐出去。每次升级都影响了以太坊的治理过程,并将其塑造成如今涉及多个人物、组织和论坛的多方面过程。在本节中,我们将讨论以太坊八年历史上的七个主要治理决策,并进一步研究决策过程中涉及的人员、组织和论坛。
就技术问题达成共识 大多数时候,以太坊核心开发人员通过EIP流程推动和实施代码更改。此外,当出现需要紧急处理的意外和时间敏感的漏洞时,他们是做出区块链执行决策的人。以太坊历史上最具争议的决策是DAO硬分叉,源于影响许多ETH持有者的一个名为DAO的智能合约应用程序中的意外漏洞。在决定如何最好地解决意外的技术问题时,以太坊核心开发人员是主要的声音,他们提出、构思并最终实施解决方案。在DAO黑客事件中,以太坊客户端团队实施的解决方案导致了永久的链分裂,并创建了一个新的以太坊协议,这说明了以太坊的一个重要特征,即其无许可性质允许任何用户群体分叉代码库并启动以太坊的新版本。DAO黑客事件还说明了以太坊核心开发人员并不总是对以太坊代码库的演变持相同观点的一群同质化个体。
以下是三个案例研究,描述了以太坊利益相关者如何就技术问题达成共识:
案例研究1:DAO分叉
事件经过:
2016年6月17日,一个名为The DAO的智能合约协议在控制当时总ETH供应量的15%的情况下被黑客攻击,约70%的资金被盗。该攻击发生在以太坊推出不到一年之内。The DAO旨在成为一个自主的风险投资工具,允许DAO代币持有者对提案进行投票,并用基金的集中资金支持各种区块链项目。The DAO是第一种此类去中心化自治组织(DAO)。有关DAO的更多信息,请阅读Galaxy Research报告。DAO项目当时成为历史上最大的众筹活动,吸引了来自11000多名贡献者的1.5亿美元资金。
DAO通过一种称为重入漏洞的攻击手段被黑客入侵,这种漏洞允许恶意行为者在无需成本的情况下反复从智能合约中提取资金。这种情况发生在恶意行为者从目标智能合约发出外部调用到另一个智能合约时。未受信任的智能合约随后回调原始智能合约。每次黑客合约向DAO合约发起调用时,DAO智能合约在批准资金转移前都未能检查和更新其余额。这就是DAO合约如何慢慢耗尽其大部分资产的原因。当DAO的创建者察觉到漏洞时,他们预先使用与黑客相同的技术开始耗尽DAO合约。DAO的创建者设法挽救了30%的DAO资金,但剩下的70%由黑客控制。
参与者:
DAO项目背后的团队是一群名为Slock.it的匿名开发者。Slock.it设想DAO作为启动其他dapp创意的筹资机制,其中一个最著名的dapp创意是去中心化的拼车应用。以太坊基金会在智能合约被利用后在关于DAO黑客事件的沟通中发挥了重要作用。在以太坊基金会的博客上,以太坊基金会核心开发者提出了一些应对黑客事件的路径建议,如实施软分叉以减轻对代币持有者的影响。在2016年,矿工是运行以太坊节点和保护以太坊区块链的个人。因此,他们也是通过升级其软件来实施以太坊核心开发者代码更改的主要推动者。由于问题的争议性,主要围绕智能合约代码不可变性的激烈辩论,从以太坊社区获得最佳解决方案的共识变得困难。以太坊利益相关者,包括ETH持有者和dapp开发者,通过Twitter和Reddit等各种论坛分享意见。然而,决策主要通过ACD电话、Gitter和GitHub进行。
问题解决:
由Geth(EL)开发者Peter Szilagyi在2016年6月24日的以太坊基金会博客文章中提出的通过向后兼容的软分叉来解决DAO黑客问题的初步提议,很快被放弃,因为以太坊核心开发者发现这可能导致网络更广泛的DDOS攻击向量。在几周的讨论后,以太坊核心开发者达成共识,解决DAO黑客事件中丢失资金的唯一技术解决方案是通过硬分叉升级,允许Slock.it开发者将DAO中的所有资金重新分配到不易受重入漏洞攻击的不同智能合约中。
提出进行硬分叉升级的提议首先由Slock.it创始人、当时受雇于以太坊基金会的开发者Stephan Tual提出。该提议引发了关于“代码即法律”原则的争论,以及以太坊作为区块链的完整性在多大程度上依赖于维护这一原则。以太坊核心开发者于2016年7月15日组织了一次碳投票,以决定是否在下一个即时软件客户端发布中默认选择硬分叉。碳投票是一种链上机制,ETH持有者可以通过提交零费用的gas交易来表示对治理提案的偏好。DAO争议是以太坊核心开发者首次依赖链上碳投票作为收集共识的次要手段。4.5%的当时总ETH供应量参与了投票,其中87%的投票ETH供应量赞成默认选择硬分叉供节点运营商使用。
在黑客事件发生一个月后,以太坊客户端团队安排了硬分叉升级。该提议得到了Vitalik Buterin等主要社区人物和以太坊基金会等组织的支持。此外,当时以太坊客户端的多样性非常低。尽管有六个客户端实现,但97%的节点运营商运行Geth客户端,这就是当时在客户端团队中更容易协调客户端升级的原因。
通过推进有争议的硬分叉提案,客户团队将决定权留给矿工和其他节点运营商接受或拒绝他们的代码更改。硬分叉计划于 2016 年 7 月 20 日激活,也就是碳投票在链上完成几天后。在 DAO 硬分叉期间,一部分以太坊节点运营商没有升级其节点并创建了永久性的链分裂。不接受 DAO 硬分叉升级的以太坊版本现在被称为以太坊经典 (Ethereum Classic)。多年来,以太经典作为一个网络与以太坊一起不断发展。然而,由于缺乏安全性和用户参与度,它遭受了多次51%攻击。 DAO 黑客事件发生后的多年里,以太坊网络在采用率、矿工参与度、即算力以及最重要的价值方面都超过了以太坊经典。
以太坊在DAO硬分叉后能保持领先于以太坊经典(Ethereum Classic)的主要原因之一是大多数开发者的注意力,即客户端团队的开发者,继续在以太坊上进行开发,而不是在以太坊经典上。自其推出以来,以太坊一直是一个拥有雄心勃勃的开发路线图的区块链,许多投资者和利益相关者都认识到需要一个强大的开发团队来引领发展。在DAO硬分叉期间,主要的软件开发团队是Geth,Geth开发者之间的共识受到当时以太坊基金会领导人物如Vitalik Buterin的影响,决定执行硬分叉,将DAO黑客事件中的资金返还给DAO的创建者。这一共识在Geth开发者和更广泛的以太坊基金会中占据了重要影响力,影响了以太坊社区和更大的加密行业对以太坊采取的适当行动的看法。
DAO黑客事件在多个方面改变了dapp开发者对智能合约开发的方式。在黑客事件发生几个月后的一次演讲中,Slock.it开发者Lefteris Kaperelli解释了所有dapp开发者从DAO黑客事件中应该吸取的一个教训,即去中心化应用程序需要实施“杀手开关”以保护应用程序免受意外攻击。DAO黑客事件后,实施不可变应用程序的可升级性以及通过多重签名钱包和治理机构实施否决权的想法得到了广泛普及。今天,大多数去中心化应用程序在以太坊上都是可升级的。
关于以太坊的治理,DAO黑客事件是截至当时以太坊历史上最具争议的问题。这个问题展示了在以太坊社区无法达成一致共识时,以太坊的治理机制如何前进。它展示了三大主要学习点:
以太坊决策过程中的否决权 在于决定对以太坊软件进行哪些更改的以太坊客户端团队。然而,一旦达成协议并发布软件,就由节点运营商决定是否接受或拒绝代码更改。当时,主要的以太坊软件客户端是Geth,Geth团队以及以太坊基金会和Vitalik Buterin都支持硬分叉解决方案。因此,他们发布了必要的软件升级,在区块高度1,920,000激活了以太坊的硬分叉。 碳投票的使用 展示了如何通过链上机制加强链下治理过程。虽然碳投票是非约束性的,意味着它无权改变开发者在ACD电话会议和Gitter上进行的决策过程,但它确实强化了以太坊社区倾向于执行硬分叉的意向。 节点运营商在以太坊上选择运行哪个版本的以太坊协议的能力和权威。一些人选择拒绝DAO硬分叉。然而,正如本文之前提到的,自2016年以来,去中心化金融(DeFi)行业的增长使得以太坊协议的替代版本由于流动性分散和dapp互操作性而越来越成本高昂和技术挑战。 DAO黑客事件和随后的硬分叉不仅对以太坊本身产生了深远的影响,也对整个区块链和去中心化应用领域带来了重要的教训和改进。以太坊在治理、技术改进和社区共识方面的处理方式,为未来的去中心化自治组织和智能合约项目提供了宝贵的经验教训。
案例研究2:Parity多签漏洞 事件经过
2017年11月,以太坊最广泛使用的多重签名(multi-sig)钱包,由Parity Technologies开发,被意外利用,导致分布在580多个用户钱包中的514,000 ETH(当时价值超过3.2亿美元)永久冻结。黑客“devops199”在GitHub上提醒Parity开发团队,他们发现了一种转移控制Parity多签钱包的智能合约所有权的方法。在试图将合约所有权归还给Parity团队时,devops199意外触发了Parity代码中的“kill()函数”,实际上冻结了Parity多签用户的余额。这次毁灭性的漏洞是2017年Parity多签钱包中发现的两个主要漏洞之一。
参与者
作为背景介绍,Parity Technologies由以太坊联合创始人之一Gavin Wood于2015年创立。多年来,该公司为比特币、Zcash和以太坊构建了软件客户端。在多签漏洞发生时,Parity软件客户端是节点运营商使用的第二大最受欢迎的以太坊客户端。Parity Technologies在2019年停止了对Parity客户端的支持,并将其重命名为OpenEthereum,同时转向构建他们自己的第一层区块链Polkadot。Polkadot于2020年5月在主网上线。
问题解决
为了解锁被冻结的用户资金,Parity开发团队在2018年4月提出了EIP 999。EIP 999将通过硬分叉升级恢复被devops199意外自毁的代码。尽管Parity多签漏洞影响了大量以太坊用户,但代码更改从未在升级中实施。由于社区的强烈反对和反对拟议的更改,EIP最终被Parity开发者撤回。
主要要点
尽管Parity是第二大最受欢迎的以太坊客户端,并且在以太坊核心开发者看来,EIP 999在技术上是合理的,但该提案未能实施,因为实施显然会导致另一次永久的链分裂。Parity联合创始人兼当时的首席执行官Jutta Steiner在2018年4月26日的一篇博客文章中写道,公司“无意因EIP 999而分裂以太坊链”。Parity多签漏洞是一个重要的案例研究,强调了以太坊客户端团队对以太坊代码库影响的极限。尽管是以太坊治理过程中最活跃的参与者,客户端团队通常被激励实施以太坊社区大多数人支持的代码更改,并避免那些可能重演DAO黑客事件的高概率事件。
与DAO黑客事件类似,围绕EIP 999的争议集中在以太坊代码不可变性的辩论上。然而,这次,以太坊利益相关者中的压倒性共识,除了Parity客户端团队外,是拒绝Parity提议的代码更改并维护代码不可变性。这种共识部分通过为期一周的链上碳投票得出,投票结果显示55%的投票者反对激活EIP 999。使用另一个碳投票来衡量更广泛的社区情绪也引发了关于链上投票在以太坊治理过程中的有效性的辩论。许多以太坊开发者和ETH持有者认为,由于ETH鲸鱼能够用其持有量扭曲投票结果,碳投票是不准确和无效的。除了历史上在治理过程中从未具有太多合法性的非正式碳投票外,EIP 999还经过了正式的EIP审查过程,以太坊客户端团队和更广泛的以太坊核心开发者组认真讨论了代码更改。在2018年4月初次提交后的三个月内,由于缺乏社区支持,EIP 999被多个人拒绝。
案例研究3:君士坦丁堡(Constantinople) 事件经过
第六次以太坊升级君士坦丁堡(Constantinople)主要减少了区块奖励,从3个ETH减少到2个ETH,同时对以太坊代码库进行了一些其他小的技术改进。君士坦丁堡的范围在2018年8月最终确定,并计划在2019年1月激活。除了减少区块奖励(EIP 1234)之外,君士坦丁堡的最终范围内还包括以下代码更改:
EIP 145:创建了一种称为按位移位的更高效的信息处理方法。 EIP 1052:提供了一种优化大规模智能合约代码执行的方法。 EIP 1283:引入了一种更公平的智能合约数据存储更改定价方法。 EIP 1014:为基于状态通道和“链下”交易的某种类型的扩展解决方案奠定了基础。 在君士坦丁堡升级计划激活前不到48小时,一家名为Chain Security的区块链安全和审计公司在升级代码中发现了一个漏洞。经过更仔细的检查,发现EIP 1283允许黑客利用重新定价的存储操作操纵智能合约余额。该漏洞的性质类似于DAO攻击,可能为恶意行为者提供了对智能合约发起重入攻击的机会。
参与者
Chain Security于2019年1月15日发布了一篇博客文章,详细说明了漏洞的确切性质。同一天,以太坊核心开发者通过Gitter和一次临时ACD电话会议召开会议讨论下一步行动。他们迅速达成共识,暂停计划的升级,并决定在三天后的1月18日定期举行的ACD电话会议上确定新的升级日期和软件补丁。在ACD电话会议期间,开发者就升级补丁达成共识,并将硬分叉重新安排在2月28日激活。以太坊基金会和以太坊猫牧人协助向以太坊矿工和其他节点运营商传达这些决定的最后通知。两个组织都发布了博客文章,并联系了社区利益相关者,提醒他们硬分叉计划的最后更改。
问题解决
由于问题的性质是技术性的,君士坦丁堡漏洞主要在客户端团队之间得到解决。以太坊核心开发者迅速集思广益,找到最有效的解决方案,并在其软件客户端中实施。与DAO攻击补丁不同,君士坦丁堡漏洞的解决方案并不具有争议性,但它确实引发了对EIP测试过程的担忧,并强调了加强升级测试工作的需求,以确保在主网上部署新代码更改之前进行充分检查。修补漏洞并设定新的硬分叉日期后,以太坊矿工和其他节点运营商于2019年2月28日成功升级了他们的硬件,没有出现问题。
主要要点
君士坦丁堡漏洞的解决突显了社区在短时间内团结起来实时更改以太坊协议的能力,特别是在受到网络安全问题激励的情况下。鉴于问题本身没有争议,以太坊节点运营商能够在48小时内恢复到旧版本的客户端软件。此外,核心开发者能够在2019年2月成功激活修补版本的君士坦丁堡升级。原始升级代码中的漏洞并没有阻止以太坊开发者执行升级,而是鼓励他们在未来的升级测试上投入更多时间和资源。
就社会问题达成共识 社会问题上的共识形成 当问题源于以太坊的社会价值观争议时,决策过程会变得相当漫长和拖延。DAO漏洞是智能合约的技术故障的一个例子。然而,DAO硬分叉代表了对挑战以太坊“代码即法律”价值观的技术漏洞的解决方案,这就是为什么它引发了高度的争议和以太坊核心开发者的无所作为。在以太坊的治理历史上,还有一些其他实例,当以太坊核心开发者不得不应对不属于技术性质但涉及更广泛的社区价值观和信仰的社会问题时,他们选择了在开发方面退居二线。他们将大部分决策过程交给更广泛的以太坊社区,结果是各种以太坊利益相关者的声音相互碰撞,导致问题和提案的解决延迟。由于以太坊上的社会问题涉及的声音比核心开发者更多,因此达成共识是困难的,并且结果往往充满不确定性。
案例研究4:ProgPoW 事件经过 程序化工作量证明(ProgPoW)是一种旨在优待效率较低的矿工并抑制专业矿工有效性的工作量证明挖矿算法。专业矿工指的是操作专用挖矿机器(称为应用专用集成电路,ASIC)的个人或企业。这些机器高度优化用于执行单一任务,无法轻易用于其他任务。图形处理单元(GPU)是可以执行多种不同任务的计算机,因此使用更广泛,且价格更便宜。ProgPoW的目标是使以太坊抗ASIC,并防止挖矿算力的集中化。比特币挖矿行业在几年间被主要由高度资本化、上市和受监管的公共公司操作的ASIC机器所主导。
2018年4月,在以太坊推出三年后,矿机制造商比特大陆发布了第一个以太坊ASIC。以太坊社区对由于采用ASIC技术而导致的算力集中化的不可避免性表示担忧,这推动了对ProgPoW的研究和开发。该算法由名为“IfDefElse”的开发团队在2018年5月在以太坊Magicians上提出。
尽管在以太坊核心开发者看来,该提案在技术上是合理的,但以太坊社区对该算法防止ASIC主导性的有效性存在分歧。考虑到ASIC只是专用机器,很难构建一种矿机算法,使得计算机在某种程度上无法被优化。其他区块链项目如门罗币(Monero)、Ravencoin、Horizen、以太坊经典(Ethereum Classic)等尝试创建抗ASIC的挖矿算法,效果并不一致。鉴于2018年以太坊上ASIC的初始阶段,社区也对这个问题是否紧迫提出了疑问,认为开发人员是否需要在其他EIP之前通过硬分叉升级来解决这个问题。
决策过程 从2019年2月到3月,几乎在最初EIP提出一年后,以太坊客户端团队在以太坊基金会和以太坊猫牧人的帮助下进行了多次调查,以确定对ProgPoW的支持和共识程度。
主要要点 社区分歧:尽管ProgPoW在技术上合理,但社区对其防止ASIC主导性的有效性存在分歧,尤其是考虑到其他区块链项目的抗ASIC算法效果不一致。 紧迫性问题:社区质疑在2018年以太坊ASIC刚刚出现时,是否需要优先解决这个问题,而不是先处理其他EIP。 共识形成的难度:由于涉及的声音比核心开发者更多,达成共识非常困难,决策过程因此被延迟。 结论 ProgPoW案例突显了在以太坊上处理社会价值观争议时形成共识的复杂性。以太坊核心开发者在这些问题上通常选择让更广泛的社区主导决策过程,结果是不同利益相关者的声音相互碰撞,导致问题和提案的解决延迟。这种情况下,形成共识往往是困难的,且结果不确定。
以太坊猫牧人主持了一项在Twitter上的调查,以评估社区对ProgPoW的态度。 来源:Twitter (@EthCatHerders )
以太坊基金会组织了两次围绕ProgPoW的链上投票。第一次投票的设计类似于DAO硬分叉前进行的投票,计算每个持币人持有的ETH数量加权的投票权重。第二次链上投票则旨在调查以太坊矿工对ProgPoW的态度,允许独立矿工和矿池在挖矿块的额外字段中输入数据。这两次投票都显示出对代码更改的压倒性支持。代表当时近一半以太坊算力的矿工参与了第二次链上投票,其中77%的参与矿工投票赞成ProgPoW。
大多数以太坊矿工在当时是GPU矿工,因此他们大多支持ProgPoW提案。然而,dapp开发者和其他以太坊利益相关者则不支持ProgPoW,因为担心该算法的实施可能导致网络分裂并降低ETH的价值。在这场辩论中,以太坊核心开发者中的知名人物,如Vitalik Buterin和Geth团队的成员,多次重申他们对这一变更保持中立立场,并会实施社区认为最合适的决定。在多次ACD电话会议上,以太坊核心开发者因其技术可靠性批准了ProgPoW。矿机制造公司如Linzhi则公开反对这一升级。
参与者情况:IfDefElse是由三名开发者组成的团队,其中两人保持匿名,仅有一人公开了个人身份。IfDefElse的公开成员是Kristy Leigh Minehan。当时,她是Core Scientific区块链基础设施公司的首席技术官。Minehan参加了几次ACD电话会议和以太坊会议,解释ProgPoW算法,但争议使她很快退出了公众视野。在许多情况下,Minehan因其项目而受到攻击和欺凌。她被指控为Nvidia和AMD的工程师雇佣,目的是破坏ASIC矿机制造商。Minehan不再从事ProgPoW的工作,目前担任Valkyrie资产管理公司和Merkle Standard加密货币挖矿公司的顾问。
问题的解决:为解决社区对ProgPoW抗ASIC有效性的担忧,以太坊猫牧人宣布他们将筹集10万美元,以委托独立的第三方对ProgPoW代码进行审计。从2019年3月到2019年9月,猫牧人花了大约六个月时间筹集资金并委托区块链安全公司Least Authority进行审计。2019年9月,审计结果发布。审计确认了ProgPoW算法的设计准确性和其增强ASIC抗性的目标,尽管审计也警告未来的硬件进步可能会降低ProgPoW的有效性。审计结果发布后,以太坊核心开发者同意在即将到来的硬分叉中包含这一代码更改。然而,来自以太坊社区成员特别是dapp开发者的持续反对,导致以太坊核心开发者对在实际升级中优先考虑ProgPoW产生了争议。ProgPoW的争论在以太坊社区中持续了大约两年。在2020年3月的ACD #82会议上,开发者进行了最后一次关于代码更改的公开讨论。在那次会议上,开发者表达了对社区对ProgPoW缺乏支持的担忧,并因此决定不在下一个近期的硬分叉中包含这一代码更改。
主要收获:ProgPoW并未解决以太坊存在的技术漏洞、黑客攻击或影响大量ETH持有者或以太坊网络安全的问题。ProgPoW开发的主要推动者是矿工,他们的声音由于以太坊自推出以来就一直存在的强制移除矿工并转向PoS的努力而历来薄弱且被忽视。每当以太坊核心开发者提出改变块发行量(如EIP 1234)或以某种方式减少矿工收入(如EIP 1559)的变更提案时,矿工的反对从未动摇过以太坊核心开发者的意见或态度。因此,旨在从技术角度审查和推进变更的治理过程并未帮助ProgPoW激活,支持变更的个人在以太坊生态系统中也没有影响力。
尽管有链上投票和以太坊核心开发者的技术批准,ProgPoW的辩论说明了在没有dapp开发者和终端用户的广泛社区支持的情况下,一组网络利益相关者在改变以太坊方面的无力感。以太坊核心开发者并不反对代码更改,但发现难以优先考虑这一有争议的升级,而不是那些争议较少并获得更多以太坊终端用户支持的其他代码更改。此外,随着以太坊核心开发者自2021年初开始将注意力转向PoS和废弃挖矿算法,ProgPoW的需求逐渐减弱。
案例研究 5:Afrigate 事件经过: 以太坊核心开发者被以太坊社区驱逐的情况并不常见。然而,正如前一个案例研究中提到的,有些EIP作者因在社交媒体上遭受激烈的网络欺凌而不得不退出公开讨论。这正是以太坊核心开发者Afri Schoedon的情况。Schoedon是由Parity Technologies开发的Parity客户端的开发者。Parity Technologies由Gavin Woods创立,他是以太坊的联合创始人之一,与Vitalik Buterin和其他六人共同创立。除了Parity以太坊客户端,Parity Technologies还构建了另一个通用区块链——Polkadot。Schoedon自2015年以来一直是以太坊的代码贡献者,也是以太坊硬分叉的主要协调员。2019年2月14日,当Polkadot协议处于积极开发阶段时,Schoedon在推特上开玩笑地发布了一条关于Polkadot协议的模因:
图片说明: 以太坊核心开发者Afri Schoedon开玩笑地制作了Polkadot协议的模因。 来源: Google Webcache
在接下来的48小时内,Schoedon因这条显然是玩笑的推特而遭到欺凌、批评和骚扰。批评者在社交媒体上指责Schoedon存在“利益冲突”,尽管Schoedon一再重申他从未直接参与Polkadot的开发。Schoedon在推特上澄清,他的模因是为了引发关于Serenity(当时以太坊向PoS过渡的名称)开发的讨论,而不是制造Polkadot和以太坊之间的竞争叙述。然而,持续的批评导致Schoedon删除了许多推特,并最终在2月19日宣布他将离开以太坊社区。“我没有退出社交媒体,我退出了以太坊。我没有消失,我只是离开了社区。我不再协调硬分叉,构建测试网或做其他贡献。我没有在Polkadot上工作,我从未工作过,我在以太坊上工作。我不恨以太坊,我爱它,”Schoedon在删除其推特账户之前的最后几条推特之一中说道。
参与者: 虽然Schoedon是事件的主要参与者,但在Schoedon离职后,其他以太坊核心开发者和社区成员也站出来为他辩护。Schoedon转而帮助Ethereum Classic完成升级,以提高其与以太坊的兼容性。截至2023年7月,他继续以不同的化名通过协调以太坊测试网络等方式为以太坊做贡献。
问题解决: 在事件发生后的一个月的ACD电话会议上,以太坊核心开发者宣布他们正在寻找新的硬分叉协调员以取代Schoedon。然而,这一搜索并未持续太久。在没有合适候选人的情况下,开发者们同意将Schoedon的职责分配给多个人。从Schoedon离职以来,硬分叉协调员的职责——包括设置硬分叉日期、选择硬分叉的EIP以及领导升级测试工作——已经分散给了多位核心开发者和客户端团队。此外,在2019年2月,115名以太坊社区的知名成员签署了一封公开信,谴责导致Schoedon辞职的“有毒”行为。公开信重申了在以太坊协议开发中促进尊重、言论自由和隐私价值观的讨论标准和规范的必要性。前ACD主席Hudson Jameson还在Reddit上主持了一次AMA,以解决关于以太坊领导层和问责制的争论。3月,Ethereum客户端团队ChainSafe在巴黎举办了一次线下活动,进一步讨论以太坊治理过程中的问题并构想改进方法。
主要收获: Afri Schoedon,这位著名的以太坊核心开发者,离开以太坊社区的事件为以太坊核心开发者、dapp开发者和终端用户敲响了警钟,提醒他们社交媒体欺凌对以太坊治理的真实影响。作为一个非链上且定义较为松散的决策过程,以太坊核心开发者虽然专注于技术问题和与以太坊相关的事项,但并不免受推动以太坊开发的社会辩论和压力的影响。无论与以太坊相关与否,网络欺凌在任何情况下都是一种有害活动,都会对被针对者的行为和心态产生负面影响。鉴于以太坊的决策过程严重依赖于在线媒介进行讨论和辩论,难以防范此类行为。毕竟,这并不是唯一一次以太坊治理过程的贡献者在社区内受到骚扰和排斥。然而,Afri Schoedon的离职成为以太坊治理过程受到更多关注的催化剂,并强调了在这一过程中需要更强的规范和社会价值观,以促进参与者之间的健康和尊重的讨论。
创建共识:向权益证明(PoS)的升级 自以太坊推出以来,以太坊的利益相关者一直在期待向权益证明(PoS)共识协议的过渡。因此,在迈向合并的几年里,关于将以太坊升级为PoS的想法,社区几乎没有争议或反对。然而,在以太坊的历史上,不同方法实施过渡的技术优劣在不同时间点上引发了争议。此外,在以太坊存在的最初六年中,有关在其他举措(如提高以太坊的可扩展性和抗审查能力)之前优先进行此升级的紧迫性也引起了争议。
一旦以太坊客户端团队之间的技术辩论得到解决,并且在2022年秋季敲定了激活的路线图,该升级受到了以太坊核心开发者和更广泛的以太坊社区几乎一致的欢迎。将以太坊从PoW过渡到PoS所涉及的代码更改,是以太坊历史上最成功和最具变革性的EIP之一。没有其他升级能像完成以太坊向PoS过渡的升级那样获得如此高的社区一致性和兴奋度。PoS的过渡是一个多年的努力,在其初期部署阶段,依赖于ETH持有者通过质押他们的ETH来资本化和引导协议,而没有保证何时可以解质押。尽管因其复杂性而推迟,并且常常被嘲笑和阻挠,尤其是来自比特币社区和以太坊矿工的成员,但最终被称为合并的PoS过渡,巩固了围绕以太坊及以太资产的强大叙述,即“超声波货币”叙述。
以下案例研究深入探讨了以太坊向PoS过渡以及两部分升级中涉及的治理过程。
案例研究6:合并 事件经过: 向PoS的过渡经历了几个迭代,成为以太坊历史上延迟最久的升级,最初预计在以太坊推出后两年内准备就绪。将现有的以太坊代码库与信标链(以太坊的共识层,即CL)合并的决定非常艰难,因为许多以太坊客户端团队正在研究一种将以太坊替换为信标链的升级。2018年,构建PoS过渡的客户端团队被称为以太坊2.0团队。他们与另一个开发短期以太坊举措的开发者团队——Ethereum 1x——合作,从中发展出EIP 1559和无状态性等想法。在合并升级之前,推进PoS的努力在很大程度上是独立进行的,并且与以太坊核心协议开发平行推进。合并在2022年9月15日激活。
参与者: 实现合并的主要团队是新的一批以太坊客户端团队,其中许多并未构建和维护现有的以太坊客户端。Prysmatic Labs、Lighthouse和ChainSafe是通过贡献于以太坊向PoS的升级而新加入以太坊治理过程的客户端团队的例子。2020年12月信标链的推出,主要得益于这些相对新的专注于PoS的客户端团队的努力。在信标链推出后,CL客户端团队开始认真地与EL客户端团队接触和合作,讨论过渡。领导合并升级计划的主要人物之一是以太坊基金会的研究员Danny Ryan。他继续担任以太坊共识层开发的负责人,并领导ACDC电话会议。
问题解决: 在合并激活日期前,为确保过渡顺利进行,进行了前所未有的测试。以太坊核心开发者组织了超过25次不同的测试网启动。以下是以太坊核心开发者在合并激活前几个月组织的影子分叉测试网启动的图示:
(此处可插入一个关于影子分叉测试网启动的插图或图表)
主要收获: 以太坊向PoS的过渡不仅是一次技术变革,也是一次社区一致性和合作的象征。尽管在技术细节和实施方法上存在争议,但最终的升级得到了几乎一致的支持。这次过渡展示了以太坊社区在面对复杂技术挑战时的韧性和创新能力,并巩固了以太坊作为区块链领域创新前沿的地位。
在合并激活日期前,为确保过渡顺利进行,进行了前所未有的测试。以太坊核心开发者组织了超过25次不同的测试网启动。在合并激活前几周,以太坊基金会将漏洞赏金计划的资金增加了四倍,达到100万美元,这是该组织有史以来资助的最高金额。合并需要CL和EL客户端团队以及验证节点操作员之间的密切协调,后者在升级节点软件方面不如矿工熟练。升级的性质还要求节点操作员更多地参与正确配置客户端软件,为合并做好准备。以太坊基金会和以太坊猫牧人再次站在前线,接触以太坊利益相关者并向公众宣传升级的性质。合并确实导致了以太坊的短暂分叉,但没有一个分叉继续持有有意义的价值或支持重要水平的dapp活动。
由于合并,以太坊的复杂性增加了一倍,因为该协议现在是两个网络的组合,这两个网络并行推进。这创造了需要单独的治理过程来组织为以太坊的EL和CL提出的代码更改。正如所提到的,每两周会有两次ACD电话会议,讨论与EL和CL相关的EIP。然而,以太坊软件的其他组件,如影响EL和CL的Engine API,还没有明确的治理过程来更改和更新。这引发了围绕EIP过程未来更新的新讨论,以更好地组织考虑到协议的双网络结构的以太坊更改。这些未来对EIP过程的更改将在本报告的下一部分中详细讨论。
案例研究7:上海升级 以太坊的第十七次硬分叉于2023年4月激活。被称为“上海”的升级激活了从信标链提取质押ETH的功能,从而标志着以太坊向PoS过渡的完成。在合并升级完成后不久,以太坊核心开发者迅速准备了上海升级所需的代码更改。尽管围绕上海升级应该优先考虑哪些EIP存在几个竞争利益,但以太坊核心开发者优先考虑了EIP 4895所代表的质押ETH提取,主要是为了安抚以太坊质押社区,该社区在合并后成功成为以太坊的主要安全提供者和节点操作员。
参与者:
在上海升级优先考虑EIP 4895的决定中,质押池和在信标链上质押ETH的持有者集体声音对以太坊核心开发者产生了前所未有的影响,这与矿工在决策过程中历来能够施加的影响水平显著不同。以太坊客户端团队再次充当了合成社区情绪的守门人,优先考虑哪些EIP应该在升级中包含而不是其他。从2022年10月28日到2023年1月5日,以太坊核心开发者在几次ACD电话会议上激烈讨论了上海升级的范围。讨论突显了客户端团队之间对EIP优先级的意见分歧,以及以太坊核心开发者之间的共识通常不是通过一致决定达成的,而是通过粗略的多数投票。一旦上海升级的范围和开发时间表确定,以太坊核心开发者便开始准备和测试相关代码更改,以便激活。
问题解决:
上海升级于2023年4月12日激活。由于升级的成功,新质押在以太坊上的ETH数量达到了前所未有的水平,远远超过了解质押的ETH数量。
上海的升级增强了人们对以太坊作为强大且功能齐全的 PoS 共识协议的积极情绪。它还通过引入质押 ETH 提款,显着降低了质押活动的风险,随后导致质押资金流入大量涌入。截至 2024 年 5 月 14 日,ETH 总供应量的 27% 被质押,以太坊的年化通胀率趋势低于 1%。自上海激活以来持续的负通胀率和不断上升的质押率进一步增强了人们对 ETH 作为超声波货币的积极情绪。
主要要点:上海生态产业园优先发展的决策过程值得注意,主要有以下三个原因。
它强调了以太坊质押社区作为以太坊的主要节点运营商和安全提供商对协议治理的影响。 它重申了以太坊核心开发人员作为主要看门人的作用,综合和协调协议升级,以实现以太坊创始人自以太坊推出以来制定的雄心勃勃的发展目标。 它完成了以太坊向 PoS 的过渡,并引发了新的质押流入,远远超过了质押流出,进一步验证了超声波货币的说法。 未来的升级 根据本报告中分析的七个案例,Ethereum的治理过程通过EIP过程不断演变且定义松散。早在2015年,Ethereum由8位联合创始人推出,并制定了一个四阶段的发展路线图。最后一个阶段被称为“Serenity”,代表从工作量证明(PoW)向权益证明(PoS)共识协议的过渡。到2023年,Ethereum成功完成了向PoS的过渡,并推出了一个新的八阶段发展路线图,每个阶段的名称都押韵。
在极少数情况下,决策通过Ethereum核心开发者的专属努力迅速做出,并在快速升级的时间窗口内共享给Ethereum节点操作员实施。其他时候,决策交给更广泛的Ethereum社区,这通常导致决策延迟并在利益相关者之间产生争议。通过多次升级和几次有争议的治理辩论,Ethereum作为一个协议和一个社会集体不断发展,主要依赖于规范、价值观和信念,而不是链上投票过程或机制。
尽管完成了上海升级和向PoS的过渡——这一过渡最初被协议创始人设想为Ethereum的最后一次重大升级——未来仍有大量的EIP和计划预计将在未来几个月和几年内转变Ethereum协议。最近,通过Cancun/Deneb升级,Ethereum开发者激活了EIP 4844。EIP 4844,也被称为protodanksharding,是一个引入了新交易类型“blobs”的代码更改,增加了Ethereum区块的数据和存储要求,并创建了一个新的费用市场,以便将blobs的定价与常规交易分开。有关EIP 4844的更多信息,请阅读Galaxy Research报告。
开发者正在为下一个Ethereum升级Pectra准备的几个高调EIP包括但不限于:
BLS签名:为智能合约开发者创建一种新的成本效益操作,以在他们的代码中使用BLS签名和SNARK验证。这包括创建更安全的加密证明、与Ethereum信标链更好的互操作性以及增加去中心化质押池的功能。 增加验证者有效余额:验证者奖励按验证者的有效余额比例累积,目前上限为32 ETH,这迫使验证者节点操作员需要创建新的验证者以赚取更多的质押奖励。为了减少活跃验证者集合的增长(这会给Ethereum的点对点网络层带来压力),有提议增加验证者的有效余额。有关验证者集合大小增长问题的更多信息,请阅读Galaxy Research报告。 执行层可触发提款:允许验证者通过其执行层(0x01)提款凭证触发退出和部分提款。这将支持在Ethereum上创建更多无需信任的质押池设计。 开发人员正在考虑在 Pectra 升级后的某个时候实施的其他代码更改包括:
原生账户抽象:账户抽象是一种改善用户体验的改进,允许智能合约逻辑控制用户拥有的钱包。智能合约无法授权交易,但用户控制的外部拥有账户(EOA)可以。最突出的代码更改提案是ERC 4337,它不需要不向后兼容的硬分叉。 MEV相关升级:最大可提取价值(MEV)是通过在一个区块内重新排序用户交易可以提取的额外收入。由于MEV的高收益,很多利益相关者都参与其中。MEV策略类似于传统金融中的某些交易策略。有关MEV的更多信息,请阅读Galaxy Research报告。 MEV平滑:MEV平滑是指平滑分配给验证者的MEV区块奖励,以减少奖励波动,并阻止验证者试图操纵共识过程以赚取MEV。 MEV销毁:另一种比MEV平滑更进一步的策略是像Ethereum的基础费用一样销毁MEV收入。这将进一步减少Ethereum供应的通货膨胀,并减少验证者为了额外的MEV收入而操纵共识的激励。 内置PBS:MEV目前通过称为中继的第三方市场在Ethereum上赚取。为了减少对运营中继的可信实体的依赖,正在进行研究以将中继结构集成到Ethereum协议中。有关MEV中继的更多信息,请阅读Galaxy Research报告。 单槽终结性:在Ethereum上,终结性定义为一个区块在没有处罚至少33%总质押ETH的情况下不能被更改或替换的点。目前,Ethereum的终结时间在12到15分钟之间。然而,Ethereum核心开发者正在研究设计以实现更快的终结保证,通过在12到15分钟窗口内逐步增加质押保证来改善用户体验。 验证者上限:为了减少活跃验证者集合的增长,有提议将验证者数量限制在一定水平。这样做将确保Ethereum的网络层能够维持快速的信息传播,以支持更快的终结性或降低成为验证者所需的最低质押ETH数量。 发行变化:开发者还在权衡Ethereum发行政策的变化,以防止ETH供应大部分集中在流动质押(或再质押)池中。通过发行变化,开发者希望设定质押参与的上限,并实现最低可行的发行,即协议不应发行超过网络安全所需的代币数量。 Verkle树:目前,有关Ethereum账户、交易和区块链状态的数据使用称为Merkle Patricia树的结构存储。Merkle Patricia树数据结构允许用户通过依赖于代表树根的单个加密证明来轻松验证大量数据。Verkle树数据结构功能类似于Merkle Patricia树,但计算机比Merkle树更高效地证明它们。 尽管上述某些EIP可能由于缺乏技术可靠性或过多争议而最终未能在升级中实施,但讨论中的代码更改数量和范围是广泛的。以下是Vitalik Buterin在2023年12月总结的Ethereum发展路线图的可视化表示:
图片截至2023年12月以太坊更新后的开发路线图
来源: Twitter (@vitalikbuterin )
随着以太坊协议代码的变更,开发者也在努力更新EIP流程,以适应合并后以太坊更加雄心勃勃的发展路线图。在最近的ACD电话会议上,开发者提出将ERCs从EIPs中移除并进行独立的治理流程,同时更新EIPs的编号以便更容易追踪。这些小的行政变动在社区内引发了激烈的争论。因此,提出的任何以太坊治理流程的变更并没有建议任何治理流程在短期内移至链上或变得更严格,这并不令人意外。
一个值得关注的EIP流程重大变化是为Layer-2 Rollups上的代码变更创建一个类似的审批流程。Rollup Improvement Proposal(RIP)流程旨在促进不同Rollups升级之间的合作和协调。RIPs由Rollup开发者在一个名为RollCalls的定期会议系列上提出和讨论。以太坊协议开发者正在权衡RollCalls上的决策应在多大程度上影响ACD电话会议上的决策,反之亦然,因为以太坊开发者越来越多地尝试追求以Rollup为中心的发展路线图。
展望 正如案例研究所示,升级的成功、失败和争议并没有阻止以太坊核心开发者更改代码库。升级的频率并没有随着时间的推移而减缓,所考虑和实施的变更性质变得更加雄心勃勃,而不是减少。因此,以太坊核心开发者在管理协议和实现未来开发路线图升级中的角色将保持高度重要和影响力。
除了以太坊核心开发者之外,社区中还有一群越来越重要的利益相关者,他们也是协议治理的重要贡献者。Vitalik Buterin在2019年一篇关于区块链治理的帖子中承认了“象牙塔知识分子”接管以太坊治理过程的担忧,并确认解决这个问题的最佳方法是增加参与治理过程的机构和组织的数量,进一步将治理权力从单一群体分散开来。
随着以太坊Dapp生态系统的发展,积极参与以太坊治理的利益相关者数量也在增加,包括多个L2和DeFi协议,以及通过合并出现的多样化客户端团队。此外,随着以太坊协议的复杂性增加,从事以太坊研究和开发的团体也在多个平行项目中实现多样化,这些项目包括扩展性、MEV(最大可提取价值)、账户抽象、EOF(以太坊对象格式)等。
展望未来,验证节点运营商应该预期到未来可能会大幅改变其业务模式的升级。鉴于以太坊频繁升级的预期和现实,社区必须确保以太坊核心开发者不是决定以太坊协议升级内容和时间的主要声音。此外,正如Geth(执行层)开发者Péter Szilágyi等几位以太坊核心开发者所表达的那样,对以太坊协议复杂性的担忧正在增加,因为其发展路线图非常雄心勃勃。
以太坊协议的复杂性有几个缺点,主要是增加了技术错误和失败的风险。因此,尽管EIP流程旨在促进以太坊上的代码更改,但决策过程中的利益相关者需要逐渐优先考虑代码固化而非代码更改,从而减少对活跃治理流程的需求。这一点尤为重要,因为以太坊及其上构建的应用程序正受到越来越多的监管审查。尽管今天以太坊协议开发者和更广泛的社区在治理过程中最具影响力,但监管机构和执法机构的压力也在增加,并且可能成为影响以太坊设计的一个过大的声音。为了防止以太坊协议被监管捕获,必须将以太坊运作的某些方面固化,使其超出任何利益相关者群体或实体的更改能力。
结论 以太坊治理是一个由人、组织、论坛和流程构成的复杂迷宫。像社区一样,决策过程是无定形的,难以定义的,主要由社会规范和叙事塑造,而不是正式规则或具有约束力的链上投票机制。尽管在关于以太坊协议未来的决策过程中曾多次引发社区内的分歧和争议,但以太坊的路线图仍然雄心勃勃,已经有多项EIP在以太坊社区内引发了辩论和讨论。
随着以太坊核心开发者作为看门人最终决定通过升级实施的更改,以太坊协议很可能会继续变化而非固化。如果技术过于可升级,可能会出现监管捕获的问题,正如我们在以金融为重点的Dapp和DAO中小规模看到的那样。关于去中心化技术升级能力的监管担忧超出了本报告的范围,但可能是未来考虑的一个研究领域。
以太坊作为一项技术取得了长足进步,推动了区块链技术的可能性界限。此外,以太坊作为一个社会社区,继续提出关于去中心化和开源技术最佳治理形式的新问题。随着以太坊核心开发者追求越来越雄心勃勃的发展路线图,其中包含扩展以太坊生态系统到多个Layer-2协议的升级,所有网络利益相关者需要考虑以太坊治理的社会规范而非定义的流程如何以及应如何继续塑造以太坊的未来。
Previous Post 了解空投机制
Next Post 美国加密货币支付牌照要求