:root{--color-white:#fff;--color-lighter-gray:rgba(0,0,0,.05);--color-light-gray:#e6e6e6;--color-mid-gray:#ccc;--color-dark-gray:#444;--color-darker-gray:#15171a;--color-black:#000;--color-primary-text:var(--color-darker-gray);--color-secondary-text:rgba(0,0,0,.55);--color-border:rgba(0,0,0,.08);--color-dark-border:rgba(0,0,0,.55);--font-sans:Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-serif:"EB Garamond", Georgia, Times, serif;--font-serif-alt:Georgia, Times, serif;--font-mono:"JetBrains Mono", Menlo, Consolas, Monaco, "Liberation Mono", "Lucida Console", monospace;--container-width:1320px;--container-gap:clamp(24px, 1.7032rem + 1.9355vw, 48px);--grid-gap:42px}:is(.gh-navigation,.gh-footer).has-accent-color,:root.has-light-text{--color-lighter-gray:hsla(0,0%,100%,.1);--color-darker-gray:#fff;--color-secondary-text:hsla(0,0%,100%,.64);--color-border:hsla(0,0%,100%,.15);--color-dark-border:hsla(0,0%,100%,.5)}*,:after,:before{box-sizing:border-box}*{margin:0}html{font-size:62.5%}body{line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}canvas,img,picture,svg,video{display:block;height:auto;max-width:100%}iframe{display:block}button,input,select,textarea{font:inherit}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}h1,h2,h3,h4,h5,h6{line-height:1.2}sub,sup{line-height:1}body{font-family:var(--gh-font-body,var(--font-sans));font-size:1.6rem;background-color:var(--background-color);color:var(--color-primary-text)}h1,h2,h3,h4,h5,h6{font-family:var(--gh-font-heading,var(--font-sans))}a{color:var(--color-darker-gray);text-decoration:none}a:hover{opacity:.8}.gh-button{display:inline-flex;gap:.4em;align-items:center;justify-content:center;padding:.8em 1.4em;font-size:1.5rem;font-weight:600;letter-spacing:-.004em;line-height:1;color:var(--color-white);cursor:pointer;background-color:var(--ghost-accent-color);border:0;border-radius:100px}.gh-button:hover{opacity:.95}.gh-icon-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;color:var(--color-darker-gray);cursor:pointer;background-color:transparent;border:0;outline:none}.gh-icon-button:hover :is(svg,span){opacity:.8}.gh-icon-button svg{width:20px;height:20px}.gh-form{display:flex;align-items:center;position:relative;max-width:560px;width:100%;height:56px;font-size:1.7rem;font-weight:450;letter-spacing:-.008em;border-radius:40px;background-color:var(--color-lighter-gray);transition:background-color .2s ease}.gh-form.success{pointer-events:none}.gh-form.error{box-shadow:0 0 0 1px red}.gh-form:hover{background-color:rgba(0,0,0,.065)}.gh-footer.has-accent-color .gh-form:hover,.has-light-text .gh-form:hover{background-color:hsla(0,0%,100%,.15)}.gh-form-input{position:absolute;inset:0;padding-inline:26px;width:100%;height:100%;font-size:inherit;letter-spacing:inherit;line-height:1.1;border:0;border-radius:40px;background-color:transparent;outline:none;transition:.3s ease-in-out}.gh-form-input::-moz-placeholder{color:rgba(0,0,0,.3)}.gh-form-input::placeholder,button.gh-form-input{color:rgba(0,0,0,.3)}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-form-input,body[class*=" gh-font-heading"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) .gh-form-input,body[class^=gh-font-heading]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) .gh-form-input{padding-inline:20px}.gh-form.gh-form.success .gh-form-input{opacity:.5}.gh-footer.has-accent-color .gh-form-input,.has-light-text .gh-form-input{color:#fff}.gh-footer.has-accent-color .gh-form-input::-moz-placeholder,.has-light-text .gh-form-input::-moz-placeholder{color:hsla(0,0%,100%,.55)}.gh-footer.has-accent-color .gh-form-input::placeholder,.has-light-text .gh-form-input::placeholder,.has-light-text button.gh-form-input{color:hsla(0,0%,100%,.55)}.gh-header.is-classic.has-image .gh-form-input{color:#15171a}.gh-header.is-classic.has-image .gh-form-input::-moz-placeholder{color:rgba(0,0,0,.5)}.gh-header.is-classic.has-image .gh-form-input::placeholder,.gh-header.is-classic.has-image .gh-form>svg,.gh-header.is-classic.has-image button.gh-form-input{color:rgba(0,0,0,.5)}button.gh-form-input{padding-inline-start:56px;text-align:left;color:var(--color-secondary-text);cursor:pointer}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) button.gh-form-input,body[class*=" gh-font-heading"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) button.gh-form-input,body[class^=gh-font-heading]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) button.gh-form-input{padding-inline-start:50px}.gh-form .gh-button{position:absolute;right:6px;min-width:132px;padding-inline:24px;height:44px;font-size:inherit}.gh-form>svg{position:relative;left:22px;width:20px;height:20px;color:var(--color-secondary-text)}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-form>svg{left:16px}.gh-form .gh-button svg{display:none;position:absolute;margin-top:1px}.gh-form .gh-button>span:last-child{display:none}.gh-form:is(.loading,.success) .gh-button>span:first-child{visibility:hidden}.gh-form.loading .gh-button svg:first-of-type{display:block}.gh-form.success .gh-button>span:first-child{display:none}.gh-form.success .gh-button>span:last-child{display:inline}.gh-form [data-members-error]{position:absolute;top:100%;margin-top:10px;width:100%;font-size:1.4rem;line-height:1.4}@media (max-width:576px){.gh-form{font-size:1.6rem}.gh-form .gh-button{min-width:104px;padding-inline:12px}}.gh-viewport{position:relative;display:flex;flex-direction:column;min-height:100vh}.gh-outer{padding:0 max(4vmin,20px)}.gh-outer .gh-outer{padding:0}.gh-inner{margin:0 auto;max-width:var(--container-width);width:100%}.gh-main{flex-grow:1}.gh-canvas,.kg-width-full.kg-content-wide{--main:min(var(--content-width, 720px), 100% - var(--container-gap) * 2);--wide:minmax(0, calc((var(--container-width, 1200px) - var(--content-width, 720px))/2));--full:minmax(var(--container-gap), 1fr);display:grid;grid-template-columns:[full-start] var(--full) [wide-start] var(--wide) [main-start] var(--main) [main-end] var(--wide) [wide-end] var(--full) [full-end]}.gh-canvas>*{grid-column:main}.kg-content-wide>div,.kg-width-wide{grid-column:wide}.kg-width-full{grid-column:full}.gh-navigation{height:100px;font-size:1.5rem;font-weight:550;background-color:var(--background-color);color:var(--color-darker-gray)}.gh-navigation :is(.gh-navigation-logo,a:not(.gh-button),.gh-icon-button){color:inherit}.gh-navigation-inner{display:grid;grid-auto-flow:row dense;-moz-column-gap:24px;column-gap:24px;align-items:center;height:100%}.gh-navigation-brand{line-height:1}.gh-navigation-logo{position:relative;font-family:var(--gh-font-heading,var(--font-sans));font-size:calc(2.4rem*var(--factor, 1));font-weight:725;letter-spacing:-.015em;white-space:nowrap}.gh-navigation-logo img{max-height:40px}.gh-navigation-menu{display:flex;gap:24px;align-items:center}.gh-navigation .nav{display:inline-flex;gap:28px;align-items:center;padding:0;margin:0;white-space:nowrap;list-style:none}.gh-navigation .gh-more-toggle{position:relative;margin:0 -6px;font-size:inherit;text-transform:inherit}.gh-navigation .gh-more-toggle svg{width:24px;height:24px}.gh-navigation-actions{display:flex;gap:24px;align-items:center;justify-content:flex-end;background-color:var(--background-color)}.gh-navigation.has-accent-color .gh-navigation-actions{background-color:var(--ghost-accent-color)}.gh-navigation-members{display:flex;gap:20px;align-items:center;white-space:nowrap}.gh-navigation-members .gh-button{font-size:inherit;font-weight:600}.gh-search{margin-right:-2px;margin-left:-2px}@media (max-width:767px){.gh-navigation-logo{white-space:normal}.gh-navigation-members{flex-direction:column-reverse;gap:16px;width:100%}.gh-navigation-actions .gh-search{display:none}}@media (min-width:768px){.gh-navigation-brand .gh-search{display:none}.gh-navigation:not(.is-dropdown-loaded) .gh-navigation-menu .nav>li{opacity:0}}.gh-navigation.has-accent-color{background-color:var(--ghost-accent-color)}.gh-navigation.has-accent-color .gh-button{background-color:#fff;color:#15171a}.gh-navigation.is-left-logo .gh-navigation-inner{grid-template-columns:auto 1fr auto}@media (min-width:768px){.gh-navigation.is-left-logo .gh-navigation-logo:not(:has(img)){top:-2px}}@media (min-width:992px){.gh-navigation.is-left-logo .gh-navigation-menu{margin-right:100px;margin-left:16px}}.gh-navigation.is-middle-logo .gh-navigation-inner{grid-template-columns:1fr auto 1fr}.gh-navigation.is-middle-logo .gh-navigation-brand{grid-column-start:2}.gh-navigation.is-middle-logo .gh-navigation-actions{gap:28px}@media (min-width:992px){.gh-navigation.is-middle-logo .gh-navigation-menu{margin-right:64px}}.gh-navigation.is-stacked{position:relative;height:auto}.gh-navigation.is-stacked .gh-navigation-inner{grid-template-columns:1fr auto 1fr}.gh-navigation.is-stacked .gh-navigation-brand{display:flex;align-items:center;grid-row-start:1;grid-column-start:2;min-height:80px}@media (max-width:767px){.gh-navigation.is-stacked .gh-navigation-brand{min-height:unset}}@media (min-width:992px){.gh-navigation.is-stacked .gh-navigation-inner{padding:0}.gh-navigation.is-stacked .gh-navigation-brand{display:flex;align-items:center;height:80px}.gh-navigation.is-stacked .gh-navigation-menu{grid-row-start:2;grid-column:1/4;justify-content:center;height:60px;margin:0 48px}.gh-navigation.is-stacked .gh-navigation-menu:after,.gh-navigation.is-stacked .gh-navigation-menu:before{position:absolute;top:80px;left:0;width:100%;height:1px;content:"";background-color:var(--color-border)}.gh-navigation.is-stacked .gh-navigation-menu:after{top:140px}.gh-navigation.is-stacked .gh-navigation-actions{grid-row-start:1;grid-column:1/4;justify-content:space-between}.gh-navigation.is-stacked .gh-navigation-actions .gh-search{display:flex;gap:10px;width:auto}}.gh-dropdown{position:absolute;top:100%;right:-16px;z-index:90;width:200px;padding:12px 0;margin-top:24px;text-align:left;visibility:hidden;background-color:#fff;border-radius:5px;box-shadow:0 0 0 1px rgba(0,0,0,.04),0 7px 20px -5px rgba(0,0,0,.15);opacity:0;transition:opacity .3s,transform .2s;transform:translate3d(0,6px,0)}.gh-dropdown.is-left{right:auto;left:-16px}.is-dropdown-mega .gh-dropdown{display:grid;grid-template-columns:1fr 1fr;grid-auto-flow:column;-moz-column-gap:40px;column-gap:40px;width:auto;padding:20px 32px}.is-dropdown-open .gh-dropdown{visibility:visible;opacity:1;transform:translateY(0)}.gh-dropdown li a{display:block;padding:7px 20px;line-height:1.5;white-space:normal;color:#15171a!important}.is-dropdown-mega .gh-dropdown li a{padding:8px 0}.gh-burger{display:flex;justify-content:center;align-items:center;position:relative;display:none;margin-right:-7px;margin-left:4px}.gh-burger svg{width:24px;height:24px}.gh-burger svg:last-child,.is-open .gh-burger svg:first-child{display:none}.is-open .gh-burger svg:last-child{display:block}@media (max-width:767px){.gh-burger{display:flex}#gh-navigation{height:64px}#gh-navigation .gh-navigation-inner{grid-template-rows:auto 1fr auto;grid-template-columns:1fr;gap:48px}#gh-navigation .gh-navigation-brand{display:grid;grid-template-columns:1fr auto auto;grid-column-start:1;align-items:center;height:64px}#gh-navigation .gh-navigation-logo{font-size:2.2rem}#gh-navigation .gh-navigation-actions,#gh-navigation .gh-navigation-menu{position:fixed;justify-content:center;visibility:hidden;opacity:0}#gh-navigation .gh-navigation-menu{transition:none;transform:translateY(0)}#gh-navigation .nav{gap:20px;align-items:center;line-height:1.4}#gh-navigation .nav a{font-size:1.75rem;font-weight:600;text-transform:none}#gh-navigation .nav li{opacity:0;transform:translateY(-4px)}#gh-navigation .gh-navigation-actions{text-align:center}#gh-navigation :is(.gh-button,a[data-portal=signin]){opacity:0;transform:translateY(8px)}#gh-navigation .gh-button{width:100%;font-size:1.75rem;text-transform:none}#gh-navigation a[data-portal=signin]{font-size:1.75rem}#gh-main{transition:opacity .4s}.is-open#gh-navigation{position:fixed;inset:0;z-index:3999999;height:100%;overflow-y:scroll;-webkit-overflow-scrolling:touch}.is-open#gh-navigation .gh-navigation-actions,.is-open#gh-navigation .gh-navigation-menu{position:static;visibility:visible;opacity:1}.is-open#gh-navigation .nav{display:flex;flex-direction:column}.is-open#gh-navigation .nav li{opacity:1;transition:transform .2s,opacity .2s;transform:translateY(0)}.is-open#gh-navigation .gh-navigation-actions{position:sticky;right:0;bottom:0;left:0;display:inline-flex;flex-direction:column;gap:12px;align-items:center;padding:var(--container-gap) 0}.is-open#gh-navigation :is(.gh-button,a[data-portal=signin]){opacity:1;transition:transform .4s,opacity .4s;transition-delay:.2s;transform:translateY(0)}.is-open#gh-navigation a[data-portal=signin]{transition-delay:.4s}.is-open#gh-main{opacity:0}}.gh-card{position:relative}.gh-card,.post-template .gh-article{--post-type-color:#c24e00}.gh-card-link{display:flex;flex-direction:column;gap:20px}.gh-card-link:hover{opacity:1}.gh-card-image{position:relative;flex-shrink:0;aspect-ratio:16/9}.gh-card-image img{position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.gh-card-wrapper{flex-grow:1}.gh-card-tag{display:none;margin-bottom:4px;font-size:1.2rem;font-weight:500;letter-spacing:.01em;text-transform:uppercase}.gh-card-title{font-size:calc(1.9rem*var(--factor, 1));font-weight:725;letter-spacing:-.014em;line-height:1.3}.gh-card-link:hover .gh-card-title{opacity:.8}.gh-card-excerpt{display:-webkit-box;overflow-y:hidden;margin-top:8px;font-size:1.45rem;line-height:1.4;-webkit-line-clamp:2;-webkit-box-orient:vertical}.gh-card-meta{align-items:center;padding-bottom:1px;font-size:1.25rem;font-weight:500;line-height:1.4;letter-spacing:-.004em;color:var(--color-secondary-text)}.gh-card-meta svg{position:relative;top:1px;display:inline-block;width:12px;height:12px;margin-right:2px}.gh-card-meta:not(:empty){margin-top:8px}.gh-card-author+.gh-card-date:before{content:"—";margin-right:4px}.gh-header{position:relative;margin-top:40px}.gh-header-inner{position:relative;overflow:hidden}.gh-header.is-magazine .gh-header-inner{display:grid;grid-template-columns:repeat(16,1fr);gap:var(--grid-gap)}.gh-header.is-magazine .gh-header-inner>div{display:flex;flex-direction:column;gap:var(--grid-gap);grid-row:1}.gh-header.is-magazine .gh-header-left{grid-column:1/span 4}.gh-header.is-magazine .gh-header-inner>.gh-card{position:relative;grid-column:5/span 8}.gh-header.is-magazine .gh-header-right{grid-column:13/-1}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-link{gap:28px}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-image{aspect-ratio:1.618033}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-tag{display:block;margin-bottom:12px}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-title{font-size:clamp(2.8rem,1.36vw + 2.25rem,4rem);font-weight:700;line-height:1.1;letter-spacing:-.022em}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-excerpt{margin-top:clamp(12px,.45vw + 10.18px,16px);font-size:1.8rem;letter-spacing:-.02em;max-width:90%}.gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-meta:not(:empty){margin-top:14px}.gh-header.is-magazine :is(.gh-header-left,.gh-header-right) .gh-card:last-child .gh-card-image{display:none}.gh-header.is-magazine .gh-header-inner>div .gh-card-excerpt{display:none}.gh-header.is-magazine .gh-header-inner>.gh-card:after,.gh-header.is-magazine .gh-header-inner>.gh-card:before{position:absolute;top:0;left:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}.gh-header.is-magazine .gh-header-inner>.gh-card:after{right:calc(var(--grid-gap)/-2);left:auto}.gh-header.is-magazine .gh-header-inner>div .gh-card+.gh-card:before{position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}@media (max-width:1199px){.gh-header.is-magazine .gh-header-inner{grid-template-columns:repeat(12,1fr)}.gh-header.is-magazine .gh-header-inner>.gh-card{grid-column:1/span 8}.gh-header.is-magazine .gh-header-left{grid-column:9/-1}.gh-header.is-magazine .gh-header-inner>div.gh-header-right{grid-column:1/-1;grid-row:2;flex-direction:row}.gh-header.is-magazine .gh-header-right .gh-card{flex:1}.gh-header.is-magazine .gh-header-right .gh-card:last-child .gh-card-image{display:block}.gh-header.is-magazine .gh-header-right{position:relative}.gh-header.is-magazine .gh-header-right:before{position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}.gh-header.is-magazine .gh-header-right .gh-card:before{display:none}.gh-header.is-magazine .gh-header-right .gh-card:after{position:absolute;top:0;right:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}}@media (max-width:991px){.gh-header.is-magazine .gh-header-left .gh-card:nth-child(2) .gh-card-image{display:none}}@media (max-width:767px){.gh-header.is-magazine .gh-header-inner{display:flex;flex-direction:column;gap:var(--grid-gap)}.gh-header.is-magazine .gh-header-inner>div.gh-header-right{flex-direction:column}.gh-header.is-magazine .gh-card-image{display:block!important}.gh-header.is-magazine .gh-card:before{display:block!important;position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}}.gh-header.is-highlight .gh-header-inner{display:grid;grid-template-columns:repeat(16,1fr);gap:var(--grid-gap)}.gh-header.is-highlight .gh-header-left{position:relative;grid-column:span 8}.gh-header.is-highlight .gh-header-left .gh-card{grid-column:span 8;grid-row:span 3}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-link{gap:28px}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-image{aspect-ratio:3/2}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-tag{display:block;margin-bottom:12px}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-title{font-size:clamp(2.8rem,1.36vw + 2.25rem,4rem);font-weight:700;line-height:1.1;letter-spacing:-.022em}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-excerpt{margin-top:clamp(12px,.45vw + 10.18px,16px);font-size:1.8rem}.gh-header.is-highlight .gh-header-left .gh-card .gh-card-meta:not(:empty){margin-top:12px}.gh-header.is-highlight .gh-header-middle{position:relative;display:flex;flex-direction:column;gap:var(--grid-gap);grid-column:9/span 4}.gh-header.is-highlight .gh-header-middle .gh-card .gh-card-excerpt,.gh-header.is-highlight .gh-header-middle .gh-card:last-child .gh-card-image{display:none}.gh-header.is-highlight .gh-header-right{grid-column:13/-1}.gh-header.is-highlight .gh-featured{margin-top:0;padding:0}.gh-header.is-highlight .gh-featured-feed{display:flex;flex-direction:column}.gh-header.is-highlight .gh-featured-feed .gh-card-title{font-size:clamp(1.4rem,.23vw + 1.31rem,1.6rem)}.gh-header.is-highlight .gh-header-left:after,.gh-header.is-highlight .gh-header-middle:after{position:absolute;top:0;right:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}.gh-header.is-highlight .gh-card:before{position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}.gh-header.is-highlight .gh-featured .gh-card:first-child:before{display:none}@media (max-width:1199px){.gh-header.is-highlight .gh-header-inner{grid-template-columns:repeat(9,1fr)}.gh-header.is-highlight .gh-header-left{grid-column:span 6}.gh-header.is-highlight .gh-header-middle{grid-column:7/-1}.gh-header.is-highlight .gh-header-right{grid-column:1/-1}.gh-header.is-highlight .gh-featured-feed{display:grid;grid-template-columns:repeat(3,1fr)}.gh-header.is-highlight .gh-featured-feed .gh-card:before{width:calc(100% + var(--grid-gap))}.gh-header.is-highlight .gh-featured-feed .gh-card:after{position:absolute;top:0;left:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}}@media (max-width:991px){.gh-header.is-highlight .gh-header-middle .gh-card:nth-child(2) .gh-card-image{display:none}}@media (max-width:767px){.gh-header.is-highlight .gh-header-inner{display:flex;flex-direction:column}.gh-header.is-highlight .gh-featured-feed{display:flex}.gh-header.is-highlight .gh-card-image{display:block!important}.gh-header.is-highlight .gh-header-middle .gh-card .gh-card-excerpt{display:-webkit-box}}.gh-header.is-classic{display:flex;margin-top:0;padding-block:160px}.gh-header.is-classic .gh-header-inner{display:flex;flex-direction:column;align-items:center;gap:48px;overflow:unset;margin:auto;max-width:1020px;text-align:center}.gh-header.is-classic .gh-header-title{font-size:calc(clamp(3rem, 1.82vw + 2.27rem, 4.6rem)*var(--factor, 1));line-height:1.1;letter-spacing:-.028em}.gh-header.is-classic.has-image{margin-top:0}.gh-header.is-classic.has-image:before{position:absolute;inset:0;content:"";opacity:.3;background-color:var(--color-black);transition:opacity 1.5s ease}.gh-header.is-classic.has-image .gh-header-inner{color:#fff}.gh-header.is-classic.has-image .gh-header-image{position:absolute;inset:0;z-index:-1;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.gh-header.is-classic.has-image .gh-form{background-color:#fff}.gh-cta{display:none;margin-top:max(4vw,40px)}.gh-header:is(.is-highlight,.is-magazine)+.gh-cta{display:block}.gh-cta-inner{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;gap:36px;padding:clamp(48px,3.64vw + 33.45px,80px) clamp(40px,2.73vw + 29.09px,64px);text-align:center;background-color:var(--color-lighter-gray)}.gh-cta-content{max-width:640px}.gh-cta-title{font-size:clamp(2.8rem,1.36vw + 2.25rem,4rem);font-weight:700;line-height:1.1;letter-spacing:-.021em}.gh-cta-description{margin-top:12px;font-size:1.8rem;line-height:1.4;letter-spacing:-.015em}.gh-featured{margin-top:100px}.gh-navigation+.gh-featured{margin-top:64px}.gh-header.is-classic:not(.has-image)+.gh-featured{margin-top:0}.gh-featured-inner{overflow:hidden}.gh-featured-title{margin-bottom:20px;padding-bottom:12px;font-size:1.2rem;font-weight:550;letter-spacing:.025em;text-transform:uppercase;border-bottom:1px solid var(--color-border)}.gh-featured-feed{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--grid-gap)}.gh-featured-feed .gh-card{container-type:inline-size;container-name:featured-card}.gh-featured-feed .gh-card-link{display:flex;flex-direction:row-reverse;align-items:flex-start}.gh-featured-feed .gh-card-image{width:72px;aspect-ratio:1}@container featured-card (width < 240px){.gh-featured-feed .gh-card-image{display:none}}@container featured-card (240px <= width <= 270px){.gh-featured-feed .gh-card-image{width:64px}}.gh-featured-feed .gh-card-wrapper{container-type:inline-size;container-name:featured-card-wrapper}.gh-featured-feed .gh-card-title{font-size:1.6rem;font-weight:650;letter-spacing:-.011em}@container featured-card-wrapper (width < 170px){.gh-featured-feed .gh-card-title{font-size:1.6rem}}.gh-featured-feed .gh-card-excerpt{display:none}.gh-featured-feed .gh-card-meta:not(:empty){margin-top:8px}.gh-featured-feed .gh-card:before{position:absolute;top:0;left:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}@media (max-width:1199px){.gh-viewport>.gh-featured .gh-featured-feed{grid-template-columns:repeat(3,1fr)}.gh-viewport>.gh-featured .gh-featured-feed .gh-card:nth-child(4){display:none}}@media (max-width:767px){.gh-viewport>.gh-featured .gh-featured-feed{display:flex;flex-direction:column}}.gh-container{flex-grow:1;margin-top:64px}.gh-container-inner{display:grid;grid-template-columns:repeat(16,1fr);-moz-column-gap:var(--grid-gap);column-gap:var(--grid-gap)}:is(.gh-featured,.gh-cta)+.gh-container{margin-top:max(4vw,40px)}.gh-header.is-classic:not(.has-image)+.gh-container{margin-top:0}.gh-navigation+.gh-container .gh-container-title,:is(.paged,.tag-template,.author-template) .gh-container:not(.has-sidebar) .gh-container-title{display:none}.gh-more{display:none;grid-column:1/-1;margin-top:48px;font-size:calc(1.9rem*var(--factor, 1));font-weight:725;letter-spacing:-.014em}.gh-container.has-sidebar .gh-more{grid-column:span 12}.home-template .gh-feed:has(>:nth-child(12):last-child)~.gh-more{display:block}.gh-more a{display:flex;align-items:center;gap:4px}.gh-more svg{margin-top:-1px;width:18px;height:18px}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-more svg{margin-top:0}.gh-container.has-sidebar .gh-main{grid-column:1/span 12;position:relative}.gh-container.has-sidebar .gh-sidebar{grid-column:13/-1}.gh-container.has-sidebar .gh-main:after{position:absolute;top:0;right:calc(var(--grid-gap)/-2);content:"";width:1px;height:100%;background-color:var(--color-border)}.gh-container:not(.has-sidebar) :is(.gh-container-title,.gh-main,.gh-more){grid-column:3/span 12}.gh-container.is-list.no-image:not(.has-sidebar) :is(.gh-container-title,.gh-main,.gh-more){grid-column:4/span 10}.gh-header:is(.is-highlight,.is-magazine)~.gh-container.is-grid:not(.has-sidebar) :is(.gh-container-title,.gh-main,.gh-more){grid-column:1/-1}@media (max-width:1199px){.gh-container-inner{display:block;overflow:hidden}.gh-container.has-sidebar .gh-sidebar{display:none}}.gh-container-title{grid-column:1/-1;margin-bottom:calc(var(--grid-gap)/2);padding-bottom:12px;font-size:1.2rem;font-weight:550;letter-spacing:.025em;text-transform:uppercase;border-bottom:1px solid var(--color-border)}.gh-container:not(:has(.gh-card)) .gh-container-title{display:none}.gh-container .gh-feed{gap:var(--grid-gap)}.gh-container .gh-card-meta:not(:empty){margin-top:12px}.gh-container.is-list .gh-feed{display:flex;flex-direction:column;container-type:inline-size;container-name:list-feed}.gh-container.is-list .gh-card-link{flex-direction:row;align-items:center;gap:24px}.gh-container.is-list .no-image .gh-card-link{padding-block:20px}.gh-container.is-list .gh-card-image{flex-shrink:0;width:220px;aspect-ratio:1.618033}@container list-feed (width < 600px){.gh-container.is-list .gh-card-image{width:160px}}.gh-container.is-list .gh-card:not(.no-image) .gh-card-wrapper{max-width:600px}.gh-container.is-list .gh-card-title{--factor:1.05}.gh-container.is-list .no-image .gh-card-title{--factor:1.2}.gh-container.is-list .gh-card-excerpt{margin-top:6px}.gh-container.is-list .gh-card+.gh-card:before{position:absolute;top:calc(var(--grid-gap)/-2);left:0;content:"";width:100%;height:1px;background-color:var(--color-border)}.home-template .gh-container.is-list .gh-card:first-child:before{display:none}@media (max-width:767px){.gh-container.is-list .gh-card-link{flex-direction:column;align-items:flex-start}.gh-container.is-list .gh-card-image{width:100%}}.gh-container.is-grid .gh-feed{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));row-gap:calc(var(--grid-gap)*1.5);overflow:hidden}.gh-container.is-grid .gh-card:before{top:calc(var(--grid-gap)/-2);right:calc(var(--grid-gap)/-2);height:1px}.gh-container.is-grid .gh-card:after,.gh-container.is-grid .gh-card:before{position:absolute;left:calc(var(--grid-gap)/-2);content:"";background-color:var(--color-border)}.gh-container.is-grid .gh-card:after{top:0;width:1px;height:100%}@media (max-width:767px){.gh-container.is-grid .gh-feed{grid-template-columns:repeat(2,1fr)}}@media (max-width:576px){.gh-container.is-grid .gh-feed{display:flex;flex-direction:column}}.gh-container.is-list.no-image .gh-card-image,.gh-container.is-list.no-image .gh-card-image-link{display:none}.gh-sidebar-inner{position:sticky;top:calc(var(--grid-gap)/2)}.gh-sidebar-title{grid-column:1/-1;margin-bottom:calc(var(--grid-gap)/2);padding-bottom:12px;font-size:1.2rem;font-weight:550;letter-spacing:.025em;text-transform:uppercase;border-bottom:1px solid var(--color-border)}.gh-about{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:48px 24px;min-height:380px;text-align:center;background-color:var(--color-lighter-gray)}.gh-about-icon{margin-bottom:24px;width:60px;height:60px;border-radius:50%}.gh-about-title{font-size:calc(2.4rem*var(--factor, 1));font-weight:700;letter-spacing:-.019em}.gh-about-description{margin-top:12px;font-size:1.45rem;line-height:1.4}.gh-about .gh-button{margin-top:32px}.gh-recommendations{margin-top:48px}.gh-recommendations .recommendations{display:flex;flex-direction:column;gap:26px;margin:0;padding:0;list-style-type:none}.gh-recommendations .recommendation:first-child{margin-top:4px}.gh-recommendations .recommendation a{display:grid;grid-template-columns:24px auto;gap:4px 12px}.gh-recommendations .recommendation a:hover{opacity:1}.gh-recommendations .recommendation-favicon{grid-row:span 2;width:100%;border-radius:4px}.gh-recommendations .recommendation-title{margin-top:-2px;font-size:1.5rem;font-weight:650;letter-spacing:-.009em}.gh-recommendations .recommendation a:hover .recommendation-title{opacity:.8}.gh-recommendations .recommendation-url{order:1;overflow:hidden;font-size:1.4rem;line-height:1.25;color:var(--color-secondary-text);text-overflow:ellipsis}.gh-recommendations .recommendation-description{display:-webkit-box;display:none;overflow-y:hidden;grid-column:2;font-size:1.4rem;line-height:1.4;color:var(--color-secondary-text);-webkit-line-clamp:2;-webkit-box-orient:vertical}.gh-recommendations button{display:inline-flex;align-items:center;gap:2px;margin-top:24px;padding:0;cursor:pointer;font-size:1.2rem;font-weight:550;letter-spacing:.025em;text-transform:uppercase;background-color:transparent;border:0;color:var(--color-darker-gray)}.gh-recommendations button svg{margin-top:-1px;width:12px}.gh-recommendations button:hover{opacity:.8}.gh-article{--container-width:1120px;word-break:break-word}.gh-article-header{margin:clamp(40px,3.64vw + 25.45px,72px) 0 40px}.gh-article-tag{margin-bottom:12px;font-size:1.3rem;font-weight:500;letter-spacing:.01em;text-transform:uppercase;color:var(--ghost-accent-color)}.gh-article-title{font-size:calc(clamp(3.4rem, 1.36vw + 2.85rem, 4.6rem)*var(--factor, 1));line-height:1.1;letter-spacing:-.022em}.gh-article-excerpt{margin-top:clamp(12px,.45vw + 10.18px,16px);max-width:720px;font-size:clamp(1.7rem,.23vw + 1.61rem,1.9rem);line-height:1.45;letter-spacing:-.018em}.gh-article-meta{display:flex;align-items:center;gap:8px;margin-left:6px}.gh-article-author-image{display:flex;margin-right:8px}.gh-article-author-image a{position:relative;margin:0 -8px;width:56px;height:56px;overflow:hidden;background-color:var(--color-light-gray);border-radius:50%;border:3px solid var(--background-color)}.gh-article-author-image a:first-child{z-index:10}.gh-article-author-image a:nth-child(2){z-index:9}.gh-article-author-image a:nth-child(3){z-index:8}.gh-article-author-image :is(img,svg){position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.gh-article-meta-wrapper{display:flex;flex-direction:column;gap:4px}.gh-article-author-name{font-size:1.6rem;font-weight:650;letter-spacing:-.013em}.gh-article-meta-content{font-size:1.35rem;font-weight:500;line-height:1.2;letter-spacing:-.006em;color:var(--color-secondary-text)}.gh-article-image{grid-column:wide;margin-top:40px}.gh-article-image img{width:100%}.page-template .gh-article-header{margin-block:72px 32px}.page-template .gh-content:only-child>:first-child:not(.kg-width-full){margin-top:64px}.page-template .gh-content>:last-child:not(.kg-width-full){margin-bottom:6vw}.page-template .gh-footer{margin-top:0}.gh-content{font-size:var(--content-font-size,1.7rem);letter-spacing:-.01em}.gh-content>*+*{margin-top:calc(28px*var(--content-spacing-factor, 1));margin-bottom:0}.gh-content>.kg-width-full+.kg-width-full:not(.kg-width-full.kg-card-hascaption+.kg-width-full){margin-top:0}.gh-content>[id]:not(:first-child){margin-top:calc(56px*var(--content-spacing-factor, 1))}.post-template .gh-content.drop-cap>p:first-of-type:first-letter{font-size:3.1em;float:left;line-height:1;margin:0 .2em 0 -1px;font-weight:700}.has-serif-body.post-template:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content.drop-cap>p:first-of-type:first-letter{font-size:3.2em}.gh-content>[id]+p{margin-top:calc(12px*var(--content-spacing-factor, 1))}.gh-content>:is(hr,blockquote,iframe){position:relative;margin-top:calc(48px*var(--content-spacing-factor, 1))!important}.gh-content>:is(hr,blockquote,iframe)+*{margin-top:calc(48px*var(--content-spacing-factor, 1))!important}.gh-content h1{font-size:calc(2.2em*var(--factor, 1));letter-spacing:-.02em}.gh-content h2{font-size:calc(1.6em*var(--factor, 1));letter-spacing:-.02em}.gh-content h3{font-size:calc(1.3em*var(--factor, 1));letter-spacing:-.017em}.gh-content a{color:var(--ghost-accent-color);text-decoration:underline}.post-template .gh-content a{color:var(--post-type-color,var(--ghost-accent-color))}.gh-content .kg-callout-card .kg-callout-text,.gh-content .kg-toggle-card .kg-toggle-content>:is(ul,ol,p){font-size:.95em}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-callout-text,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-content>ol,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-content>p,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content .kg-toggle-content>ul,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>blockquote,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>dl,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>ol,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>p,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-content>ul{font-family:var(--font-serif-alt)}.gh-content :is(ul,ol){padding-left:28px}.gh-content :is(li+li,li :is(ul,ol)){margin-top:8px}.gh-content ol ol li{list-style-type:lower-alpha}.gh-content ol ol ol li{list-style-type:lower-roman}.gh-content hr{width:100%;height:1px;background-color:var(--color-border);border:0}.gh-content .gh-table{overflow-x:scroll;-webkit-overflow-scrolling:touch}.gh-content .gh-table table{width:100%;font-family:var(--font-sans);font-size:1.5rem;white-space:nowrap;vertical-align:top;border-spacing:0;border-collapse:collapse}.gh-content .gh-table table th{font-size:1.2rem;font-weight:700;color:var(--color-darkgrey);text-align:left;text-transform:uppercase;letter-spacing:.2px}.gh-content .gh-table table :is(th,td),.gh-content .gh-table table td{padding:6px 12px;border-bottom:1px solid var(--color-border)}.gh-content .gh-table table :is(th,td):first-child{padding-left:0}.gh-content .gh-table table :is(th,td):last-child{padding-right:0}.gh-content pre{overflow:auto;padding:16px;font-size:1.5rem;line-height:1.5em;border-radius:6px}.gh-content :not(pre)>code,.gh-content pre{background:var(--color-lighter-gray);font-family:var(--font-mono)}.gh-content :not(pre)>code{vertical-align:baseline;padding:.15em .4em;font-weight:400;font-size:.95em;line-height:1em;border-radius:.25em}.gh-content :not(.kg-card):not(table):not([id])+:is(.kg-card,table){margin-top:calc(48px*var(--content-spacing-factor, 1))}.gh-content :is(.kg-card,table)+:not(.kg-card):not(table):not([id]){margin-top:calc(48px*var(--content-spacing-factor, 1))}.gh-content .kg-card.kg-width-full+:not(.kg-card):not([id]),.gh-content :not(.kg-card):not([id])+.kg-card.kg-width-full{margin-top:calc(68px*var(--content-spacing-factor, 1))}.kg-image{margin-right:auto;margin-left:auto}.kg-embed-card{display:flex;flex-direction:column;align-items:center;width:100%}.kg-gallery-image,.kg-image[width][height]{cursor:pointer}.kg-gallery-image a:hover,.kg-image-card a:hover{opacity:1!important}.kg-card.kg-toggle-card .kg-toggle-heading-text{font-size:2rem;font-weight:700}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-toggle-card .kg-toggle-heading-text{font-family:var(--font-serif)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-toggle-card .kg-toggle-heading-text{font-family:var(--font-mono)}.kg-callout-card.kg-card{border-radius:.25em}.kg-callout-card-accent a{text-decoration:underline}blockquote:not([class]){padding-left:2rem;border-left:4px solid var(--post-type-color,currentColor)}blockquote.kg-blockquote-alt{font-style:normal;font-weight:400;color:var(--color-secondary-text)}.kg-card.kg-button-card .kg-btn{height:unset;padding:.6em 1.2em;text-align:center;font-size:1em;line-height:1.2em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-card.kg-header-card h2.kg-header-card-header{font-family:var(--font-serif)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-card.kg-header-card h2.kg-header-card-header{font-family:var(--font-mono)}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .kg-header-card h3.kg-header-card-subheader{font-family:var(--font-serif)}.kg-bookmark-card .kg-bookmark-container{border-radius:.25em!important}.kg-bookmark-card .kg-bookmark-container:hover{opacity:1}.kg-bookmark-card a.kg-bookmark-container,.kg-bookmark-card a.kg-bookmark-container:hover{background:var(--background-color)!important;color:var(--color-darker-gray)!important}.kg-bookmark-card .kg-bookmark-content{padding:1.15em}.kg-bookmark-card .kg-bookmark-title{font-size:1.5em}.kg-bookmark-card .kg-bookmark-description{max-height:none;margin-top:.3em;font-size:.8em}.kg-bookmark-card .kg-bookmark-metadata{font-size:.8em}.kg-bookmark-card .kg-bookmark-thumbnail img{border-radius:0 .2em .2em 0}.kg-product-card.kg-card .kg-product-card-image{margin-bottom:12px}.kg-product-card.kg-card a.kg-product-card-button{height:2.8em;margin-top:12px}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-product-card.kg-card .kg-product-card-title{font-family:var(--font-serif)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .kg-product-card.kg-card .kg-product-card-title{font-family:var(--font-mono)}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .kg-product-card-description :is(p,ul,ol){font-family:var(--font-serif-alt)}.kg-file-card.kg-card .kg-file-card-container{padding:.6em}.kg-file-card.kg-card .kg-file-card-contents{margin:4px 8px 6px}.kg-file-card.kg-card .kg-file-card-metadata{font-size:.9em}.kg-file-card.kg-card .kg-file-card-filesize:before{margin-right:6px;margin-left:6px}figcaption{margin-top:12px;font-size:1.4rem;text-align:center}.kg-card.kg-width-full figcaption{padding:0 16px}figcaption a{color:var(--ghost-accent-color);text-decoration:underline}.gh-comments{margin-top:48px}.post-template .gh-container{margin-top:120px}.post-template .gh-container-inner{display:block}.post-template .gh-container.is-grid .gh-feed{grid-template-columns:repeat(4,1fr)}.post-template .gh-container .gh-container-title{display:block}.gh-archive{display:grid;grid-template-columns:repeat(16,1fr);gap:var(--grid-gap);margin-block:80px 24px}.gh-archive.has-image{margin-top:48px}.gh-archive-inner{display:grid;grid-template-columns:1fr 1fr;gap:var(--grid-gap);grid-column:1/-1;padding-bottom:clamp(40px,2.73vw + 29.09px,64px);border-bottom:1px solid var(--color-border)}.gh-archive.has-image .gh-archive-inner{align-items:center;grid-column:1/-1}.gh-archive:not(.has-sidebar):not(.has-image) .gh-archive-inner{grid-column:3/span 12}.gh-archive .gh-article-image{grid-column:auto;margin-top:0}:is(.tag-template,.author-template) .gh-container{margin-top:0}.author-template .gh-archive-inner{display:flex;flex-direction:row-reverse;justify-content:flex-end;gap:24px}.author-template .gh-article-image{margin-top:0;width:120px;height:120px;border-radius:50%;-o-object-fit:cover;object-fit:cover}.author-template .gh-article-title{font-size:3.6rem}.gh-author-meta{display:flex;gap:10px;margin-top:14px;font-size:1.5rem;font-weight:550;color:var(--color-secondary-text)}.gh-author-meta a{color:inherit}.gh-author-social{display:flex;gap:16px;align-items:center;padding-left:3px}.gh-author-social svg{width:20px;height:20px}@media (max-width:1199px){.gh-archive{display:block}}@media (max-width:767px){.gh-archive-inner{display:flex;align-items:flex-start}.author-template .gh-archive-inner,.gh-archive-inner{flex-direction:column-reverse}}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]){--factor:1.15}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]){--factor:1.1}.has-sans-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.is-title,.gh-content :is(h2,h3)){font-family:var(--gh-font-heading,var(--font-sans))}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.is-title,.gh-content :is(h2,h3)){font-family:var(--gh-font-heading,var(--font-serif));font-weight:550}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.is-title,.gh-content :is(h2,h3)){font-family:var(--gh-font-heading,var(--font-mono))}.has-sans-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .is-body{font-family:var(--gh-font-body,var(--font-sans))}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .is-body{font-family:var(--gh-font-body,var(--font-serif-alt))}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-classic .gh-header-title{font-weight:550;letter-spacing:-.015em}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-classic .gh-header-title{letter-spacing:-.01em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-form{border-radius:0}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-card-title{line-height:1.15;letter-spacing:-.006em;font-size:calc(2rem*var(--factor, 1))}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-featured-feed .gh-card-title{font-size:calc(1.6rem*var(--factor, 1))}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-featured-feed .gh-card-title{font-size:calc(1.5rem*var(--factor, 1));letter-spacing:0}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-highlight .gh-featured-feed .gh-card-title{font-size:clamp(1.6rem,.23vw + 1.51rem,1.8rem)}.has-mono-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-card-title{font-size:calc(1.8rem*var(--factor, 1));line-height:1.2}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-about-title{letter-spacing:-.009em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-article-title,.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-footer-signup-header{letter-spacing:-.019em}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]){--content-font-size:1.9rem}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-card-excerpt{font-size:1.65rem;line-height:1.4;letter-spacing:.0005em}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-header.is-highlight .gh-card:first-child .gh-card-excerpt,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-excerpt{font-size:1.8rem;letter-spacing:-.001em}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-highlight .gh-header-left .gh-card-title,.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-header.is-magazine .gh-header-inner>.gh-card .gh-card-title{font-weight:550;font-size:clamp(3.2rem,1.82vw + 2.47rem,4.9rem)}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-about-description{font-size:1.6rem}.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-article-excerpt,.has-serif-body:not([class*=" gh-font-body"]):not([class^=gh-font-body]) .gh-footer-signup-subhead{letter-spacing:0}:is(.has-serif-title,.has-mono-title):not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) :is(.gh-button,.gh-form,.gh-form-input),body[class*=" gh-font-heading"]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) :is(.gh-button,.gh-form,.gh-form-input),body[class^=gh-font-heading]:not(.gh-font-heading-fira-sans):not(.gh-font-heading-inter):not(.gh-font-heading-manrope):not(.gh-font-heading-noto-sans):not(.gh-font-heading-nunito):not(.gh-font-heading-poppins):not(.gh-font-heading-roboto):not(.gh-font-heading-space-grotesk) :is(.gh-button,.gh-form,.gh-form-input){border-radius:0}.has-serif-title:not([class*=" gh-font-heading"]):not([class^=gh-font-heading]) .gh-cta-title{font-size:4.8rem}.gh-footer{margin-top:120px;font-size:1.5rem;color:var(--color-darker-gray)}.gh-footer a:not(.gh-button){color:inherit}.gh-footer.has-accent-color{background-color:var(--ghost-accent-color)}.gh-footer.has-accent-color .gh-footer-bar{border-top:0}.gh-footer.has-accent-color .gh-button{background-color:#fff;color:#15171a}.gh-footer-bar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;-moz-column-gap:32px;column-gap:32px;margin-bottom:120px;padding-block:28px;font-weight:550;border-block:1px solid var(--color-border)}.gh-footer-logo{position:relative;font-family:var(--gh-font-heading,var(--font-sans));font-size:calc(2.4rem*var(--factor, 1));font-weight:725;letter-spacing:-.015em;white-space:nowrap}.gh-footer-logo img{max-height:40px}.gh-footer-menu .nav{display:flex;justify-content:center;gap:8px 28px;flex-wrap:wrap;margin:0;padding:0;list-style-type:none}.gh-footer-copyright{text-align:right;white-space:nowrap}.gh-footer-copyright a{text-decoration:underline}.gh-footer-signup{display:flex;flex-direction:column;align-items:center;margin-bottom:120px;text-align:center}.gh-footer-signup-header{font-size:calc(clamp(2.8rem,1.36vw + 2.25rem,4rem)*var(--factor, 1));font-weight:700;letter-spacing:-.03em}.gh-footer-signup-subhead{margin-top:12px;max-width:640px;font-size:1.8rem;font-weight:450;line-height:1.4;letter-spacing:-.014em;opacity:.75}.gh-footer-signup .gh-form{margin-top:40px}@media (max-width:991px){.gh-footer-bar{display:flex;flex-direction:column;gap:20px}}.gh-social-links{display:flex;justify-content:center;gap:20px;margin-bottom:32px}.gh-social-links a{will-change:opacity}.gh-social-links svg{width:20px;height:20px}.pswp{position:absolute;top:0;left:0;z-index:3999999;display:none;width:100%;height:100%;overflow:hidden;touch-action:none;outline:none;backface-visibility:hidden;-webkit-text-size-adjust:100%}.pswp img{max-width:none}.pswp--animate_opacity{opacity:.001;transition:opacity 333ms cubic-bezier(.4,0,.22,1);will-change:opacity}.pswp--open{display:block}.pswp--zoom-allowed .pswp__img{cursor:zoom-in}.pswp--zoomed-in .pswp__img{cursor:grab}.pswp--dragging .pswp__img{cursor:grabbing}.pswp__bg{background-color:rgba(0,0,0,.85);opacity:0;transition:opacity 333ms cubic-bezier(.4,0,.22,1);transform:translateZ(0);backface-visibility:hidden;will-change:opacity}.pswp__bg,.pswp__scroll-wrap{position:absolute;top:0;left:0;width:100%;height:100%}.pswp__scroll-wrap{overflow:hidden}.pswp__container,.pswp__zoom-wrap{position:absolute;top:0;right:0;bottom:0;left:0;touch-action:none;backface-visibility:hidden}.pswp__container,.pswp__img{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.pswp__zoom-wrap{position:absolute;width:100%;transition:transform 333ms cubic-bezier(.4,0,.22,1);transform-origin:left top}.pswp--animated-in .pswp__bg,.pswp--animated-in .pswp__zoom-wrap{transition:none}.pswp__item{right:0;bottom:0;overflow:hidden}.pswp__img,.pswp__item{position:absolute;top:0;left:0}.pswp__img{width:auto;height:auto}.pswp__img--placeholder{backface-visibility:hidden}.pswp__img--placeholder--blank{background:var(--color-black)}.pswp--ie .pswp__img{top:0;left:0;width:100%!important;height:auto!important}.pswp__error-msg{position:absolute;top:50%;left:0;width:100%;margin-top:-8px;font-size:14px;line-height:16px;color:var(--color-secondary-text);text-align:center}.pswp__error-msg a{color:var(--color-secondary-text);text-decoration:underline}.pswp__button{position:relative;display:block;float:right;width:44px;height:44px;padding:0;margin:0;overflow:visible;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;background:none;border:0;box-shadow:none;transition:opacity .2s}.pswp__button:focus,.pswp__button:hover{opacity:1}.pswp__button:active{outline:none;opacity:.9}.pswp__button::-moz-focus-inner{padding:0;border:0}.pswp__ui--over-close .pswp__button--close{opacity:1}.pswp__button,.pswp__button--arrow--left:before,.pswp__button--arrow--right:before{width:44px;height:44px;background:url(../images/default-skin.png) 0 0 no-repeat;background-size:264px 88px}@media (min-resolution:1.1dppx),(min-resolution:105dpi){.pswp--svg .pswp__button,.pswp--svg .pswp__button--arrow--left:before,.pswp--svg .pswp__button--arrow--right:before{background-image:url(../images/default-skin.svg)}.pswp--svg .pswp__button--arrow--left,.pswp--svg .pswp__button--arrow--right{background:none}}.pswp__button--close{background-position:0 -44px}.pswp__button--share{background-position:-44px -44px}.pswp__button--fs{display:none}.pswp--supports-fs .pswp__button--fs{display:block}.pswp--fs .pswp__button--fs{background-position:-44px 0}.pswp__button--zoom{display:none;background-position:-88px 0}.pswp--zoom-allowed .pswp__button--zoom{display:block}.pswp--zoomed-in .pswp__button--zoom{background-position:-132px 0}.pswp--touch .pswp__button--arrow--left,.pswp--touch .pswp__button--arrow--right{visibility:hidden}.pswp__button--arrow--left,.pswp__button--arrow--right{position:absolute;top:50%;width:70px;height:100px;margin-top:-50px;background:none}.pswp__button--arrow--left{left:0}.pswp__button--arrow--right{right:0}.pswp__button--arrow--left:before,.pswp__button--arrow--right:before{position:absolute;top:35px;width:32px;height:30px;content:""}.pswp__button--arrow--left:before{left:6px;background-position:-138px -44px}.pswp__button--arrow--right:before{right:6px;background-position:-94px -44px}.pswp__counter{position:absolute;top:0;left:0;height:44px;padding:0 15px;font-size:11px;font-weight:700;line-height:44px;color:var(--color-white);-webkit-user-select:none;-moz-user-select:none;user-select:none}.pswp__caption{position:absolute;bottom:0;left:0;width:100%;min-height:44px}.pswp__caption__center{max-width:420px;padding:25px 15px 30px;margin:0 auto;font-size:11px;line-height:1.6;color:var(--color-white);text-align:center}.pswp__caption__center .post-caption-title{margin-bottom:7px;font-size:15px;font-weight:500;text-transform:uppercase}.pswp__caption__center .post-caption-meta-item+.post-caption-meta-item:before{padding:0 4px;content:"\02022"}.pswp__caption--empty{display:none}.pswp__caption--fake{visibility:hidden}.pswp__preloader{position:absolute;top:0;left:50%;width:44px;height:44px;margin-left:-22px;opacity:0;transition:opacity .25s ease-out;direction:ltr;will-change:opacity}.pswp__preloader__icn{width:20px;height:20px;margin:12px}.pswp__preloader--active{opacity:1}.pswp__preloader--active .pswp__preloader__icn{background:url(../images/preloader.gif) 0 0 no-repeat}.pswp--css_animation .pswp__preloader--active{opacity:1}.pswp--css_animation .pswp__preloader--active .pswp__preloader__icn{animation:clockwise .5s linear infinite}.pswp--css_animation .pswp__preloader--active .pswp__preloader__donut{animation:donut-rotate 1s cubic-bezier(.4,0,.22,1) infinite}.pswp--css_animation .pswp__preloader__icn{position:absolute;top:15px;left:15px;width:14px;height:14px;margin:0;background:none;opacity:.75}.pswp--css_animation .pswp__preloader__cut{position:relative;width:7px;height:14px;overflow:hidden}.pswp--css_animation .pswp__preloader__donut{position:absolute;top:0;left:0;box-sizing:border-box;width:14px;height:14px;margin:0;background:none;border:2px solid var(--color-white);border-bottom-color:transparent;border-left-color:transparent;border-radius:50%}@media screen and (max-width:1024px){.pswp__preloader{position:relative;top:auto;left:auto;float:right;margin:0}}@keyframes clockwise{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes donut-rotate{0%{transform:rotate(0)}50%{transform:rotate(-140deg)}to{transform:rotate(0)}}.pswp__ui{z-index:1550;visibility:visible;opacity:1;-webkit-font-smoothing:auto}.pswp__top-bar{position:absolute;top:0;left:0;width:100%;height:44px}.pswp--has_mouse .pswp__button--arrow--left,.pswp--has_mouse .pswp__button--arrow--right,.pswp__caption,.pswp__top-bar{backface-visibility:hidden;transition:opacity 333ms cubic-bezier(.4,0,.22,1);will-change:opacity}.pswp--has_mouse .pswp__button--arrow--left,.pswp--has_mouse .pswp__button--arrow--right{visibility:visible}.pswp__ui--idle .pswp__button--arrow--left,.pswp__ui--idle .pswp__button--arrow--right,.pswp__ui--idle .pswp__top-bar{opacity:0}.pswp__ui--hidden .pswp__button--arrow--left,.pswp__ui--hidden .pswp__button--arrow--right,.pswp__ui--hidden .pswp__caption,.pswp__ui--hidden .pswp__top-bar{opacity:.001}.pswp__ui--one-slide .pswp__button--arrow--left,.pswp__ui--one-slide .pswp__button--arrow--right,.pswp__ui--one-slide .pswp__counter{display:none}.pswp__element--disabled{display:none!important}.pswp--minimal--dark .pswp__top-bar{background:none}.gh-meta-share{display:flex;align-items:center;justify-content:space-between;margin-top:20px}.has-light-text .gh-button-share{border-color:hsla(0,0%,100%,.25);color:hsla(0,0%,100%,.85)}.has-light-text .gh-button-share:hover{border-color:hsla(0,0%,100%,.85)}.gh-button-share{display:inline-flex;align-items:center;border:1px solid rgba(0,0,0,.15);border-radius:999px;color:rgba(0,0,0,.85);background:transparent;cursor:pointer;transition:all .4s ease}.gh-button-share:hover{border-color:rgba(0,0,0,.5)}.gh-card-excerpt.is-short-excerpt{font-size:clamp(1.6rem,3vw,2.35rem);line-height:1.35}.gh-link-content>*+*,.gh-media-content>*+*{margin-top:1.5em}.gh-link-content blockquote>*+*,.gh-media-content blockquote>*+*{margin-top:1em}.gh-card-type{margin:0 0 .8rem;font-size:1.15rem;font-weight:700;line-height:1;letter-spacing:.08em;text-transform:uppercase;opacity:1}.gh-card-permalink,.gh-card-type{color:var(--post-type-color,currentColor)}.gh-card-permalink{font-size:1.05rem;text-decoration:none;opacity:.75}.gh-card-permalink:hover{opacity:1;text-decoration:underline}.gh-card-title a{color:inherit;text-decoration:none}.gh-card-title a:hover{text-decoration:underline}.gh-media-content .kg-embed-card iframe[src*="vimeo.com"],.gh-media-content .kg-embed-card iframe[src*="youtube-nocookie.com"],.gh-media-content .kg-embed-card iframe[src*="youtube.com"]{width:100%!important;height:auto!important;aspect-ratio:16/9}.gh-media-content .kg-embed-card:has(iframe[src*="youtube.com"],iframe[src*="youtube-nocookie.com"],iframe[src*="vimeo.com"]){width:100%}


/*
 * JeffPerry.me stream layer
 * Kottke-inspired in philosophy: compact, chronological, mixed-format,
 * and content-first. This intentionally sits on top of Ghost Source's
 * built CSS so post pages, Portal, navigation, search, and other Ghost
 * features continue to use Source's established styling.
 */

/* ---------- Global rhythm ---------- */

.home-template .gh-viewport {
    background: var(--background-color);
}

.home-template .gh-navigation {
    border-bottom: 1px solid rgba(0, 0, 0, 0.12);
}

.home-template .gh-navigation-inner {
    min-height: 62px;
}

.home-template .gh-navigation-logo img {
    max-height: 34px;
}

/* ---------- Compact homepage introduction ---------- */

.jp-home-intro {
    padding-top: clamp(2.4rem, 5vw, 5.2rem);
    padding-bottom: clamp(2rem, 4vw, 3.8rem);
}

.jp-home-intro-inner {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 2.4rem;
    max-width: 1040px;
}

.jp-home-title {
    margin: 0;
    font-size: clamp(3.2rem, 5.5vw, 6.4rem);
    font-weight: 700;
    letter-spacing: -0.045em;
    line-height: 0.95;
}

.jp-home-description {
    max-width: 680px;
    margin: 1.2rem 0 0;
    font-size: clamp(1.6rem, 2vw, 2rem);
    line-height: 1.45;
    opacity: 0.72;
}

.jp-home-tools {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 0.8rem 1.6rem;
    padding-bottom: 0.2rem;
    font-size: 1.35rem;
    font-weight: 650;
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

.jp-home-tools a {
    text-decoration: none;
}

.jp-home-tools a:hover {
    text-decoration: underline;
    text-underline-offset: 0.2em;
}

/* ---------- Stream ---------- */

.jp-stream-container {
    margin-top: 0;
}

.jp-stream-container .gh-container-inner {
    display: block;
    max-width: 1040px;
}

.jp-stream-main {
    width: 100%;
    max-width: none;
}

.jp-stream {
    display: block !important;
    border-top: 2px solid currentColor;
}

.jp-entry {
    --jp-meta-width: 145px;
    display: grid !important;
    grid-template-columns: var(--jp-meta-width) minmax(0, 1fr);
    gap: clamp(1.8rem, 3vw, 3.6rem);
    margin: 0 !important;
    padding: clamp(2.4rem, 4vw, 4rem) 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.16);
}

.jp-entry + .jp-entry {
    margin-top: 0 !important;
}

.jp-entry-meta {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.45rem;
    padding-top: 0.35rem;
    font-size: 1.15rem;
    line-height: 1.35;
    letter-spacing: 0.025em;
    text-transform: uppercase;
}

.jp-entry-time {
    color: inherit;
    font-variant-numeric: tabular-nums;
    opacity: 0.58;
    text-decoration: none;
}

.jp-entry-time:hover {
    opacity: 1;
}

.jp-entry-kind {
    margin-top: 0.45rem;
    padding-left: 0.8rem;
    border-left: 3px solid var(--post-type-color, currentColor);
    font-weight: 750;
}

.jp-entry-topic {
    opacity: 0.55;
}

.jp-entry-body {
    min-width: 0;
    max-width: 760px;
}

.jp-entry-title {
    margin: 0;
    font-size: clamp(2.5rem, 3.4vw, 4rem);
    font-weight: 700;
    letter-spacing: -0.035em;
    line-height: 1.06;
}

.jp-entry-title a {
    color: inherit;
    text-decoration: none;
}

.jp-entry-title a:hover {
    text-decoration: underline;
    text-decoration-thickness: 0.06em;
    text-underline-offset: 0.1em;
}

.jp-entry-excerpt,
.jp-entry-note {
    margin: 1.2rem 0 0;
    font-size: clamp(1.7rem, 2vw, 2rem);
    line-height: 1.55;
}

.jp-entry.is-short .jp-entry-note {
    margin-top: 0;
    font-size: clamp(1.9rem, 2.5vw, 2.35rem);
    line-height: 1.48;
}

/* Micro posts render their real Ghost content in the feed, so preserve
   paragraph and list structure instead of flattening everything to an excerpt. */
.jp-entry.is-short .jp-entry-note > :first-child {
    margin-top: 0;
}

.jp-entry.is-short .jp-entry-note > :last-child {
    margin-bottom: 0;
}

.jp-entry.is-short .jp-entry-note ol,
.jp-entry.is-short .jp-entry-note ul {
    margin: 0 0 1em;
    padding-left: 1.55em;
}

.jp-entry.is-short .jp-entry-note ol {
    list-style: decimal;
}

.jp-entry.is-short .jp-entry-note ul {
    list-style: disc;
}

.jp-entry.is-short .jp-entry-note li + li {
    margin-top: 0.35em;
}

.jp-entry.is-short .jp-entry-note li > ol,
.jp-entry.is-short .jp-entry-note li > ul {
    margin-top: 0.35em;
    margin-bottom: 0;
}

.jp-entry-read-more {
    display: inline-block;
    margin-top: 1.4rem;
    font-size: 1.35rem;
    font-weight: 650;
    text-decoration: none;
}

.jp-entry-read-more:hover {
    text-decoration: underline;
    text-underline-offset: 0.2em;
}

/* ---------- Images ---------- */

.jp-entry-image-link {
    display: block;
    margin-bottom: 1.8rem;
}

.jp-entry-image {
    margin: 0;
}

.jp-entry-image img {
    display: block;
    width: 100%;
    height: auto;
    max-height: 560px;
    object-fit: cover;
    border-radius: 0;
}

.jp-entry.is-image .jp-entry-image img {
    max-height: none;
}

/* ---------- Rich Ghost content in link/media/photo entries ---------- */

.jp-entry-content {
    font-size: 1.75rem;
    line-height: 1.55;
}

.jp-entry-title + .jp-entry-content {
    margin-top: 1.4rem;
}

.jp-entry-content > :first-child {
    margin-top: 0;
}

.jp-entry-content > :last-child {
    margin-bottom: 0;
}

.jp-entry-content p {
    margin: 0 0 1.1em;
}

.jp-entry-content a {
    text-decoration-thickness: 0.06em;
    text-underline-offset: 0.14em;
}

.jp-entry-content figure,
.jp-entry-content .kg-card {
    margin-top: 1.6rem;
    margin-bottom: 1.6rem;
}

/* Bookmark cards should feel like a compact outward-link unit. */
.jp-entry-link-content .kg-bookmark-card {
    margin: 0;
}

.jp-entry-link-content .kg-bookmark-container {
    min-height: 0;
    border: 1px solid rgba(0, 0, 0, 0.16);
    border-radius: 0;
    box-shadow: none;
}

.jp-entry-link-content .kg-bookmark-content {
    padding: 1.6rem 1.8rem;
}

.jp-entry-link-content .kg-bookmark-title {
    font-size: clamp(1.9rem, 2.5vw, 2.6rem);
    line-height: 1.15;
}

.jp-entry-link-content .kg-bookmark-description {
    margin-top: 0.6rem;
    font-size: 1.45rem;
    line-height: 1.45;
}

.jp-entry-link-content .kg-bookmark-thumbnail {
    min-width: 180px;
    max-width: 240px;
}

/* Embedded media is allowed to be the visual focus. */
.jp-entry-media-content iframe,
.jp-entry-media-content video,
.jp-entry-media-content audio {
    max-width: 100%;
}

/* ---------- Density by post type ---------- */

.jp-entry.is-short,
.jp-entry.is-link {
    padding-top: clamp(1.9rem, 3vw, 2.8rem);
    padding-bottom: clamp(1.9rem, 3vw, 2.8rem);
}

.jp-entry.is-link .jp-entry-body,
.jp-entry.is-short .jp-entry-body {
    max-width: 720px;
}

/* ---------- Pagination ---------- */

.jp-more-posts {
    margin: 3.2rem 0 0;
    padding: 2rem 0 0;
    border-top: 2px solid currentColor;
    text-align: left;
}

.jp-more-posts a {
    font-size: 1.5rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

/* ---------- Dark backgrounds ---------- */

.has-light-text .home-template .gh-navigation,
.has-light-text .jp-entry,
.has-light-text .jp-entry-link-content .kg-bookmark-container {
    border-color: rgba(255, 255, 255, 0.2);
}

/* ---------- Tablet / phone ---------- */

@media (max-width: 767px) {
    .home-template .gh-navigation-inner {
        min-height: 56px;
    }

    .jp-home-intro {
        padding-top: 2.4rem;
        padding-bottom: 2.2rem;
    }

    .jp-home-intro-inner {
        display: block;
    }

    .jp-home-title {
        font-size: clamp(3.6rem, 12vw, 5rem);
    }

    .jp-home-description {
        margin-top: 0.9rem;
    }

    .jp-home-tools {
        justify-content: flex-start;
        margin-top: 1.6rem;
        padding: 0;
        font-size: 1.2rem;
    }

    .jp-entry {
        display: block !important;
        padding: 2.4rem 0;
    }

    .jp-entry-meta {
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        gap: 0.55rem 0.9rem;
        margin-bottom: 1.15rem;
    }

    .jp-entry-kind {
        margin-top: 0;
    }

    .jp-entry-title {
        font-size: clamp(2.5rem, 8vw, 3.4rem);
    }

    .jp-entry-link-content .kg-bookmark-container {
        flex-direction: column;
    }

    .jp-entry-link-content .kg-bookmark-thumbnail {
        width: 100%;
        min-width: 100%;
        max-width: none;
        aspect-ratio: 16 / 9;
        order: -1;
    }
}


/* ==========================================================
   JeffPerry.me visual direction v2 — warm personal-web shell
   ========================================================== */

@font-face {
    font-family: "EB Garamond";
    font-style: normal;
    font-weight: 400 800;
    font-display: swap;
    src: url("../fonts/eb-garamond-roman.woff2") format("woff2");
}

:root {
    --jp-paper: #fbf8f1;
    --jp-paper-deep: #f6f0e5;
    --jp-ink: #181818;
    --jp-muted: #6f716f;
    --jp-line: rgba(24, 24, 24, 0.10);
    --jp-radius: 18px;
}

body,
.gh-viewport,
.home-template .gh-viewport,
.gh-navigation,
.gh-navigation-actions {
    background: var(--jp-paper) !important;
    color: var(--jp-ink);
}

/* Header */
.home-template .gh-navigation {
    height: auto;
    border-bottom: 0;
}

.home-template .gh-navigation-inner {
    min-height: 86px;
    max-width: 1180px;
    column-gap: 28px;
}

.jp-navigation-identity {
    display: flex;
    align-items: center;
    min-width: 0;
    gap: 20px;
}

.home-template .gh-navigation-logo {
    top: 0 !important;
    font-family: var(--font-sans);
    font-size: 2.25rem;
    font-weight: 800;
    letter-spacing: -0.035em;
    text-transform: uppercase;
}

.jp-navigation-description {
    display: block;
    max-width: 310px;
    font-family: var(--font-sans);
    font-size: 1.25rem;
    font-weight: 450;
    line-height: 1.45;
    color: var(--jp-ink);
}

.home-template .gh-navigation .nav {
    gap: 30px;
    font-size: 1.45rem;
    font-weight: 600;
}

.home-template .gh-navigation-menu {
    justify-content: flex-end;
    margin: 0 !important;
}

.home-template .gh-navigation-actions {
    gap: 14px;
}

/* The personal site does not need member sign-in competing with Subscribe. */
.home-template .gh-navigation-members > a[data-portal="signin"] {
    display: none;
}

.home-template .gh-navigation-members .gh-button {
    padding: 1.05rem 1.45rem;
    color: #fff;
    background: #1e2328;
    border-radius: 9px;
    font-size: 1.35rem;
    font-weight: 650;
}

/* Search can return later; for this first-pass header it stays visually quiet. */
.home-template .gh-navigation-actions > .gh-search {
    display: none;
}

/* Homepage */
.home-template .jp-stream-container {
    padding-top: 18px;
}

.home-template .jp-stream-container .gh-container-inner {
    max-width: 1040px;
}

.home-template .jp-stream {
    border-top: 0;
}

.home-template .jp-entry {
    grid-template-columns: 1fr;
    gap: 0;
    padding: 28px 0;
    border-bottom: 1px solid var(--jp-line);
}

.home-template .jp-entry-meta {
    flex-direction: row;
    align-items: center;
    gap: 10px;
    margin-bottom: 12px;
    padding-top: 0;
    font-family: var(--font-sans);
    font-size: 1.15rem;
}

.home-template .jp-entry-time {
    order: 3;
    margin-left: auto;
    color: var(--jp-muted);
    text-transform: none;
}

.home-template .jp-entry-kind {
    order: 1;
    margin: 0;
    color: var(--post-type-color, #3c7349);
}

.home-template .jp-entry-topic {
    order: 2;
    display: none;
}

.home-template .jp-entry-body {
    max-width: none;
}

.home-template .jp-entry-title {
    font-family: "EB Garamond", Georgia, serif;
    font-size: clamp(2.6rem, 3.5vw, 3.8rem);
    font-weight: 650;
    line-height: 1.08;
    letter-spacing: -0.025em;
}

.home-template .jp-entry-excerpt,
.home-template .jp-entry-note,
.home-template .jp-entry-content {
    font-family: var(--font-sans);
    color: #303233;
}

.home-template .jp-entry-excerpt {
    max-width: 720px;
    margin-top: 10px;
    font-size: 1.7rem;
    line-height: 1.55;
}

.home-template .jp-entry.is-short .jp-entry-note {
    max-width: 790px;
    font-family: "EB Garamond", Georgia, serif;
    font-size: clamp(2.0rem, 2.8vw, 2.55rem);
    line-height: 1.4;
}

.home-template .jp-entry-image img,
.home-template .jp-entry-link-content .kg-bookmark-container {
    border-radius: 14px;
}

/* Featured post becomes the single prominent card at the top. */
.home-template .jp-entry.is-featured {
    margin-bottom: 12px !important;
    padding: clamp(28px, 4vw, 42px);
    border: 1px solid rgba(24, 24, 24, 0.10);
    border-radius: var(--jp-radius);
    background: rgba(255, 255, 255, 0.28);
    box-shadow: 0 10px 30px rgba(65, 49, 26, 0.05);
}

.home-template .jp-entry.is-featured .jp-entry-title {
    font-size: clamp(3.4rem, 5vw, 5.5rem);
}

.home-template .jp-entry.is-featured .jp-entry-image img {
    border-radius: 14px;
}

.home-template .jp-entry-read-more {
    color: var(--jp-muted);
}

/* Phone */
@media (max-width: 900px) {
    .jp-navigation-description {
        display: none;
    }

    .home-template .gh-navigation-inner {
        min-height: 68px;
    }
}

@media (max-width: 767px) {
    .home-template .gh-navigation-logo {
        font-size: 2rem;
    }

    .home-template .jp-stream-container {
        padding-top: 8px;
    }

    .home-template .jp-entry {
        padding: 24px 0;
    }

    .home-template .jp-entry-meta {
        margin-bottom: 10px;
    }

    .home-template .jp-entry-time {
        margin-left: 0;
    }

    .home-template .jp-entry.is-featured {
        padding: 22px;
        border-radius: 14px;
    }
}

/* ==========================================================
   JeffPerry.me post-type presentation v3
   ========================================================== */

.home-template .jp-entry {
    --post-type-color: #3f744a;
}

.home-template .jp-entry.is-link {
    --post-type-color: #2469b2;
}

.home-template .jp-entry.is-media {
    --post-type-color: #6946ad;
}

.home-template .jp-entry:not(.is-short):not(.is-link):not(.is-media):not(.is-image) {
    --post-type-color: #C85A2A;
}

.home-template .jp-entry-meta {
    justify-content: flex-start;
    margin-bottom: 14px;
}

.home-template .jp-entry-kind {
    gap: 8px;
    font-size: 1.2rem;
    font-weight: 750;
    letter-spacing: .02em;
    text-transform: uppercase;
}

.home-template .jp-entry-kind-icon {
    width: 1.45rem;
    height: 1.45rem;
    flex-basis: 1.45rem;
}

.home-template .jp-entry-kind-icon svg {
    stroke-width: 2;
}

.jp-featured-badge {
    display: inline-flex;
    align-items: center;
    padding: .45rem .8rem;
    border: 1px solid rgba(120, 93, 33, .12);
    border-radius: 999px;
    color: #755b20;
    background: #f3ead2;
    font-family: var(--font-sans);
    font-size: 1.05rem;
    font-weight: 700;
    letter-spacing: .01em;
    text-transform: none;
}

.home-template .jp-entry-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 28px;
    align-items: center;
}

.home-template .jp-entry.has-feature-image.is-featured .jp-entry-layout,
.home-template .jp-entry.has-feature-image.is-media .jp-entry-layout {
    grid-template-columns: minmax(0, 1.08fr) minmax(280px, .92fr);
}

.home-template .jp-entry-copy {
    min-width: 0;
}

.home-template .jp-entry-title {
    max-width: 760px;
    margin: 0;
}

.home-template .jp-entry.is-featured .jp-entry-title {
    max-width: 620px;
}

.home-template .jp-entry.is-link .jp-entry-title {
    font-size: clamp(2.35rem, 3vw, 3.25rem);
}

.home-template .jp-entry.is-media .jp-entry-title {
    font-size: clamp(2.45rem, 3.2vw, 3.45rem);
}

.home-template .jp-entry-title a:hover {
    text-decoration-thickness: .045em;
    text-underline-offset: .12em;
}

.home-template .jp-entry-excerpt {
    margin-top: 12px;
    max-width: 680px;
    color: #343536;
}

.home-template .jp-entry-time {
    display: inline-block;
    margin-top: 18px;
    color: #666a6d;
    font-family: var(--font-sans);
    font-size: 1.35rem;
    line-height: 1.4;
    text-decoration: none;
    text-transform: none;
}

.home-template .jp-entry-time:hover {
    color: var(--jp-ink);
    text-decoration: underline;
    text-underline-offset: .18em;
}

.home-template .jp-entry-reading-time {
    white-space: nowrap;
}

/* Notes: read like thoughts dropped directly into the stream. */
.home-template .jp-entry.is-short {
    padding-top: 28px;
    padding-bottom: 28px;
}

.home-template .jp-entry.is-short .jp-entry-note {
    max-width: 830px;
    margin: 0;
    color: #202122;
    font-family: "EB Garamond", Georgia, serif;
    font-size: clamp(2.15rem, 2.9vw, 2.75rem);
    line-height: 1.42;
}

.home-template .jp-entry.is-short .jp-entry-time {
    margin-top: 14px;
}

/* Link posts: headline points out; date remains the local permalink. */
.home-template .jp-entry.is-link {
    padding-top: 30px;
    padding-bottom: 30px;
}

.home-template .jp-entry-link-source {
    display: none;
    margin-top: 7px;
    color: var(--post-type-color);
    font-family: var(--font-sans);
    font-size: 1.35rem;
    font-weight: 600;
    text-decoration: none;
}

.home-template .jp-entry.has-external-target .jp-entry-link-source {
    display: inline-block;
}

.home-template .jp-entry-link-source:hover {
    text-decoration: underline;
    text-underline-offset: .15em;
}

.home-template .jp-entry-link-content {
    max-width: 760px;
    margin-top: 10px;
    color: #343536;
    font-size: 1.55rem;
    line-height: 1.55;
}

.home-template .jp-entry-link-content .kg-bookmark-card {
    margin-top: 16px;
}

.home-template .jp-entry-link-content .kg-bookmark-container {
    overflow: hidden;
    border-color: var(--jp-line);
    border-radius: 14px;
    background: rgba(255,255,255,.22);
}

.home-template .jp-entry-link-content .kg-bookmark-title {
    font-family: "EB Garamond", Georgia, serif;
    font-size: 2rem;
}

/* Media: title/commentary left, art or feature image right. */
.home-template .jp-entry.is-media {
    padding-top: 30px;
    padding-bottom: 30px;
}

.home-template .jp-entry-media-content {
    max-width: 650px;
    margin-top: 10px;
    color: #343536;
    font-size: 1.55rem;
    line-height: 1.5;
}

.home-template .jp-entry-media-content .kg-card,
.home-template .jp-entry-media-content figure {
    margin-top: 14px;
}

/* Images across feature/media/photo cards. */
.home-template .jp-entry-image-link {
    display: block;
    margin: 0;
}

.home-template .jp-entry-image {
    margin: 0;
}

.home-template .jp-entry-image img {
    width: 100%;
    max-height: 360px;
    aspect-ratio: 16 / 10;
    object-fit: cover;
    border-radius: 14px;
}

.home-template .jp-entry.is-featured .jp-entry-image img {
    max-height: 390px;
}

.home-template .jp-entry.is-image .jp-entry-image img {
    max-height: none;
    aspect-ratio: auto;
}

/* Featured entry gets the strongest hierarchy without breaking the stream. */
.home-template .jp-entry.is-featured {
    padding: clamp(30px, 4vw, 42px);
}

.home-template .jp-entry.is-featured .jp-entry-meta {
    gap: 10px;
}

.home-template .jp-entry.is-featured .jp-entry-title {
    font-size: clamp(3.8rem, 5.2vw, 5.8rem);
    line-height: 1.02;
}

.home-template .jp-entry.is-featured .jp-entry-excerpt {
    font-size: 1.75rem;
    line-height: 1.55;
}

/* On a normal essay with an image, keep the image quieter than the featured card. */
.home-template .jp-entry.has-feature-image:not(.is-featured):not(.is-media):not(.is-image) .jp-entry-layout {
    grid-template-columns: minmax(0, 1fr) minmax(220px, 320px);
}

@media (max-width: 767px) {
    .home-template .jp-entry.has-feature-image.is-featured .jp-entry-layout,
    .home-template .jp-entry.has-feature-image.is-media .jp-entry-layout,
    .home-template .jp-entry.has-feature-image:not(.is-featured):not(.is-media):not(.is-image) .jp-entry-layout {
        grid-template-columns: 1fr;
        gap: 18px;
    }

    .home-template .jp-entry-image-link {
        order: -1;
    }

    .home-template .jp-entry.is-featured .jp-entry-image-link {
        order: 0;
    }

    .home-template .jp-entry.is-featured .jp-entry-title {
        font-size: clamp(3.2rem, 11vw, 4.4rem);
    }

    .home-template .jp-entry.is-short .jp-entry-note {
        font-size: clamp(2.05rem, 7vw, 2.55rem);
    }

    .home-template .jp-entry-time {
        margin-top: 14px;
        font-size: 1.25rem;
    }
}

/* ==========================================================
   JeffPerry.me visual refinement v4
   Wide, warm, calm personal stream matching the approved mockup.
   ========================================================== */

:root {
    --jp-paper: #fbf8f1;
    --jp-paper-deep: #f3ecdf;
    --jp-ink: #1d2022;
    --jp-muted: #70736f;
    --jp-line: rgba(29, 32, 34, 0.10);
    --jp-orange: #C85A2A;
    --jp-green: #46895b;
    --jp-blue: #3576b8;
    --jp-purple: #7652b6;
    --jp-radius: 16px;
}

body,
.gh-viewport,
.gh-navigation,
.gh-navigation-actions,
.jp-footer {
    background: var(--jp-paper) !important;
    color: var(--jp-ink);
}

/* ----- Header ----- */

.gh-navigation,
.home-template .gh-navigation {
    height: auto;
    border: 0;
    background: var(--jp-paper) !important;
}

.gh-navigation-inner,
.home-template .gh-navigation-inner {
    grid-template-columns: auto minmax(0, 1fr) auto !important;
    min-height: 82px;
    max-width: 1120px;
    column-gap: 36px;
}

.gh-navigation-brand {
    min-width: 0;
}

.jp-navigation-identity {
    display: flex;
    align-items: center;
    gap: 22px;
    min-width: 0;
}

.gh-navigation-logo,
.home-template .gh-navigation-logo {
    position: static !important;
    font-family: var(--font-sans);
    font-size: 2rem;
    font-weight: 800;
    letter-spacing: -0.04em;
    line-height: 1;
    text-transform: uppercase;
}

.jp-navigation-description {
    display: block;
    max-width: 270px;
    color: #404347;
    font-size: 1.2rem;
    font-weight: 450;
    line-height: 1.35;
}

.gh-navigation-menu,
.home-template .gh-navigation-menu {
    justify-content: flex-end;
    margin: 0 !important;
}

.gh-navigation .nav,
.home-template .gh-navigation .nav {
    gap: 26px;
    font-size: 1.38rem;
    font-weight: 600;
}

.gh-navigation .nav a {
    color: #3e4143;
}

.gh-navigation-actions,
.home-template .gh-navigation-actions {
    gap: 12px;
}

.gh-navigation-actions > .gh-search {
    display: none;
}

.gh-navigation-members .gh-button,
.home-template .gh-navigation-members .gh-button {
    padding: 1rem 1.35rem;
    color: #fff;
    background: #24292d;
    border-radius: 8px;
    font-size: 1.3rem;
    font-weight: 650;
}

/* ----- Stream width + rhythm ----- */

.home-template .jp-stream-container {
    margin-top: 0;
    padding-top: 28px;
}

.home-template .jp-stream-container .gh-container-inner {
    display: grid;
    max-width: 1120px;
    overflow: visible;
}

.home-template .jp-stream-container:not(.has-sidebar) .jp-stream-main,
.home-template .jp-stream-main {
    grid-column: 1 / -1 !important;
    width: 100%;
    max-width: none;
}

.home-template .jp-stream {
    width: 100%;
    border-top: 0;
}

.home-template .jp-entry {
    --post-type-color: var(--jp-orange) !important;
    padding: 34px 0;
    border-bottom: 1px solid var(--jp-line);
}

.home-template .jp-entry.is-short {
    --post-type-color: var(--jp-green) !important;
}

.home-template .jp-entry.is-link {
    --post-type-color: var(--jp-blue) !important;
}

.home-template .jp-entry.is-media {
    --post-type-color: var(--jp-purple) !important;
}

.home-template .jp-entry-meta {
    margin-bottom: 13px;
}

.home-template .jp-entry-kind {
    color: var(--post-type-color);
    font-size: 1.12rem;
    font-weight: 750;
    letter-spacing: .035em;
}

.home-template .jp-entry-kind-icon {
    width: 1.35rem;
    height: 1.35rem;
    flex-basis: 1.35rem;
}

.home-template .jp-entry-layout {
    gap: 32px;
}

.home-template .jp-entry-title {
    max-width: 820px;
    font-family: "EB Garamond", Georgia, serif;
    font-size: clamp(2.65rem, 3vw, 3.55rem);
    font-weight: 650;
    line-height: 1.08;
    letter-spacing: -0.025em;
}

.home-template .jp-entry-excerpt {
    max-width: 760px;
    margin-top: 10px;
    font-size: 1.62rem;
    line-height: 1.55;
}

.home-template .jp-entry-time {
    margin-top: 14px;
    color: var(--jp-muted);
    font-size: 1.25rem;
}

/* Notes should feel like a thought, not a billboard. */
.home-template .jp-entry.is-short {
    padding-top: 28px;
    padding-bottom: 28px;
}

.home-template .jp-entry.is-short .jp-entry-note {
    max-width: 820px;
    color: #292b2c;
    font-family: "EB Garamond", Georgia, serif;
    font-size: clamp(1.8rem, 1.7vw, 2.05rem);
    line-height: 1.5;
}

/* Links: Daring Fireball behavior without a giant duplicate preview card. */
.home-template .jp-entry.is-link .jp-entry-title {
    max-width: 820px;
    font-size: clamp(2.45rem, 2.8vw, 3.25rem);
}

.home-template .jp-entry-link-source {
    margin-top: 5px;
    font-size: 1.25rem;
}

.home-template .jp-entry-link-content {
    max-width: 800px;
    margin-top: 10px;
    font-size: 1.5rem;
    line-height: 1.55;
}

.home-template .jp-entry-link-content .kg-bookmark-card {
    display: none !important;
}

/* Media stays visual, but contained. */
.home-template .jp-entry.is-media .jp-entry-title {
    font-size: clamp(2.55rem, 2.9vw, 3.35rem);
}

.home-template .jp-entry-media-content {
    font-size: 1.5rem;
}

.home-template .jp-entry-image img {
    border-radius: 14px;
    box-shadow: 0 2px 0 rgba(29, 32, 34, 0.02);
}

/* Featured: only the selected featured post gets the warm card treatment. */
.home-template .jp-entry.is-featured {
    margin-bottom: 18px !important;
    padding: clamp(30px, 4vw, 44px);
    border: 1px solid rgba(29, 32, 34, 0.09);
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.32);
    box-shadow: 0 12px 34px rgba(82, 61, 29, 0.055);
}

.home-template .jp-entry.is-featured .jp-entry-title {
    max-width: 660px;
    font-size: clamp(3.7rem, 4.8vw, 5.4rem);
}

/* ----- Footer inspired by Maggie Appleton's friendly RSS/social treatment ----- */

.jp-footer {
    margin-top: 72px;
    padding-bottom: 34px;
}

.jp-footer .gh-footer-inner {
    max-width: 1120px;
}

.jp-footer-subscribe {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(340px, .85fr);
    gap: 42px;
    align-items: center;
    padding: 38px 0;
    border-top: 1px solid var(--jp-line);
    border-bottom: 1px solid var(--jp-line);
}

.jp-footer-subscribe-title {
    font-family: "EB Garamond", Georgia, serif;
    font-size: clamp(2.8rem, 3vw, 3.8rem);
    font-weight: 650;
    letter-spacing: -0.025em;
}

.jp-footer-subscribe-text {
    max-width: 520px;
    margin-top: 6px;
    color: var(--jp-muted);
    font-size: 1.45rem;
    line-height: 1.5;
}

.jp-footer-subscribe-actions {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
}

.jp-footer-subscribe-actions .gh-form {
    width: 100%;
    max-width: none;
    height: 50px;
    border: 1px solid rgba(29, 32, 34, 0.10);
    background: rgba(255, 255, 255, .46);
}

.jp-footer-subscribe-actions .gh-form .gh-button {
    height: 40px;
    color: #fff;
    background: #24292d;
}

.jp-rss-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    align-self: flex-start;
    gap: 8px;
    min-height: 40px;
    padding: 9px 14px;
    border: 1px solid rgba(29, 32, 34, .12);
    border-radius: 999px;
    color: #474a4c;
    background: rgba(255, 255, 255, .28);
    font-size: 1.3rem;
    font-weight: 650;
}

.jp-rss-pill svg {
    width: 16px;
    height: 16px;
}

.jp-footer-grid {
    display: grid;
    grid-template-columns: 1.2fr .8fr .8fr;
    gap: 56px;
    padding: 38px 0 30px;
}

.jp-footer-title {
    font-size: 1.75rem;
    font-weight: 800;
    letter-spacing: -.03em;
    text-transform: uppercase;
}

.jp-footer-description {
    max-width: 360px;
    margin-top: 8px;
    color: var(--jp-muted);
    font-size: 1.3rem;
    line-height: 1.5;
}

.jp-footer-menu .nav {
    display: flex;
    flex-direction: column;
    gap: 7px;
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: 1.35rem;
}

.jp-footer-follow-label {
    display: block;
    margin-bottom: 10px;
    color: var(--jp-muted);
    font-size: 1.15rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.jp-footer-socials {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.jp-footer-socials a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border: 1px solid rgba(29, 32, 34, .11);
    border-radius: 10px;
    background: rgba(255,255,255,.28);
    transition: transform .15s ease, background-color .15s ease;
}

.jp-footer-socials a:hover {
    transform: translateY(-1px);
    background: rgba(255,255,255,.65);
    opacity: 1;
}

.jp-footer-socials svg {
    width: 17px;
    height: 17px;
}

.jp-footer-bottom {
    display: flex;
    justify-content: space-between;
    gap: 24px;
    padding-top: 18px;
    border-top: 1px solid var(--jp-line);
    color: #898b88;
    font-size: 1.15rem;
}

@media (max-width: 900px) {
    .jp-navigation-description {
        display: none;
    }

    .gh-navigation-inner,
    .home-template .gh-navigation-inner {
        min-height: 70px;
        column-gap: 20px;
    }

    .jp-footer-subscribe {
        grid-template-columns: 1fr;
        gap: 22px;
    }
}

@media (max-width: 767px) {
    .gh-navigation-inner,
    .home-template .gh-navigation-inner {
        min-height: 64px;
    }

    .gh-navigation-logo,
    .home-template .gh-navigation-logo {
        font-size: 1.85rem;
    }

    .home-template .jp-stream-container {
        padding-top: 10px;
    }

    .home-template .jp-entry {
        padding: 26px 0;
    }

    .home-template .jp-entry.is-short .jp-entry-note {
        font-size: 1.85rem;
    }

    .home-template .jp-entry.is-featured {
        padding: 22px;
    }

    .jp-footer {
        margin-top: 48px;
    }

    .jp-footer-grid {
        grid-template-columns: 1fr;
        gap: 28px;
    }

    .jp-footer-bottom {
        flex-direction: column;
        gap: 4px;
    }
}

/* ==========================================================
   JeffPerry.me visual refinement v5
   Scale and proportion pass based on the live-site screenshot.
   ========================================================== */

/* Give the design enough presence on large desktop displays. */
.home-template .gh-navigation-inner,
.jp-footer .gh-footer-inner {
    width: min(1280px, calc(100% - 64px));
    max-width: 1280px;
}

.home-template .jp-stream-container .gh-container-inner {
    width: min(1180px, calc(100% - 64px));
    max-width: 1180px;
}

.home-template .gh-navigation-inner {
    min-height: 96px;
    column-gap: 42px;
}

.home-template .gh-navigation-logo {
    font-size: 2.45rem;
}

.home-template .jp-navigation-description {
    max-width: 340px;
    font-size: 1.34rem;
    line-height: 1.4;
}

.home-template .gh-navigation .nav {
    gap: 32px;
    font-size: 1.5rem;
}

.home-template .gh-navigation-members .gh-button {
    padding: 1.1rem 1.55rem;
    border-radius: 9px;
    font-size: 1.4rem;
}

.home-template .jp-stream-container {
    padding-top: 32px;
}

.home-template .jp-entry {
    padding-top: 38px;
    padding-bottom: 38px;
}

.home-template .jp-entry-kind {
    font-size: 1.18rem;
}

.home-template .jp-entry-title {
    max-width: 900px;
    font-size: clamp(2.9rem, 3.1vw, 3.8rem);
}

.home-template .jp-entry.is-link .jp-entry-title {
    max-width: 900px;
    font-size: clamp(2.75rem, 3vw, 3.55rem);
}

.home-template .jp-entry.is-media .jp-entry-title {
    font-size: clamp(2.8rem, 3vw, 3.6rem);
}

.home-template .jp-entry-excerpt {
    max-width: 820px;
    font-size: 1.72rem;
}

.home-template .jp-entry.is-short .jp-entry-note {
    max-width: 920px;
    font-size: clamp(2.05rem, 1.8vw, 2.3rem);
    line-height: 1.48;
}

.home-template .jp-entry-link-content,
.home-template .jp-entry-media-content {
    max-width: 860px;
    font-size: 1.6rem;
}

.home-template .jp-entry-time {
    font-size: 1.3rem;
}

.home-template .jp-entry.is-featured {
    padding: clamp(34px, 4vw, 50px);
    border-radius: 20px;
}

.home-template .jp-entry.is-featured .jp-entry-layout {
    gap: 42px;
}

.home-template .jp-entry.is-featured .jp-entry-title {
    max-width: 700px;
    font-size: clamp(4rem, 4.8vw, 5.8rem);
}

.home-template .jp-entry.has-feature-image.is-featured .jp-entry-layout {
    grid-template-columns: minmax(0, 1.05fr) minmax(360px, .95fr);
}

/* Keep quoted/source material in Link posts attractive but quieter. */
.home-template .jp-entry.is-link blockquote {
    margin-top: 14px;
    padding-left: 18px;
    border-left-width: 3px;
    border-left-color: var(--jp-blue);
    color: #4a4d50;
}

/* Footer should span the same visual field as the header. */
.jp-footer-subscribe {
    padding-top: 42px;
    padding-bottom: 42px;
}

@media (max-width: 900px) {
    .home-template .gh-navigation-inner,
    .home-template .jp-stream-container .gh-container-inner,
    .jp-footer .gh-footer-inner {
        width: min(100% - 40px, 1180px);
    }

    .home-template .gh-navigation-inner {
        min-height: 72px;
    }
}

@media (max-width: 767px) {
    .home-template .gh-navigation-inner,
    .home-template .jp-stream-container .gh-container-inner,
    .jp-footer .gh-footer-inner {
        width: min(100% - 32px, 1180px);
    }

    .home-template .gh-navigation-logo {
        font-size: 2rem;
    }

    .home-template .jp-entry {
        padding-top: 28px;
        padding-bottom: 28px;
    }

    .home-template .jp-entry.is-short .jp-entry-note {
        font-size: 2rem;
    }
}

/* ==========================================================
   JeffPerry.me visual refinement v6
   Approved mockup pass: softer shell, newsletter card, stronger footer.
   ========================================================== */

:root {
    --jp-paper: #fbf8f1;
    --jp-paper-deep: #f5efe4;
    --jp-card: rgba(255, 255, 255, 0.34);
    --jp-ink: #1c1f21;
    --jp-muted: #72756f;
    --jp-line: rgba(28, 31, 33, 0.105);
    --jp-shadow: 0 14px 42px rgba(82, 61, 29, 0.055);
}

body,
.gh-viewport {
    background: var(--jp-paper) !important;
}

/* Header feels like a compact identity bar, not a publication masthead. */
.home-template .gh-navigation-inner {
    padding-top: 8px;
    padding-bottom: 8px;
}

.home-template .gh-navigation-logo {
    color: var(--jp-ink);
    text-decoration: none;
}

.home-template .gh-navigation .nav a {
    position: relative;
    color: var(--jp-ink);
    opacity: .9;
    transition: opacity .15s ease;
}

.home-template .gh-navigation .nav a:hover {
    opacity: .58;
}

.home-template .gh-navigation-members .gh-button {
    min-height: 42px;
    padding-inline: 1.7rem;
    border: 0;
    box-shadow: 0 2px 8px rgba(21, 24, 27, .08);
}

/* The stream should read as one calm surface. */
.home-template .jp-stream-container {
    padding-top: 24px;
}

.home-template .jp-entry {
    padding-top: 36px;
    padding-bottom: 36px;
}

.home-template .jp-entry:first-child:not(.is-featured) {
    padding-top: 26px;
}

.home-template .jp-entry-kind {
    display: inline-flex;
    align-items: center;
    padding: 0;
    border-left: 0;
}

.home-template .jp-entry-kind-label {
    line-height: 1;
}

.home-template .jp-entry-kind-icon {
    margin-right: 2px;
}

.home-template .jp-entry-title {
    text-wrap: balance;
}

.home-template .jp-entry-note,
.home-template .jp-entry-excerpt,
.home-template .jp-entry-link-content,
.home-template .jp-entry-media-content {
    text-wrap: pretty;
}

.home-template .jp-entry-time {
    opacity: .82;
}

/* Featured card: warm, quiet, tactile. */
.home-template .jp-entry.is-featured {
    margin-top: 6px !important;
    margin-bottom: 22px !important;
    padding: clamp(34px, 4vw, 50px);
    border: 1px solid rgba(74, 63, 45, .12);
    border-radius: 22px;
    background: linear-gradient(145deg, rgba(255,255,255,.44), rgba(255,255,255,.18));
    box-shadow: var(--jp-shadow);
}

.home-template .jp-entry.is-featured .jp-entry-meta {
    margin-bottom: 18px;
}

.jp-featured-badge {
    gap: 5px;
    padding: .52rem .9rem;
    border-color: rgba(118, 91, 35, .10);
    background: #f4ead0;
    color: #6f5622;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.55);
}

.home-template .jp-entry.is-featured .jp-entry-excerpt {
    max-width: 620px;
    margin-top: 16px;
    color: #343638;
    font-size: clamp(1.7rem, 1.8vw, 1.9rem);
}

.home-template .jp-entry.is-featured .jp-entry-time {
    margin-top: 24px;
}

.home-template .jp-entry.is-featured .jp-entry-image {
    overflow: hidden;
    border-radius: 16px;
}

.home-template .jp-entry.is-featured .jp-entry-image img {
    border-radius: 16px;
    box-shadow: none;
    transition: transform .3s ease;
}

.home-template .jp-entry.is-featured .jp-entry-image-link:hover img {
    transform: scale(1.012);
}

/* Notes are direct and readable, but visually quieter than essays. */
.home-template .jp-entry.is-short .jp-entry-note {
    max-width: 900px;
    color: #252729;
    font-size: clamp(1.95rem, 1.8vw, 2.25rem);
}

.home-template .jp-entry.is-short .jp-entry-note p + p {
    margin-top: .85em;
}

/* Link entries keep commentary but clearly point outward. */
.home-template .jp-entry.is-link .jp-entry-title a::after {
    content: " ↗";
    display: inline;
    font-family: var(--font-sans);
    font-size: .55em;
    font-weight: 650;
    vertical-align: .18em;
    color: var(--jp-blue);
}

.home-template .jp-entry.is-link .jp-entry-link-source {
    color: var(--jp-blue);
}

.home-template .jp-entry.is-link blockquote {
    max-width: 790px;
    margin-bottom: 0;
    padding: 2px 0 2px 18px;
    border-left: 3px solid var(--jp-blue);
    color: #4d5153;
    font-size: .94em;
}

/* Media/images stay rounded and polished without taking over the stream. */
.home-template .jp-entry-image img {
    border: 1px solid rgba(28,31,33,.06);
}

/* Newsletter card — intentionally separate from the footer band. */
.jp-footer {
    margin-top: 58px;
    padding: 0;
    background: transparent !important;
}

.jp-footer-subscribe-wrap {
    padding-bottom: 38px;
    background: var(--jp-paper);
}

.jp-footer-subscribe {
    display: grid;
    grid-template-columns: 54px minmax(0, 1fr) minmax(360px, .9fr);
    align-items: center;
    gap: 20px;
    width: min(1180px, calc(100% - 64px));
    max-width: 1180px;
    padding: 22px 24px;
    border: 1px solid rgba(74,63,45,.11);
    border-radius: 16px;
    background: rgba(255,255,255,.30);
    box-shadow: 0 8px 26px rgba(82,61,29,.035);
}

.jp-footer-subscribe-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    color: #5d7f6c;
    background: #eee9d6;
}

.jp-footer-subscribe-icon svg {
    width: 22px;
    height: 22px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.7;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.jp-footer-subscribe-title {
    margin: 0;
    font-family: "EB Garamond", Georgia, serif;
    font-size: 2.45rem;
    font-weight: 650;
    line-height: 1;
    letter-spacing: -.02em;
}

.jp-footer-subscribe-text {
    max-width: 520px;
    margin: 5px 0 0;
    color: #54585a;
    font-size: 1.32rem;
    line-height: 1.42;
}

.jp-footer-subscribe-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
}

.jp-footer-subscribe-actions .gh-form {
    display: flex;
    width: 100%;
    max-width: 430px;
    height: 46px;
    padding: 4px;
    border: 1px solid rgba(28,31,33,.10);
    border-radius: 9px;
    background: rgba(255,255,255,.55);
    box-shadow: none;
}

.jp-footer-subscribe-actions .gh-form-input {
    min-width: 0;
    padding-left: 13px;
    font-size: 1.25rem;
}

.jp-footer-subscribe-actions .gh-form .gh-button {
    flex: 0 0 auto;
    height: 36px;
    padding-inline: 15px;
    border-radius: 7px;
    background: #24292d;
    font-size: 1.2rem;
}

.jp-footer-subscribe-actions .gh-form .gh-button svg {
    display: none;
}

.jp-rss-pill {
    min-height: 42px;
    padding: 9px 14px;
    background: rgba(255,255,255,.48);
}

/* Footer band — slightly deeper paper, like a physical page ending. */
.jp-footer-band {
    background: var(--jp-paper-deep);
    border-top: 1px solid rgba(74,63,45,.06);
}

.jp-footer-inner {
    width: min(1280px, calc(100% - 64px));
    max-width: 1280px;
    padding-top: 34px;
    padding-bottom: 26px;
}

.jp-footer-grid {
    grid-template-columns: 1.2fr .72fr .72fr;
    gap: 64px;
    padding: 0 0 30px;
}

.jp-footer-title {
    font-family: "EB Garamond", Georgia, serif;
    font-size: 2.1rem;
    font-weight: 650;
    letter-spacing: -.02em;
    text-transform: none;
}

.jp-footer-description {
    max-width: 350px;
    margin-top: 9px;
    color: #4f5354;
    font-size: 1.3rem;
}

.jp-footer-philosophy {
    max-width: 350px;
    margin-top: 14px;
    color: #4f5354;
    font-size: 1.3rem;
    line-height: 1.5;
}

.jp-footer-heading {
    display: block;
    margin-bottom: 12px;
    font-family: "EB Garamond", Georgia, serif;
    font-size: 1.85rem;
    font-weight: 650;
}

.jp-footer-menu .nav {
    gap: 6px;
    font-size: 1.28rem;
}

.jp-footer-menu .nav a {
    color: #45494b;
}

.jp-footer-socials {
    gap: 10px;
}

.jp-footer-socials a {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    color: #575b5d;
    background: rgba(255,255,255,.55);
    box-shadow: 0 2px 8px rgba(82,61,29,.035);
}

.jp-footer-socials a.is-rss {
    color: #d86f2c;
}

.jp-footer-socials a:hover {
    transform: translateY(-2px);
    background: #fff;
}

.jp-footer-bottom {
    padding-top: 18px;
    color: #777a77;
}

@media (max-width: 900px) {
    .jp-footer-subscribe {
        grid-template-columns: 48px minmax(0, 1fr);
        width: min(100% - 40px, 1180px);
    }

    .jp-footer-subscribe-actions {
        grid-column: 1 / -1;
        justify-content: flex-start;
    }

    .jp-footer-subscribe-actions .gh-form {
        max-width: none;
    }

    .jp-footer-inner {
        width: min(100% - 40px, 1280px);
    }
}

@media (max-width: 767px) {
    .jp-footer {
        margin-top: 42px;
    }

    .jp-footer-subscribe-wrap {
        padding-bottom: 28px;
    }

    .jp-footer-subscribe {
        grid-template-columns: 42px minmax(0, 1fr);
        gap: 14px;
        width: min(100% - 32px, 1180px);
        padding: 18px;
        border-radius: 14px;
    }

    .jp-footer-subscribe-icon {
        width: 42px;
        height: 42px;
    }

    .jp-footer-subscribe-title {
        font-size: 2.15rem;
    }

    .jp-footer-subscribe-actions {
        width: 100%;
    }

    .jp-footer-subscribe-actions .gh-form {
        height: auto;
        min-height: 46px;
    }

    .jp-footer-inner {
        width: min(100% - 32px, 1280px);
        padding-top: 28px;
    }

    .jp-footer-grid {
        gap: 26px;
    }

    .jp-footer-bottom {
        padding-top: 16px;
    }
}

/* ==========================================================
   JeffPerry.me visual refinement v7
   Header wordmark: quieter, less logo-like, more cohesive.
   ========================================================== */
.home-template .gh-navigation-logo,
.gh-navigation-logo {
    font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 2.25rem;
    font-weight: 680;
    letter-spacing: 0.015em;
    line-height: 1;
    text-transform: uppercase;
    font-variation-settings: "wght" 680;
}

@media (max-width: 767px) {
    .home-template .gh-navigation-logo,
    .gh-navigation-logo {
        font-size: 2rem;
        letter-spacing: 0.012em;
    }
}


/* ==========================================================
   JeffPerry.me visual refinement v8
   Header typography + permanent content-type navigation.
   ========================================================== */
.jp-navigation-identity {
    gap: 14px;
}

.home-template .gh-navigation-logo,
.gh-navigation-logo {
    font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 2.35rem;
    font-weight: 600;
    letter-spacing: 0.028em;
    line-height: 1;
    text-transform: uppercase;
    font-variation-settings: "wght" 600;
}

.jp-navigation-description {
    max-width: 330px;
    font-size: 1.3rem;
    font-weight: 430;
    line-height: 1.4;
    color: var(--jp-muted);
}

.home-template .gh-navigation .nav,
.gh-navigation .nav {
    gap: 28px;
    font-size: 1.45rem;
    font-weight: 550;
}

@media (max-width: 767px) {
    .home-template .gh-navigation-logo,
    .gh-navigation-logo {
        font-size: 2.05rem;
        letter-spacing: 0.024em;
    }
}

/* ==========================================================
   JeffPerry.me visual refinement v8
   Featured card uses the same deeper cream as the footer band.
   ========================================================== */
.home-template .jp-entry.is-featured {
    background: var(--jp-paper-deep);
    border-color: rgba(74, 63, 45, .10);
    box-shadow: 0 12px 34px rgba(82, 61, 29, .045);
}

/* ==========================================================
   JeffPerry.me responsive refinement v9
   iPad + phone pass. Desktop rules above remain unchanged.
   ========================================================== */

/* iPad landscape / smaller laptops */
@media (max-width: 1100px) {
    .jp-navigation-description {
        display: none;
    }

    .home-template .gh-navigation-inner,
    .gh-navigation-inner {
        width: min(100% - 48px, 1040px);
        max-width: 1040px;
        min-height: 78px;
        column-gap: 22px;
    }

    .home-template .gh-navigation-logo,
    .gh-navigation-logo {
        font-size: 2.15rem;
    }

    .home-template .gh-navigation .nav,
    .gh-navigation .nav {
        gap: 20px;
        font-size: 1.34rem;
    }

    .home-template .gh-navigation-members .gh-button,
    .gh-navigation-members .gh-button {
        padding: .95rem 1.3rem;
        font-size: 1.28rem;
    }

    .home-template .jp-stream-container .gh-container-inner {
        width: min(100% - 48px, 1040px);
        max-width: 1040px;
    }

    .jp-footer-subscribe,
    .jp-footer-inner {
        width: min(100% - 48px, 1040px);
    }
}

/* iPad portrait: give content room instead of squeezing two-column cards. */
@media (max-width: 900px) {
    .home-template .gh-navigation-inner,
    .gh-navigation-inner {
        width: min(100% - 40px, 860px);
        min-height: 72px;
        column-gap: 16px;
    }

    .home-template .gh-navigation-logo,
    .gh-navigation-logo {
        font-size: 2rem;
    }

    .home-template .gh-navigation .nav,
    .gh-navigation .nav {
        gap: 15px;
        font-size: 1.25rem;
    }

    .home-template .jp-stream-container {
        padding-top: 18px;
    }

    .home-template .jp-stream-container .gh-container-inner {
        width: min(100% - 40px, 860px);
    }

    .home-template .jp-entry.has-feature-image.is-featured .jp-entry-layout,
    .home-template .jp-entry.has-feature-image.is-media .jp-entry-layout,
    .home-template .jp-entry.has-feature-image:not(.is-featured):not(.is-media):not(.is-image) .jp-entry-layout {
        grid-template-columns: 1fr;
        gap: 22px;
    }

    .home-template .jp-entry.is-featured .jp-entry-title {
        max-width: 720px;
        font-size: clamp(3.7rem, 7vw, 5rem);
    }

    .home-template .jp-entry.is-featured .jp-entry-image img {
        max-height: 440px;
        aspect-ratio: 16 / 9;
    }

    .home-template .jp-entry.is-short .jp-entry-note {
        max-width: 100%;
        font-size: 2.05rem;
    }

    .jp-footer-subscribe {
        grid-template-columns: 48px minmax(0, 1fr);
        gap: 16px;
        width: min(100% - 40px, 860px);
    }

    .jp-footer-subscribe-actions {
        grid-column: 1 / -1;
        width: 100%;
        justify-content: stretch;
    }

    .jp-footer-subscribe-actions .gh-form {
        max-width: none;
    }

    .jp-footer-inner {
        width: min(100% - 40px, 860px);
    }

    .jp-footer-grid {
        grid-template-columns: 1fr 1fr;
        gap: 34px 48px;
    }

    .jp-footer-about {
        grid-column: 1 / -1;
    }

    .jp-footer-description,
    .jp-footer-philosophy {
        max-width: 560px;
    }
}

/* Phones and narrow split-screen tablet views. */
@media (max-width: 767px) {
    /* Let Source's burger menu take over cleanly. */
    #gh-navigation .gh-navigation-inner,
    .home-template #gh-navigation .gh-navigation-inner {
        width: 100%;
        min-height: 64px;
        padding-inline: 20px;
    }

    #gh-navigation .gh-navigation-brand {
        min-height: 64px;
    }

    .home-template .gh-navigation-logo,
    .gh-navigation-logo {
        font-size: 1.88rem;
        font-weight: 600;
        letter-spacing: .025em;
    }

    #gh-navigation.is-open .gh-navigation-menu {
        padding-top: 26px;
    }

    #gh-navigation.is-open .nav {
        gap: 0;
    }

    #gh-navigation.is-open .nav a {
        padding-block: 10px;
        font-family: "EB Garamond", Georgia, serif;
        font-size: 2.65rem;
        font-weight: 600;
        letter-spacing: -.02em;
    }

    #gh-navigation.is-open .gh-navigation-actions {
        padding-bottom: max(24px, env(safe-area-inset-bottom));
    }

    #gh-navigation.is-open .gh-navigation-members .gh-button {
        min-height: 46px;
        border-radius: 10px;
        font-size: 1.45rem;
    }

    .home-template .jp-stream-container {
        padding-top: 8px;
    }

    .home-template .jp-stream-container .gh-container-inner {
        width: calc(100% - 32px);
    }

    .home-template .jp-entry {
        padding: 26px 0;
    }

    .home-template .jp-entry-meta {
        gap: 8px;
        margin-bottom: 11px;
    }

    .home-template .jp-entry-kind {
        font-size: 1.08rem;
    }

    .home-template .jp-entry-title,
    .home-template .jp-entry.is-link .jp-entry-title,
    .home-template .jp-entry.is-media .jp-entry-title {
        max-width: 100%;
        font-size: clamp(2.55rem, 8.7vw, 3.25rem);
        line-height: 1.08;
    }

    .home-template .jp-entry-excerpt {
        max-width: 100%;
        margin-top: 10px;
        font-size: 1.58rem;
        line-height: 1.52;
    }

    .home-template .jp-entry.is-short .jp-entry-note {
        max-width: 100%;
        font-size: 1.92rem;
        line-height: 1.5;
    }

    .home-template .jp-entry-link-content,
    .home-template .jp-entry-media-content {
        max-width: 100%;
        font-size: 1.48rem;
        line-height: 1.55;
    }

    .home-template .jp-entry.is-link blockquote {
        padding-left: 14px;
        font-size: .96em;
    }

    .home-template .jp-entry-time {
        margin-top: 13px;
        font-size: 1.2rem;
    }

    .home-template .jp-entry-image img,
    .home-template .jp-entry.is-featured .jp-entry-image img {
        width: 100%;
        max-height: none;
        aspect-ratio: 16 / 10;
        border-radius: 12px;
    }

    .home-template .jp-entry.is-featured {
        margin: 4px 0 14px !important;
        padding: 20px;
        border-radius: 16px;
        box-shadow: 0 8px 24px rgba(82, 61, 29, .04);
    }

    .home-template .jp-entry.is-featured .jp-entry-meta {
        margin-bottom: 13px;
    }

    .home-template .jp-entry.is-featured .jp-entry-title {
        max-width: 100%;
        font-size: clamp(3.25rem, 10.8vw, 4.2rem);
        line-height: 1.02;
    }

    .home-template .jp-entry.is-featured .jp-entry-excerpt {
        margin-top: 12px;
        font-size: 1.58rem;
        line-height: 1.5;
    }

    .home-template .jp-entry.is-featured .jp-entry-time {
        margin-top: 18px;
    }

    .jp-featured-badge {
        padding: .46rem .72rem;
        font-size: 1rem;
    }

    /* Individual posts/pages: keep reading comfortable on small screens. */
    .gh-article-header {
        margin-top: 34px;
        margin-bottom: 28px;
    }

    .gh-article-title {
        font-size: clamp(3.2rem, 10vw, 4.2rem);
        line-height: 1.06;
    }

    .gh-article-excerpt {
        font-size: 1.65rem;
        line-height: 1.5;
    }

    .gh-content {
        --content-font-size: 1.7rem;
        --content-spacing-factor: .9;
        line-height: 1.6;
    }

    .gh-content :is(pre, .gh-table) {
        max-width: 100%;
        overflow-x: auto;
    }

    /* Newsletter/footer become touch-friendly and single-column. */
    .jp-footer {
        margin-top: 38px;
    }

    .jp-footer-subscribe-wrap {
        padding-bottom: 24px;
    }

    .jp-footer-subscribe {
        grid-template-columns: 40px minmax(0, 1fr);
        width: calc(100% - 32px);
        gap: 12px;
        padding: 17px;
        border-radius: 14px;
    }

    .jp-footer-subscribe-icon {
        width: 40px;
        height: 40px;
    }

    .jp-footer-subscribe-title {
        font-size: 2.05rem;
    }

    .jp-footer-subscribe-text {
        font-size: 1.26rem;
    }

    .jp-footer-subscribe-actions {
        grid-column: 1 / -1;
    }

    .jp-footer-subscribe-actions .gh-form {
        width: 100%;
        min-height: 48px;
        border-radius: 10px;
    }

    .jp-footer-subscribe-actions .gh-form .gh-button {
        min-width: 104px;
        min-height: 38px;
    }

    .jp-footer-inner {
        width: calc(100% - 32px);
        padding-top: 26px;
        padding-bottom: max(22px, env(safe-area-inset-bottom));
    }

    .jp-footer-grid {
        grid-template-columns: 1fr;
        gap: 26px;
    }

    .jp-footer-about {
        grid-column: auto;
    }

    .jp-footer-title {
        font-size: 2rem;
    }

    .jp-footer-heading {
        margin-bottom: 10px;
        font-size: 1.75rem;
    }

    .jp-footer-menu .nav {
        gap: 3px;
    }

    .jp-footer-menu .nav a {
        display: inline-block;
        padding-block: 4px;
    }

    .jp-footer-socials a {
        width: 44px;
        height: 44px;
    }

    .jp-footer-bottom {
        flex-direction: column;
        gap: 3px;
        font-size: 1.1rem;
    }
}

/* Extra-small phones. */
@media (max-width: 420px) {
    #gh-navigation .gh-navigation-inner,
    .home-template #gh-navigation .gh-navigation-inner {
        padding-inline: 16px;
    }

    .home-template .jp-stream-container .gh-container-inner,
    .jp-footer-subscribe,
    .jp-footer-inner {
        width: calc(100% - 28px);
    }

    .home-template .jp-entry.is-featured {
        padding: 17px;
    }

    .home-template .jp-entry.is-featured .jp-entry-title {
        font-size: clamp(3rem, 10.5vw, 3.75rem);
    }

    .jp-footer-subscribe-actions .gh-form {
        padding: 4px;
    }

    .jp-footer-subscribe-actions .gh-form-input {
        padding-left: 10px;
        font-size: 1.2rem;
    }

    .jp-footer-subscribe-actions .gh-form .gh-button {
        min-width: 94px;
        padding-inline: 10px;
        font-size: 1.15rem;
    }
}

/* ==========================================================
   JeffPerry.me responsive refinement v10
   iPhone overflow fix + tighter phone typography.
   ========================================================== */
@media (max-width: 767px) {
    html,
    body,
    .gh-viewport {
        width: 100%;
        max-width: 100%;
        overflow-x: hidden;
    }

    .home-template .jp-stream-container,
    .home-template .jp-stream-container .gh-container-inner,
    .home-template .jp-stream-main,
    .home-template .jp-stream,
    .home-template .jp-entry,
    .home-template .jp-entry-layout,
    .home-template .jp-entry-copy {
        min-width: 0;
        max-width: 100%;
    }

    .home-template .jp-stream-container .gh-container-inner {
        width: 100%;
        padding-inline: 20px;
        margin-inline: auto;
        overflow: visible;
    }

    .home-template .jp-entry-title,
    .home-template .jp-entry-note,
    .home-template .jp-entry-excerpt,
    .home-template .jp-entry-link-content,
    .home-template .jp-entry-media-content {
        width: 100%;
        max-width: 100%;
        min-width: 0;
        overflow-wrap: anywhere;
    }

    .home-template .jp-entry-title,
    .home-template .jp-entry.is-link .jp-entry-title,
    .home-template .jp-entry.is-media .jp-entry-title {
        font-size: clamp(2.35rem, 7.4vw, 2.95rem);
        line-height: 1.08;
    }

    .home-template .jp-entry.is-short .jp-entry-note {
        font-size: 1.78rem;
        line-height: 1.48;
    }

    .home-template .jp-entry.is-featured {
        width: 100%;
        max-width: 100%;
        padding: 18px;
    }

    .home-template .jp-entry.is-featured .jp-entry-title {
        font-size: clamp(2.95rem, 9vw, 3.65rem);
        line-height: 1.02;
    }

    .home-template .jp-entry.is-featured .jp-entry-excerpt {
        font-size: 1.48rem;
        line-height: 1.48;
    }
}

@media (max-width: 420px) {
    .home-template .jp-stream-container .gh-container-inner {
        width: 100%;
        padding-inline: 16px;
    }

    .home-template .jp-entry.is-featured {
        padding: 16px;
    }

    .home-template .jp-entry.is-featured .jp-entry-title {
        font-size: clamp(2.8rem, 8.8vw, 3.35rem);
    }

    .home-template .jp-entry.is-short .jp-entry-note {
        font-size: 1.72rem;
    }
}

/* ==========================================================
   JeffPerry.me responsive refinement v11
   True mobile-width fix: let the outer shell own horizontal padding.
   ========================================================== */
@media (max-width: 767px) {
    .home-template .jp-stream-container.gh-outer {
        width: 100%;
        max-width: 100%;
        padding-inline: 20px;
    }

    .home-template .jp-stream-container .gh-container-inner {
        display: block !important;
        width: auto !important;
        max-width: none !important;
        margin-inline: 0 !important;
        padding-inline: 0 !important;
        overflow: visible !important;
    }

    .home-template .jp-stream-main,
    .home-template .jp-stream,
    .home-template .jp-entry,
    .home-template .jp-entry-layout,
    .home-template .jp-entry-copy {
        display: block;
        width: auto !important;
        max-width: 100% !important;
        min-width: 0 !important;
        margin-inline: 0;
    }

    .home-template .jp-entry.is-featured {
        width: auto !important;
        margin-inline: 0 !important;
    }

    .home-template .jp-entry-title,
    .home-template .jp-entry-title a,
    .home-template .jp-entry-note,
    .home-template .jp-entry-note > *,
    .home-template .jp-entry-excerpt,
    .home-template .jp-entry-link-content,
    .home-template .jp-entry-media-content {
        max-width: 100% !important;
        min-width: 0 !important;
        overflow-wrap: break-word;
        word-break: normal;
    }
}

@media (max-width: 420px) {
    .home-template .jp-stream-container.gh-outer {
        padding-inline: 16px;
    }
}


/* ==========================================================
   JeffPerry.me responsive refinement v11
   Pin mobile controls to the far-right edge of the header.
   ========================================================== */
@media (max-width: 767px) {
    #gh-navigation .gh-navigation-inner,
    .home-template #gh-navigation .gh-navigation-inner {
        position: relative;
        display: block !important;
        width: 100%;
        max-width: none;
        padding-left: 20px;
        padding-right: 20px;
    }

    #gh-navigation .gh-navigation-brand {
        position: relative;
        display: flex;
        align-items: center;
        width: 100%;
        min-height: 64px;
        padding-right: 88px;
    }

    #gh-navigation .jp-navigation-identity {
        flex: 0 1 auto;
        min-width: 0;
    }

    #gh-navigation .gh-navigation-brand > .gh-search {
        position: absolute;
        right: 48px;
        top: 50%;
        margin: 0;
        transform: translateY(-50%);
    }

    #gh-navigation .gh-navigation-brand > .gh-burger {
        position: absolute;
        right: 0;
        top: 50%;
        margin: 0;
        transform: translateY(-50%);
    }
}

/* ==========================================================
   JeffPerry.me About page — final production styles
   ========================================================== */
.jp-about-page {
    --about-card: var(--jp-paper-deep);
}

.page-template .jp-about-page .gh-article-header,
.page-template .jp-about-page .gh-content {
    width: min(100% - 48px, 760px) !important;
    max-width: 760px !important;
    margin-inline: auto !important;
}

.jp-about-page .gh-article-header {
    padding-top: 54px;
}

.page-template .jp-about-page .gh-content {
    padding-top: 0 !important;
    padding-bottom: 28px;
    color: #343638;
    font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 1.72rem;
    line-height: 1.72 !important;
}

.page-template .jp-about-page .gh-content:only-child > *:first-child:not(.kg-width-full) {
    margin-top: 22px !important;
}

.jp-about-page .gh-content > :first-child,
.jp-about-page .gh-content > p:first-of-type,
.page-template .jp-about-page .gh-content h1:first-child + p {
    margin-top: 0 !important;
}

.jp-about-page .gh-content h1,
.jp-about-page .gh-content h2,
.jp-about-page .gh-content h3 {
    color: var(--jp-ink);
    font-family: "EB Garamond", Georgia, serif;
    letter-spacing: -.025em;
}

.page-template .jp-about-page .gh-content h1:first-child {
    margin-bottom: 22px !important;
}

.jp-about-page .gh-content h1 {
    font-size: clamp(4rem, 6vw, 5.6rem);
    font-weight: 650;
    line-height: 1.02;
}

.jp-about-page .gh-content h2 {
    margin-top: 36px;
    margin-bottom: 10px;
    font-size: clamp(2.8rem, 4vw, 3.6rem);
    font-weight: 650;
    line-height: 1.08;
}

.jp-about-page .gh-content h3 {
    margin-top: 38px;
    margin-bottom: 12px;
    font-size: 2.5rem;
}

.page-template .jp-about-page .gh-content p,
.page-template .jp-about-page .gh-content li {
    line-height: 1.72 !important;
}

.jp-about-page .gh-content p {
    max-width: 760px;
}

.jp-about-page .gh-content p + p {
    margin-top: 16px;
}

.jp-about-page .gh-content a {
    color: var(--jp-blue);
    text-decoration-thickness: 1px;
    text-underline-offset: .16em;
}

/* Broad editor cards keep the same warm surface language. */
.jp-about-page .gh-content .kg-card:not(.kg-image-card):not(.kg-gallery-card):not(.kg-video-card):not(.kg-audio-card):not(.kg-file-card):not(.kg-bookmark-card):not(.kg-signup-card),
.jp-about-page .gh-content .kg-callout-card {
    overflow: hidden;
    margin-top: 42px;
    margin-bottom: 42px;
    padding: clamp(26px, 5vw, 52px) !important;
    background: var(--about-card) !important;
    border: 1px solid rgba(74, 63, 45, .10);
    border-radius: 18px;
    box-shadow: 0 12px 34px rgba(82, 61, 29, .04);
}

.jp-about-page + .jp-footer,
.page-template .jp-footer {
    margin-top: 68px;
}

/* The editor's native signup card is replaced at DOMContentLoaded by the
   purpose-built Weeklyish card in page.hbs. Hide it during that tiny handoff
   so the old Ghost layout never flashes on screen. */
.page-template .jp-about-page .gh-content .kg-signup-card {
    visibility: hidden;
}

.page-template .jp-about-page .jp-about-weeklyish {
    display: grid;
    grid-template-columns: 54px minmax(0, 1fr) minmax(300px, 360px);
    align-items: center;
    gap: 18px;
    width: 100%;
    margin: 30px 0 38px;
    padding: 20px 22px;
    background: var(--jp-paper-deep);
    border: 1px solid rgba(74, 63, 45, .10);
    border-radius: 16px;
    box-shadow: 0 10px 28px rgba(82, 61, 29, .04);
}

.page-template .jp-about-page .jp-about-weeklyish-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 54px;
    height: 54px;
    border-radius: 50%;
    color: #6f8c78;
    background: #eee6d3;
}

.page-template .jp-about-page .jp-about-weeklyish-icon svg {
    width: 22px;
    height: 22px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.7;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.page-template .jp-about-page .jp-about-weeklyish-copy {
    min-width: 0;
}

.page-template .jp-about-page .jp-about-weeklyish-copy h2 {
    margin: 0 0 3px !important;
    font-family: "EB Garamond", Georgia, serif;
    font-size: 2.35rem !important;
    font-weight: 700;
    line-height: 1.05;
    letter-spacing: -.02em;
}

.page-template .jp-about-page .jp-about-weeklyish-copy p {
    margin: 0 !important;
    max-width: 34ch;
    color: var(--jp-muted);
    font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 1.22rem;
    line-height: 1.4 !important;
}

.page-template .jp-about-page .jp-about-weeklyish-form {
    min-width: 0;
    width: 100%;
}

.page-template .jp-about-page .jp-about-weeklyish-form .kg-signup-card-form,
.page-template .jp-about-page .jp-about-weeklyish-form form {
    position: static !important;
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    transform: none !important;
    text-align: left !important;
    visibility: visible !important;
}

.page-template .jp-about-page .jp-about-weeklyish-form .kg-signup-card-fields,
.page-template .jp-about-page .jp-about-weeklyish-form form > div:first-child {
    display: flex !important;
    align-items: stretch !important;
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    height: 46px !important;
    min-height: 46px !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    background: rgba(255, 255, 255, .58) !important;
    border: 1px solid rgba(29, 32, 34, .10) !important;
    border-radius: 10px !important;
}

.page-template .jp-about-page .jp-about-weeklyish-form input[type="email"] {
    flex: 1 1 auto !important;
    width: auto !important;
    min-width: 0 !important;
    height: 44px !important;
    padding: 0 14px !important;
    border: 0 !important;
    outline: 0 !important;
    background: transparent !important;
    font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important;
    font-size: 1.3rem !important;
}

.page-template .jp-about-page .jp-about-weeklyish-form button,
.page-template .jp-about-page .jp-about-weeklyish-form .kg-signup-card-button {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex: 0 0 auto !important;
    min-width: 104px !important;
    height: 44px !important;
    min-height: 44px !important;
    margin: 0 !important;
    padding: 0 16px !important;
    border: 0 !important;
    border-radius: 8px !important;
    color: #fff !important;
    background: #24292d !important;
    font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important;
    font-size: 1.23rem !important;
    font-weight: 650 !important;
    line-height: 1 !important;
    text-align: center !important;
    white-space: nowrap !important;
}

.page-template .jp-about-page .jp-about-weeklyish-form p,
.page-template .jp-about-page .jp-about-weeklyish-form small,
.page-template .jp-about-page .jp-about-weeklyish-form [data-members-error] {
    margin: 5px 0 0 !important;
    color: var(--jp-muted) !important;
    font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important;
    font-size: 1rem !important;
    line-height: 1.25 !important;
    text-align: left !important;
}

@media (max-width: 900px) {
    .page-template .jp-about-page .jp-about-weeklyish {
        grid-template-columns: 48px minmax(0, 1fr);
        gap: 12px 14px;
    }

    .page-template .jp-about-page .jp-about-weeklyish-icon {
        width: 48px;
        height: 48px;
    }

    .page-template .jp-about-page .jp-about-weeklyish-form {
        grid-column: 1 / -1;
        margin-top: 2px;
    }

    .page-template .jp-about-page .jp-about-weeklyish-copy p {
        max-width: none;
    }
}

@media (max-width: 767px) {
    .page-template .jp-about-page .gh-article-header,
    .page-template .jp-about-page .gh-content {
        width: calc(100% - 32px) !important;
    }

    .page-template .jp-about-page .gh-content {
        font-size: 1.58rem;
        line-height: 1.66 !important;
    }

    .page-template .jp-about-page .gh-content p,
    .page-template .jp-about-page .gh-content li {
        line-height: 1.66 !important;
    }

    .page-template .jp-about-page .gh-content:only-child > *:first-child:not(.kg-width-full) {
        margin-top: 14px !important;
    }

    .jp-about-page .gh-content h1 {
        font-size: clamp(3.6rem, 11vw, 4.5rem);
    }

    .jp-about-page .gh-content h2 {
        margin-top: 36px;
        font-size: clamp(2.65rem, 8vw, 3.25rem);
    }

    .jp-about-page .gh-content .kg-card:not(.kg-image-card):not(.kg-gallery-card):not(.kg-video-card):not(.kg-audio-card):not(.kg-file-card):not(.kg-bookmark-card):not(.kg-signup-card),
    .jp-about-page .gh-content .kg-callout-card {
        margin-top: 32px;
        margin-bottom: 32px;
        padding: 24px 20px !important;
        border-radius: 16px;
    }

    .page-template .jp-about-page .jp-about-weeklyish {
        grid-template-columns: 44px minmax(0, 1fr);
        gap: 10px 12px;
        margin: 24px 0 30px;
        padding: 18px;
    }

    .page-template .jp-about-page .jp-about-weeklyish-icon {
        width: 44px;
        height: 44px;
    }

    .page-template .jp-about-page .jp-about-weeklyish-copy h2 {
        font-size: 2.05rem !important;
    }

    .page-template .jp-about-page .jp-about-weeklyish-copy p {
        font-size: 1.16rem;
    }
}

/* Compact post-type marker spacing. */
.home-template .jp-entry-kind {
    gap: 3px !important;
}

.home-template .jp-entry-kind-icon {
    margin-right: 0 !important;
}

/* ==========================================================
   JeffPerry.me post-type archives
   Real public archive pages backed by internal post-type tags.
   ========================================================== */
.jp-type-archive-header {
    width: min(100% - 64px, 1180px);
    max-width: 1180px;
    padding-top: 42px;
    padding-bottom: 10px;
}

.jp-type-archive-header .gh-archive-inner {
    max-width: 760px;
}

.jp-type-archive-header .gh-article-title {
    margin: 0;
    font-family: "EB Garamond", Georgia, serif;
    font-size: clamp(4rem, 6vw, 5.8rem);
    font-weight: 650;
    line-height: 1;
    letter-spacing: -.035em;
}

.jp-type-archive-header .gh-article-excerpt {
    max-width: 620px;
    margin-top: 10px;
    color: var(--jp-muted);
    font-size: 1.55rem;
    line-height: 1.5;
}

.jp-type-archive .jp-stream-container {
    padding-top: 0;
}

@media (max-width: 767px) {
    .jp-type-archive-header {
        width: calc(100% - 32px);
        padding-top: 22px;
        padding-bottom: 4px;
    }

    .jp-type-archive-header .gh-article-title {
        font-size: clamp(3.6rem, 12vw, 4.8rem);
    }

    .jp-type-archive-header .gh-article-excerpt {
        font-size: 1.45rem;
    }
}

/* Link posts: the first external URL is routing metadata, not feed content. */
.jp-entry.is-link .jp-link-target-row {
    display: none !important;
}


/*
 * JeffPerry.me post type icon override
 * Load this after jeffperry-stream.css.
 */

.jp-entry-kind {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    margin-top: 0.45rem;
    padding-left: 0;
    border-left: 0;
    font-weight: 750;
}

.jp-entry-kind-icon {
    display: inline-flex;
    width: 1.45rem;
    height: 1.45rem;
    flex: 0 0 1.45rem;
    color: var(--post-type-color, currentColor);
}

.jp-entry-kind-icon svg {
    display: block;
    width: 100%;
    height: 100%;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.9;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.jp-entry-kind-icon .jp-icon-fill {
    fill: currentColor;
    stroke: none;
}

.jp-entry-kind-label {
    color: inherit;
}

@media (max-width: 767px) {
    .jp-entry-kind {
        margin-top: 0;
    }

    .jp-entry-kind-icon {
        width: 1.35rem;
        height: 1.35rem;
        flex-basis: 1.35rem;
    }
}

/* Archive refinement: give Link and Media permalink metadata room to breathe. */
.jp-type-archive .jp-entry.is-link .jp-entry-time,
.jp-type-archive .jp-entry.is-media .jp-entry-time {
    display: inline-block;
    margin-top: 1.8rem;
}

@media (max-width: 767px) {
    .jp-type-archive .jp-entry.is-link .jp-entry-time,
    .jp-type-archive .jp-entry.is-media .jp-entry-time {
        margin-top: 1.5rem;
    }
}
