diff --git a/assets/built/app.css b/assets/built/app.css index 8d95ce40..4801fadd 100644 --- a/assets/built/app.css +++ b/assets/built/app.css @@ -1,2 +1,2272 @@ -:root{--tablet:768px;--laptop:992px;--desktop:1200px;--widescreen:1400px;--gap:1rem;--gutter:max(20px,3vw);--width:992px;--post-width:768px;--content-width:700px;--radius:0.5em;--radius-small:3px;--heading-typeface:"Archivo",sans-serif;--mono-typeface:"JetBrains Mono","Cascadia Code","Fira Code","Menlo",monospace;--letter-spacing:0.2px;--h1:2.488rem;--h2:2.074rem;--h3:1.728rem;--h4:1.44rem;--h5:1.2rem;--h6:1rem;--small:0.833rem;--x-small:0.694rem;--xx-small:0.579rem;--button-padding:0.5em 0.75em;--transition:0.3s}:root[data-color-pref=light]{--primary:hsl(var(--primary-h) var(--saturation) var(--lightness));--primary-light:hsl(var(--primary-h) var(--saturation) calc(var(--lightness)*1.5));--primary-dark:hsl(var(--primary-h) var(--saturation) calc(var(--lightness)*0.5));--secondary:hsl(var(--complementary-color) var(--saturation) var(--lightness));--secondary-light:hsl(var(--complementary-color) var(--saturation) calc(var(--lightness)*1.5));--secondary-dark:hsl(var(--complementary-color) var(--saturation) calc(var(--lightness)*0.5));--surface:hsl(var(--primary-h) 10% 96%);--surface-85:hsla(var(--primary-h) 10% 96%/0.85);--surface-light:hsl(var(--primary-h) 10% 100%);--surface-dark:hsl(var(--primary-h) 10% 89%);--surface-darker:hsl(var(--primary-h) 10% 82%);--element:hsl(var(--primary-h) 10% 5%);--element-light:hsl(var(--primary-h) 10% 35%);--element-dark:hsl(var(--primary-h) 10% 1%);--border-color:hsla(var(--primary-h) 10% 82%/0.5);--border-color-accent:hsla(var(--primary-h) 10% 72%/0.5);--button-text:hsl(var(--primary-h) 10% 100%);--box-shadow:0 0.7px 2.2px hsla(var(--primary-h) var(--saturation) 9%/0.02),0 1.6px 5.3px hsla(var(--primary-h) var(--saturation) 9%/0.028),0 3px 10px hsla(var(--primary-h) var(--saturation) 9%/0.035),0 5.4px 17.9px hsla(var(--primary-h) var(--saturation) 9%/0.042),0 10px 33.4px hsla(var(--primary-h) var(--saturation) 9%/0.05),0 24px 80px hsla(var(--primary-h) var(--saturation) 9%/0.07)}:root[data-color-pref=dark]{--primary:hsl(var(--primary-h) var(--saturation) calc(var(--lightness)*1.5));--primary-light:hsl(var(--primary-h) var(--saturation) calc(var(--lightness)*1.75));--primary-dark:hsl(var(--primary-h) var(--saturation) calc(var(--lightness)*1.15));--secondary:hsl(var(--complementary-color) var(--saturation) calc(var(--lightness)*1.5));--secondary-light:hsl(var(--complementary-color) var(--saturation) calc(var(--lightness)*1.75));--secondary-dark:hsl(var(--complementary-color) var(--saturation) calc(var(--lightness)*1.15));--element:hsl(var(--primary-h) 10% 96%);--element-light:hsl(var(--primary-h) 10% 100%);--element-dark:hsl(var(--primary-h) 10% 89%);--element-darker:hsl(var(--primary-h) 10% 82%);--surface:hsl(var(--primary-h) 10% 12%);--surface-85:hsla(var(--primary-h) 10% 15%/0.85);--surface-light:hsl(var(--primary-h) 10% 18%);--surface-dark:hsl(var(--primary-h) 10% 8%);--surface-darker:hsl(var(--primary-h) 10% 3%);--border-color:hsla(var(--primary-h) 10% 35%/0.5);--border-color-accent:hsla(var(--primary-h) 10% 25%/0.5);--button-text:hsl(var(--primary-h) 10% 3%);--box-shadow:0 0.7px 2.2px hsla(var(--primary-h) var(--saturation) 1%/0.02),0 1.6px 5.3px hsla(var(--primary-h) var(--saturation) 1%/0.048),0 3px 10px hsla(var(--primary-h) var(--saturation) 1%/0.055),0 5.4px 17.9px hsla(var(--primary-h) var(--saturation) 1%/0.062),0 10px 33.4px hsla(var(--primary-h) var(--saturation) 1%/0.07),0 24px 80px hsla(var(--primary-h) var(--saturation) 1%/0.09)}*,:after,:before{box-sizing:border-box;margin:0;padding:0}button{background:none;border:none;cursor:pointer}:link,:visited,a{color:inherit;text-decoration:none}ol,ul{-webkit-padding-start:2em;padding-inline-start:2em}button,input,textarea{border:none;color:inherit;font-family:inherit;font-size:inherit;line-height:inherit}html{background-color:var(--surface);color:var(--element);font-family:Work Sans,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Oxygen,Open Sans,Helvetica Neue;font-size:clamp(1rem,.9285714285714286rem + .35714285714285715vw,1.25rem);font-size:1rem;font-size:clamp(1rem,.95rem + .25vw,1.25rem);line-height:1.5;scroll-behavior:smooth;scroll-padding-block-start:3.5rem}body,html{height:100%}body{display:flex;flex-direction:column}:target:before{-webkit-margin-end:.25em;color:var(--primary);content:"➠";margin-inline-end:.25em}::-moz-selection{background-color:var(--primary-light);color:#000}::selection{background-color:var(--primary-light);color:#000}.sm-grid>.sm-zap{grid-column:content}.sm-zap{color:var(--border-color);position:relative;text-align:center}.sm-zap:after,.sm-zap:before{content:"";height:1px;position:absolute;top:50%;width:48%}.sm-zap:before{background-image:linear-gradient(90deg,var(--border-color),transparent);left:0}.sm-zap:after{background-image:linear-gradient(-90deg,var(--border-color),transparent);right:0}@font-face{font-display:swap;font-family:Work Sans;font-style:normal;font-weight:400;src:local(""),url(/assets/fonts/work-sans-v17-latin-regular.woff2) format("woff2"),url(/assets/fonts/work-sans-v17-latin-regular.woff) format("woff")}@font-face{font-display:swap;font-family:Work Sans;font-style:normal;font-weight:700;src:local(""),url(/assets/fonts/work-sans-v17-latin-700.woff2) format("woff2"),url(/assets/fonts/work-sans-v17-latin-700.woff) format("woff")}@font-face{font-display:swap;font-family:Work Sans;font-style:italic;font-weight:400;src:local(""),url(/assets/fonts/work-sans-v17-latin-italic.woff2) format("woff2"),url(/assets/fonts/work-sans-v17-latin-italic.woff) format("woff")}@font-face{font-display:swap;font-family:Work Sans;font-style:italic;font-weight:700;src:local(""),url(/assets/fonts/work-sans-v17-latin-700italic.woff2) format("woff2"),url(/assets/fonts/work-sans-v17-latin-700italic.woff) format("woff")}@font-face{font-display:swap;font-family:Archivo;font-style:normal;font-weight:700;src:local(""),url(/assets/fonts/archivo-v18-latin-700.woff2) format("woff2"),url(/assets/fonts/archivo-v18-latin-700.woff) format("woff")}@font-face{font-display:swap;font-family:Archivo;font-style:italic;font-weight:700;src:local(""),url(/assets/fonts/archivo-v18-latin-700italic.woff2) format("woff2"),url(/assets/fonts/archivo-v18-latin-700italic.woff) format("woff")}@font-face{font-display:swap;font-family:Archivo;font-weight:900;src:local(""),url(/assets/fonts/archivo-v18-latin-900.woff2) format("woff2"),url(/assets/fonts/archivo-v18-latin-900.woff) format("woff")}h1,h2,h3,h4,h5,h6{font-family:Archivo,sans-serif;font-weight:700;line-height:1.3;margin:3rem 0 1.38rem}h1{font-size:var(--h1);margin-top:0}h2{font-size:var(--h2)}h3{font-size:var(--h3)}h4{font-size:var(--h4)}h5{font-size:var(--h5)}h6{font-size:var(--h6)}[class*=grid]{display:grid}.sm-grid{grid-template-columns:[start] var(--gutter) [content-start] 1fr [content-end] var(--gutter) [end]}.sm-header-grid{grid-template-columns:[start] var(--gutter) 1fr 1fr [content-start] minmax(min(300px,100%),var(--post-width)) [content-end] 1fr 1fr var(--gutter) [end];margin-block:6rem 3rem;row-gap:2rem}.sm-content-grid{grid-template-columns:[start] var(--gutter) [full-start] 1fr [wide-start] 1fr [content-start] minmax(min(300px,100%),var(--content-width)) [content-end] 1fr [wide-end] 1fr [full-end] var(--gutter) [end]}.sm-basic-grid{gap:var(--gap);grid-template-columns:1fr;padding-block:3rem 6rem}.sm-grid>.sm-basic-grid{grid-column:content}@media (min-width:500px){.sm-basic-grid{grid-template-columns:1fr 1fr}}@media (min-width:768px){.sm-grid{grid-template-columns:[start] var(--gutter) 1fr [content-start] minmax(min(100%,600px),var(--width)) [content-end] 1fr var(--gutter) [end]}.sm-basic-grid{grid-template-columns:1fr 1fr 1fr}}.sm-navbar-container{background-color:var(--surface);left:0;position:relative;position:fixed;top:0;width:100%;z-index:10}.sm-navbar{align-items:center;display:flex;grid-column:content;justify-content:space-between;padding:.75rem 0}.sm-navbar button,.sm-search-button{box-sizing:content-box;font-size:var(--small);line-height:1}.sm-navbar button:not(.sm-overflow-button) svg,.sm-search-button svg{fill:var(--element);height:max(1rem,20px);width:max(1rem,20px)}.sm-navbar-left{align-items:baseline;display:flex;gap:1rem}.sm-site-title{font-family:var(--heading-typeface);font-size:1rem;font-weight:800;line-height:1.1;margin:0;overflow:hidden;white-space:nowrap}@media (min-width:768px){.sm-site-title{font-size:1.15rem}}.sm-navigation-container{align-items:flex-end;display:none;gap:.25rem}.sm-navbar .sm-navbar-menu-button{align-self:flex-end;line-height:0}@media (min-width:768px){.sm-navigation-container{display:flex}.sm-navbar-menu-button{display:none}}.sm-navigation{-webkit-padding-start:0;display:flex;gap:1rem;list-style-type:none;padding-inline-start:0}.sm-navigation-item{font-size:var(--small);letter-spacing:var(--letter-spacing);position:relative;text-transform:uppercase}.sm-navigation-item a:before{background-color:var(--primary);border-radius:var(--radius);bottom:0;-webkit-clip-path:inset(0 100% 0 0);clip-path:inset(0 100% 0 0);content:"";height:2px;left:0;position:absolute;transition:-webkit-clip-path .3s;transition:clip-path .3s;transition:clip-path .3s,-webkit-clip-path .3s;width:100%;z-index:-1}.sm-navigation-item a:hover:before{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}.sm-navbar-right{align-items:center;display:flex;gap:1rem}.sm-footer-container{-webkit-margin-before:auto;background-color:var(--surface-dark);margin-block-start:auto}.sm-footer{color:var(--element-dark);font-size:var(--small);grid-column:content;padding-block:2rem}.sm-footer>:not(:last-child){-webkit-margin-after:1em;margin-block-end:1em}@media (min-width:500px){.sm-footer{grid-gap:1rem var(--gap);-webkit-margin-after:0;display:grid;gap:1rem var(--gap);grid-template-columns:repeat(3,minmax(0,1fr));margin-block-end:0}.sm-footer>div:not(:last-child){-webkit-padding-end:1em;-webkit-margin-after:0;margin-block-end:0;padding-inline-end:1em}}.sm-footer-title{font-family:var(--heading-typeface);font-weight:700}.sm-footer-secondary-navigation ul{list-style:none;padding:0}.sm-footer input{background-color:transparent;border-bottom:1px solid var(--border-color);color:var(--primary);display:block;margin-block:.25em .75em;transition:border-color .3s;width:100%}.sm-footer input::-moz-placeholder{color:var(--element-light);font-size:var(--x-small);opacity:.5}.sm-footer input::placeholder{color:var(--element-light);font-size:var(--x-small);opacity:.5}.sm-footer .sm-button-simple{font-size:var(--x-small);font-weight:400}.sm-footer input.focus-visible{border-color:var(--element-light);outline:0}.sm-footer input:focus-visible{border-color:var(--element-light);outline:0}.sm-footer-meta{border-top:1px solid var(--border-color);color:var(--element-light);font-size:var(--x-small);grid-column:content;padding-block:2rem;text-align:center}.sm-footer-meta a{white-space:nowrap}.sm-home-accent{background-color:var(--surface-dark)}.sm-home-accent .sm-card,.sm-home-accent .sm-cta-card{border-color:var(--border-color-accent)}.sm-home-accent .sm-card .sm-tag{background-color:var(--surface-darker)}.home-template .sm-pagination{margin-block:var(--gap) 3rem}.sm-grid-home{grid-gap:var(--gap);display:grid;gap:var(--gap);grid-column:content;grid-template-columns:repeat(auto-fit,minmax(min(21.875rem,100%),1fr));padding:6rem 0}.sm-card-10.sm-card-vertical,.sm-card-11.sm-card-horizontal,.sm-card-12.sm-card-vertical,.sm-card-13.sm-card-vertical,.sm-card-14.sm-card-vertical,.sm-card-15.sm-card-vertical,.sm-card-2.sm-card-horizontal,.sm-card-3.sm-card-vertical,.sm-card-4.sm-card-vertical,.sm-card-5.sm-card-vertical,.sm-card-6.sm-card-vertical,.sm-card-7.sm-card-vertical,.sm-card-8.sm-card-vertical,.sm-card-9.sm-card-vertical{display:none}.sm-card-1.sm-card-horizontal .sm-card-link{flex-direction:column}.sm-card-1.sm-card-horizontal .sm-card-link>img{max-width:100%;width:100%}@media (min-width:768px){.sm-card-1.sm-card-horizontal .sm-card-link{flex-direction:row}.sm-card-1.sm-card-horizontal .sm-card-link>img{width:50%}.sm-grid-feature{grid-template-areas:"card-1 card-1 card-1 card-1" "card-2 card-2 card-3 card-3" "card-4 card-4 card-5 card-5";grid-template-columns:repeat(4,minmax(0,1fr))}.sm-grid-feature-left,.sm-grid-feature-right{grid-template-columns:repeat(3,minmax(0,1fr))}.sm-card-1{grid-area:card-1}.sm-card-2{grid-area:card-2}.sm-card-3{grid-area:card-3}.sm-card-4{grid-area:card-4}.sm-card-5{grid-area:card-5}.sm-grid-feature-left{grid-template-areas:"feature card-6 card-6" "feature card-7 card-7" "card-8 card-9 card-10"}.sm-grid-feature-right{grid-template-areas:"card-11 card-11 feature" "card-12 card-12 feature" "card-13 card-14 card-15"}.sm-card-10.sm-card-horizontal,.sm-card-11.sm-card-vertical,.sm-card-12.sm-card-vertical,.sm-card-13.sm-card-horizontal,.sm-card-14.sm-card-horizontal,.sm-card-15.sm-card-horizontal,.sm-card-2.sm-card-horizontal,.sm-card-3.sm-card-horizontal,.sm-card-4.sm-card-horizontal,.sm-card-5.sm-card-horizontal,.sm-card-6.sm-card-vertical,.sm-card-7.sm-card-vertical,.sm-card-8.sm-card-horizontal,.sm-card-9.sm-card-horizontal{display:none}.sm-card-10.sm-card-vertical,.sm-card-11.sm-card-horizontal,.sm-card-12.sm-card-horizontal,.sm-card-13.sm-card-vertical,.sm-card-14.sm-card-vertical,.sm-card-15.sm-card-vertical,.sm-card-2.sm-card-vertical,.sm-card-3.sm-card-vertical,.sm-card-4.sm-card-vertical,.sm-card-5.sm-card-vertical,.sm-card-6.sm-card-horizontal,.sm-card-7.sm-card-horizontal,.sm-card-8.sm-card-vertical,.sm-card-9.sm-card-vertical{display:inline;display:initial}.sm-feature-card{grid-area:feature}.sm-card-6{grid-area:card-6}.sm-card-7{grid-area:card-7}.sm-card-8{grid-area:card-8}.sm-card-9{grid-area:card-9}.sm-card-10{grid-area:card-10}.sm-card-11{grid-area:card-11}.sm-card-12{grid-area:card-12}.sm-card-13{grid-area:card-13}.sm-card-14{grid-area:card-14}.sm-card-15{grid-area:card-15}}.sm-post-title{-webkit-margin-after:1rem;margin-block-end:1rem}.sm-post-excerpt{color:var(--element-light);margin-inline:auto;max-width:66ch;opacity:.75}.sm-post-author-block{align-items:center;display:flex;gap:.5rem;justify-content:center;text-align:left}.sm-post-author-block p{text-align:left}.sm-post-author-profile-image{line-height:1}.sm-post-author-profile-image:empty{display:none}.sm-post-author-profile-image:empty+div{text-align:center}.sm-post-author-profile-image img{border:1px solid var(--border-color);border-radius:50%;height:3rem;-o-object-fit:cover;object-fit:cover;position:relative;width:3rem;z-index:5}.sm-post-author-profile-image img+img{-webkit-margin-end:-1rem;margin-inline-end:-1rem;transform:translateX(-1rem);z-index:4}.sm-post-author-profile-image img:nth-of-type(3){z-index:3}.sm-post-author-profile-image img:nth-of-type(4){z-index:2}.sm-post-author-profile-image img:nth-of-type(5){z-index:1}.sm-post-meta{color:var(--element-light);display:flex;flex-wrap:wrap;font-size:var(--x-small);gap:0 .5em;letter-spacing:var(--letter-spacing);opacity:.8;text-transform:uppercase}.sm-post-meta>:not(:last-child):after{-webkit-margin-start:.5em;content:"\002301";margin-inline-start:.5em}.sm-post-meta>a:hover:after{color:var(--element-light)}.sm-post-save-button{align-items:center;display:flex;text-transform:uppercase;transition:color .3s}.sm-post-save-button.sm-love-button{transform:none}.sm-post-meta a:hover,.sm-post-save-button:hover{color:var(--primary)}.sm-post-save-button span{align-items:center;display:flex;gap:3px}.sm-post-save-button.sm-love-button.sm-love-toggle .sm-heart-fill-icon{display:flex}.sm-post-save-button svg{fill:currentcolor;height:1em;width:1em}.sm-related-posts{grid-column:content;margin-block:1rem 6rem}.sm-related-posts h2{-webkit-margin-before:1rem;margin-block-start:1rem}.sm-related-posts-grid-container{gap:var(--gap);grid-template-columns:1fr}@media (min-width:500px){.sm-related-posts-grid-container{grid-template-columns:1fr 1fr}.sm-related-posts-grid-container>article:last-child{display:none}}@media (min-width:768px){.sm-related-posts-grid-container{grid-template-columns:repeat(3,1fr)}.sm-related-posts-grid-container>article:last-child{display:inline;display:initial}}.sm-related-posts .sm-card{grid-area:auto}#ghost-comments-root{grid-column:content}.sm-post-content{-webkit-margin-after:3rem;margin-block-end:3rem}.sm-post-content>*{-webkit-margin-after:1rem;grid-column:content;margin-block-end:1rem}.sm-post-content a{text-decoration:underline;text-decoration-thickness:2px;transition:text-decoration-color .1s}.sm-post-content a:hover{text-decoration-color:var(--primary)}.sm-post-content hr{background-color:var(--border-color);border:none;height:1px}.sm-table-wrapper{border:1px solid var(--border-color);border-radius:var(--radius)}.sm-post-content table{border-collapse:collapse;width:100%}.sm-post-content tbody tr{border-top:1px solid var(--border-color);transition:background-color .3s}.sm-post-content tbody tr:hover{background-color:var(--surface-dark)}.sm-post-content thead th{font-family:var(--heading-typeface);padding:var(--radius);text-align:left}.sm-post-content tbody td{font-size:var(--small);padding:var(--radius)}.sm-post-content code:not([class*=language]){background-color:var(--border-color);border-radius:4px;color:var(--element-light);font-family:var(--mono-typeface);font-size:var(--small);padding:.15em .25em}.sm-post-content li{line-height:inherit}.sm-post-content li:not(:last-child){-webkit-margin-after:.5em;margin-block-end:.5em}.sm-search{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background-color:var(--surface-85);display:none;height:100%;left:0;overflow:auto;position:fixed;top:0;width:100%;z-index:35}.sm-search-form{-webkit-margin-before:1.5rem;grid-auto-rows:min-content;margin-block-start:1.5rem}.sm-show-search{display:inline;display:initial}.sm-search-form-container{grid-column:content;margin-block:2rem}.sm-search-input-container{position:relative}.sm-clear-search-button{box-sizing:content-box;display:none;height:1em;line-height:1;position:absolute;right:.75em;top:50%;transform:translateY(-50%);width:1em}.sm-clear-search-button.sm-show-clear-button{display:inline;display:initial}.sm-clear-search-button svg{fill:var(--element-light);height:1em;transition:fill .3s;width:1em}.sm-clear-search-button:hover svg{fill:var(--secondary)}.sm-search-form input{background-color:var(--surface-dark);border:1px solid transparent;border-radius:var(--radius);caret-color:var(--secondary);color:var(--element);padding:var(--button-padding);width:100%}.sm-search-form input::-moz-placeholder{color:var(--element-dark)}.sm-search-form input::placeholder{color:var(--element-dark)}.sm-search-form input.focus-visible{border-color:var(--primary);outline:0}.sm-search-form input:focus-visible{border-color:var(--primary);outline:0}.sm-search-results-container{-webkit-padding-after:3rem;grid-column:content;padding-block-end:3rem}.sm-search-result{font-family:var(--heading-typeface);font-size:var(--h3);font-weight:700;line-height:1.1}.sm-search-result-link{-webkit-margin-after:1rem;display:block;margin-block-end:1rem;transition:color .3s;width:-moz-fit-content;width:fit-content}.sm-search-result-link:focus,.sm-search-result-link:hover{color:var(--secondary);outline:0}.sm-matching-terms{color:var(--surface);display:flex;font-size:var(--small);gap:.5em}.sm-matching-terms span{background-color:var(--primary);border-radius:var(--radius);opacity:.75;padding:0 .25em}.sm-author-profile-image{border:1px solid var(--border-color);border-radius:50%;box-shadow:var(--box-shadow);height:6.5rem;width:6.5rem}.sm-author-location{-webkit-margin-after:1rem;align-items:center;display:flex;gap:.35em;justify-content:center;margin-block-end:1rem}.sm-author-location svg{fill:var(--element-light);height:1em;width:1em}.sm-author-socials{-webkit-margin-before:2rem;display:flex;gap:1rem;justify-content:center;margin-block-start:2rem}.sm-author-posts-container>h2 span{display:none;vertical-align:middle}.paged .sm-author-posts-container>h2 span{display:inline;display:initial}.sm-author-posts-container>*{grid-column:content}.sm-author-posts-container>h2{margin:3rem 0 0}.sm-author-posts-container .sm-basic-grid:last-child{-webkit-padding-after:3rem;padding-block-end:3rem}.sm-404{grid-column:content}.sm-404 a{text-decoration:underline}.page-template .sm-grid>*{grid-column:content}.sm-card{position:relative;transition:background 3s}.sm-card,.sm-card:before{border-radius:var(--radius)}.sm-card:before{box-shadow:var(--box-shadow);content:"";height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .3s;width:100%}.sm-card:focus,.sm-card:hover{outline:none}.sm-card:focus:before,.sm-card:hover:before{opacity:1}.sm-card-link{border-radius:var(--radius);display:flex;flex-direction:column;height:100%;justify-content:space-between;overflow:hidden;position:relative}.sm-card-link,.sm-cta-card,.sm-tags-card{background-color:var(--surface-light)}.sm-card img{aspect-ratio:16/9;border-top-left-radius:var(--radius-small);border-top-right-radius:var(--radius-small);height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.sm-card h2{font-size:2rem;line-height:1.1;margin:0}.sm-card h2:not(.large){font-size:1.35rem}.sm-card-body{display:flex;flex-direction:column;height:inherit;justify-content:space-between;padding:1rem}.sm-card .sm-excerpt{-webkit-margin-before:.75rem;font-size:.875rem;margin-block-start:.75rem}.sm-card-footer{-webkit-margin-before:2rem;display:flex;gap:1rem;justify-content:space-between;margin-block-start:2rem}.sm-card .sm-tag{background-color:var(--border-color);border-radius:var(--radius);display:inline-block;letter-spacing:var(--letter-spacing);max-width:70%;overflow:hidden;padding:0 .75em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.sm-card .sm-reading-time,.sm-card .sm-tag{color:var(--element-light);font-size:var(--x-small)}@media (min-width:768px){.sm-card-horizontal .sm-card-link{flex-direction:row}.sm-grid-feature .sm-card-horizontal picture{max-width:50%}.sm-grid-feature .sm-card-horizontal img{max-width:none}.sm-card-horizontal img{border-bottom-right-radius:0;border-top-right-radius:0;max-width:12.5rem}}.sm-card-horizontal .sm-card-body{display:flex;flex:1;flex-direction:column;justify-content:space-between}.sm-card-1 .sm-card-horizontal .sm-card-link img{flex:1;width:50%}.sm-feature-card{border-radius:var(--radius)}.sm-feature-card h2{margin-top:0}.sm-cta-card{position:relative}.sm-cta-card picture+form{-webkit-margin-before:2rem;height:auto;margin-block-start:2rem}.sm-cta-card img{display:block;height:4rem;left:50%;margin-inline:auto;position:absolute;top:0;transform:translate(-50%,-50%);width:4rem}.sm-cta-card form{align-items:center;height:100%;justify-content:space-between;padding:1.5rem 1rem;text-align:center}.sm-cta-card form,.sm-cta-copy{display:flex;flex-direction:column}.sm-cta-card h2{-webkit-text-fill-color:transparent;background:linear-gradient(45deg,var(--primary),var(--secondary));-webkit-background-clip:text;background-clip:text;line-height:1.1;margin:0 0 .5rem}.sm-cta-card p{font-size:1.2rem}.sm-cta-card input{-webkit-margin-before:2rem;background-color:transparent;border-bottom:3px solid var(--border-color);color:var(--element);margin-block-start:2rem;padding:.25em;text-align:center;transition:border-color .3s;width:100%}.sm-cta-card input.focus-visible{border-color:var(--element);outline:none}.sm-cta-card input:focus-visible{border-color:var(--element);outline:none}.sm-cta-card input::-moz-placeholder{color:var(--element-light);opacity:.5;text-align:center}.sm-cta-card input::placeholder{color:var(--element-light);opacity:.5;text-align:center}.sm-cta-card button{-webkit-margin-before:2rem;margin-block-start:2rem}.sm-tags-card{display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}.sm-tags-card>*{flex:1}.sm-tags-card h2{margin:1rem}.sm-tags-card>h2>a{transition:color var(--transition)}.sm-tags-card>h2>a:hover{color:var(--primary)}.sm-tags-card>a{border-bottom:1px solid var(--border-color);color:var(--element-light);font-weight:700;letter-spacing:var(--letter-spacing);padding:1rem;text-transform:uppercase;transition:background-color .1s,color .1s}.sm-tags-card>a:first-of-type{border-top:1px solid var(--border-color)}.sm-tags-card>a:last-child{border-bottom:none}.sm-tags-card span{font-feature-settings:"tnum";float:right;font-variant-numeric:tabular-nums}.sm-tags-card>a:hover{background-color:var(--secondary);color:var(--surface)}.sm-tags-card>a:nth-of-type(2):hover{background-color:hsla(var(--complementary-color) var(--saturation) var(--lightness)/.75)}.sm-tags-card>a:nth-of-type(3):hover{background-color:hsla(var(--complementary-color) var(--saturation) var(--lightness)/.5);color:var(--element)}.sm-tags-card>a:nth-of-type(4):hover{background-color:hsla(var(--complementary-color) var(--saturation) var(--lightness)/.25);color:var(--element)}.sm-tags-card>a:nth-of-type(5):hover{background-color:hsla(var(--complementary-color) var(--saturation) var(--lightness)/.05);color:var(--element)}:root[data-color-pref=dark] .sm-tags-card>a:nth-of-type(2):hover{background-color:hsla(var(--complementary-color) var(--saturation) calc(var(--lightness)*1.5)/.75);color:var(--element)}:root[data-color-pref=dark] .sm-tags-card>a:nth-of-type(3):hover{background-color:hsla(var(--complementary-color) var(--saturation) calc(var(--lightness)*1.5)/.5);color:var(--element)}:root[data-color-pref=dark] .sm-tags-card>a:nth-of-type(4):hover{background-color:hsla(var(--complementary-color) var(--saturation) calc(var(--lightness)*1.5)/.25);color:var(--element)}:root[data-color-pref=dark] .sm-tags-card>a:nth-of-type(5):hover{background-color:hsla(var(--complementary-color) var(--saturation) calc(var(--lightness)*1.5)/.05);color:var(--element)}.sm-card .sm-love-button{bottom:1rem;position:absolute;right:1rem}.sm-card .sm-love-button svg{fill:var(--primary);height:1rem;width:1rem}.sm-button,.sm-button-simple,.sm-form-button,.sm-icon-button{border-radius:var(--radius);font-size:var(--small);font-weight:700;letter-spacing:var(--letter-spacing);line-height:1;padding:var(--button-padding);text-transform:uppercase}.sm-button,.sm-form-button{background-color:var(--primary);color:var(--button-text)}.sm-icon-button{align-items:center;background-color:hsla(var(--primary-h) var(--saturation) var(--lightness)/.15);color:var(--element);display:flex;gap:1em;text-align:center;transition:background-color .3s;white-space:nowrap}.sm-icon-button:hover{background-color:hsla(var(--primary-h) var(--saturation) var(--lightness)/.25)}.sm-icon-button svg{fill:var(--element);height:1em;width:1em}.sm-circle-icon-button{border-radius:50%;box-sizing:content-box;height:1em;line-height:1;padding:.25em;transition:background-color .3s;width:1em}.sm-circle-icon-button svg{fill:var(--element-light);height:1em;width:1em}.sm-circle-icon-button:not([disabled]):hover{background-color:var(--border-color)}.sm-circle-icon-button[disabled]{opacity:.5}.sm-button-simple{align-items:center;border:1px solid var(--border-color);display:flex;gap:1em;transition:background-color .3s}.sm-button-simple svg{fill:var(--element-light);height:1em;width:1em}.sm-button-simple.focus-visible,.sm-button-simple:hover{background-color:var(--border-color);outline:none}.sm-button-simple:focus-visible,.sm-button-simple:hover{background-color:var(--border-color);outline:none}.sm-circle-close-button{border-radius:50%;box-sizing:content-box;height:max(1rem,30px);line-height:1;padding:.25rem;position:absolute;right:1rem;top:1rem;transition:background-color .3s;width:max(1rem,30px)}.sm-circle-close-button:hover{background-color:var(--border-color)}.sm-circle-close-button svg{fill:var(--element);height:max(1rem,30px);width:max(1rem,30px)}.sm-overflow-container{line-height:1;position:relative}.sm-overflow-button{align-items:center;border-radius:50%;box-sizing:content-box;display:flex;height:1rem;justify-content:center;line-height:0;padding:.25rem;transform:translateY(.15em);transition:background-color var(--transition);width:1rem}.sm-overflow-button svg{fill:var(--element);display:inline-block;height:1em;line-height:0;width:1em}.sm-overflow-menu{background-color:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius);box-shadow:var(--box-shadow);display:none;left:50%;max-width:75vw;position:absolute;top:2rem;transform:translate(-50%);z-index:20}.sm-overflow-menu>div{flex-direction:column;gap:1rem;justify-content:center;padding:1rem}.sm-overflow-buttons{display:flex}.sm-overflow-button:hover{background-color:var(--border-color)}.sm-overflow-menu:before{border-color:transparent transparent var(--border-color) transparent;border-style:solid;border-width:.5rem;content:"";left:50%;pointer-events:none;position:absolute;top:0;transform:translate(-50%,-100%)}.sm-overflow-follow,.sm-overflow-saves,.sm-overflow-share,[data-color-pref=dark] .sm-dark-mode,[data-color-pref=light] .sm-light-mode{display:none}.sm-overflow-back{align-items:center;background-color:var(--surface-light);border-radius:50%;box-shadow:var(--box-shadow);box-sizing:content-box;display:flex;height:1rem;justify-content:center;left:-.5em;line-height:0;padding:.25em;position:absolute;top:.5em;transform:translate(-100%,50%);width:1rem}.sm-overflow-back svg{display:inline-block;height:inherit;width:inherit}.sm-show{display:flex}.sm-hide{display:none}.sm-pagination{align-items:center;border:1px solid var(--border-color);border-radius:var(--radius);display:flex;font-size:var(--small);gap:var(--gap);grid-column:content;justify-content:center;padding:var(--button-padding)}.sm-pagination,.sm-pagination-holder{margin-block:6rem 3rem}.sm-current,.sm-pagination-item:hover{color:var(--primary)}.sm-prev{-webkit-margin-end:auto;margin-inline-end:auto}.sm-next{-webkit-margin-start:auto;margin-inline-start:auto}.sm-nav-disabled{opacity:.3}.sm-circle-icon-button.sm-nav-disabled:hover{background-color:transparent}.sm-error,.sm-footer-error,.sm-footer-loading,.sm-footer-success,.sm-loading,.sm-success,[data-members-form].error .sm-default,[data-members-form].error .sm-footer-default,[data-members-form].loading .sm-default:not(.sm-cta-copy),[data-members-form].loading .sm-footer-default:not(.sm-footer-default-text),[data-members-form].success .sm-default,[data-members-form].success .sm-footer-default{display:none}[data-members-form].error .sm-error,[data-members-form].error .sm-footer-error,[data-members-form].loading .sm-footer-loading,[data-members-form].loading .sm-loading,[data-members-form].success .sm-footer-success,[data-members-form].success .sm-success{display:flex}.sm-footer-loading svg,.sm-loading svg{animation:sm-spin 1s linear infinite}@keyframes sm-spin{to{transform:rotate(1turn)}}.sm-nav-menu-container{background-color:var(--surface);display:none;height:100%;height:100vh;justify-content:center;left:0;overflow-y:auto;padding:3rem var(--gap);position:fixed;text-align:center;top:0;width:100%;z-index:35}.sm-nav-menu-container.sm-show-menu{display:flex}.sm-nav-menu-navigation-container{display:flex;flex-direction:column;gap:1rem;height:100vh;margin-bottom:3rem}.sm-nav-menu-navigation-container .sm-navigation{align-items:center;flex-direction:column}.sm-nav-menu-header{color:var(--element-light);font-size:var(--small);letter-spacing:var(--letter-spacing);margin-block:2rem 1rem;opacity:.8;text-transform:uppercase}.sm-nav-menu-navigation-container .sm-navigation a{font-size:1.25rem;font-weight:700}.sm-nav-menu-section{display:flex;flex-direction:column;flex-wrap:wrap;gap:var(--gap);justify-content:center}.sm-nav-menu-section :where(button,a){justify-content:center}.sm-nav-menu-navigation-container>.sm-icon-button{-webkit-margin-before:2rem;margin-block-start:2rem}.sm-nav-menu-grid-container{gap:var(--gap);grid-template-columns:1fr 1fr;justify-content:space-between;width:100%}.sm-nav-menu-navigation-container :where(.sm-dark-mode,.sm-light-mode){-webkit-margin-after:3rem;justify-content:center;margin-block-end:3rem}.sm-header-grid>*{grid-column:content;text-align:center}.sm-header-title{font-weight:900;margin:0}.sm-header-excerpt{color:var(--element-light);margin-inline:auto;max-width:66ch;opacity:.85}.sm-header-image{aspect-ratio:16/9;width:100%}.sm-header-image figcaption{-webkit-margin-before:3px;font-size:var(--small);margin-block-start:3px;opacity:.8}.sm-header-image img{border-radius:var(--radius);display:block;height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.sm-tag-count{-webkit-margin-start:1em;background-color:var(--border-color);border-radius:var(--radius);color:var(--element-light);display:inline-block;font-family:Work Sans,sans-serif;font-size:var(--x-small);font-weight:400;letter-spacing:var(--letter-spacing);line-height:1;margin-inline-start:1em;padding:var(--button-padding);text-transform:uppercase;translate:0 -.5em}.sm-love-button{display:inline-block;transform:translateY(.25em)}.sm-love-button .sm-heart-fill-icon,.sm-love-button.sm-love-toggle .sm-heart-outline-icon{display:none}.sm-love-button.sm-love-toggle .sm-heart-fill-icon{display:inline-block}.sm-overflow-articles{grid-gap:var(--gap);display:grid;gap:var(--gap);max-width:100%;min-width:18rem}.sm-saves{border-radius:var(--radius);padding:.5em 1em}.sm-saves progress::-webkit-progress-bar{background-color:var(--primary-light);border-radius:var(--radius);opacity:.5}.sm-saves progress::-webkit-progress-value{background-color:var(--primary);border-radius:var(--radius);overflow:hidden}.sm-saves-meta{align-items:center;display:flex;gap:var(--gap);justify-content:space-between}.sm-saves-meta button{font-size:1rem;transform:none}.sm-saves-title{font-family:var(--heading-typeface);font-weight:700;text-align:left;transition:color .3s}.sm-saves-title:hover{color:var(--primary)}.sm-saves-date{font-size:var(--x-small);margin-block:.5rem 0;text-align:left}.sm-saves button span{line-height:0}.sm-hero{-webkit-padding-after:3rem;min-height:60vmin;padding-block-end:3rem;position:relative}.sm-hero+.sm-grid .sm-grid-home{-webkit-padding-before:3rem;padding-block-start:3rem}.sm-hero-inner{-webkit-padding-before:6rem;grid-column:content;height:100%;padding-block-start:6rem}@media (min-width:768px){.sm-hero-inner{grid-gap:var(--gap);align-items:center;display:grid;gap:var(--gap);grid-template-columns:repeat(2,minmax(0,1fr))}}.sm-hero-left{-webkit-padding-end:1rem;display:flex;flex-direction:column;height:100%;justify-content:center;padding-inline-end:1rem;position:relative;text-align:center;z-index:1}.sm-hero-subtitle{-webkit-margin-after:1rem;-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;background-image:linear-gradient(45deg,var(--primary),var(--secondary));font-family:var(--heading-typeface);font-size:var(--h1);font-weight:900;line-height:1.2;margin-block-end:1rem}@supports (color:color(display-p3 1 0.5 0)){.sm-hero-subtitle{background-image:linear-gradient(45deg,color(display-p3 var(--r) var(--g) var(--b)),color(display-p3 var(--cr) var(--cg) var(--cb)))}:root[data-color-pref=dark] .sm-hero-subtitle{filter:brightness(1.5)}}.sm-hero-description{color:var(--element-dark);font-size:1.15rem}.sm-hero-bg{height:100%;mix-blend-mode:multiply;opacity:.25;position:absolute}.sm-hero-bg,.sm-hero-img img{display:block;-o-object-fit:cover;object-fit:cover;width:100%}.sm-hero-img img{border-radius:var(--radius);height:auto;margin:0 auto}.sm-hero-right{display:none}.sm-hero-button-container:not(:empty){-webkit-margin-before:2rem;display:flex;gap:1rem;justify-content:center;margin-block-start:2rem}.sm-hero-cta-2{background-color:transparent;color:var(--element);position:relative}.sm-hero-cta-2 svg{height:100%;left:0;position:absolute;top:40%;width:100%;z-index:-1}@media (min-width:768px){.sm-hero-bg{display:none}.sm-hero-img{max-height:50vmin}.sm-hero-left{text-align:start}.sm-hero-right{display:inline;display:initial}.sm-hero-button-container:not(:empty){justify-content:flex-start}}.sm-form{border:1px solid var(--border-color);border-radius:var(--radius);display:flex;flex-direction:column;margin:2rem auto;max-width:var(--content-width);padding:var(--gap);width:100%}.sm-form input,.sm-form textarea{-webkit-margin-after:1rem;background-color:var(--surface);border:1px solid var(--border-color);border-radius:var(--radius);color:var(--element);margin-block-end:1rem;padding:var(--button-padding)}.sm-form textarea{height:10rem;resize:none}.sm-form input.focus-visible,.sm-form textarea.focus-visible{border-color:var(--secondary);outline:none}.sm-form input:focus-visible,.sm-form textarea:focus-visible{border-color:var(--secondary);outline:none}.sm-form button.focus-visible,.sm-form button:hover{background-color:var(--secondary);outline:none}.sm-form button:focus-visible,.sm-form button:hover{background-color:var(--secondary);outline:none}.sm-gradient-divider{background-image:linear-gradient(0deg,var(--surface),var(--surface-dark));height:5rem}.sm-gradient-divider-reverse{background-image:linear-gradient(180deg,var(--surface),var(--surface-dark));height:5rem}.sm-post-toc{bottom:28px;isolation:isolate;left:28px;pointer-events:none;position:fixed;transition:opacity .5s;z-index:2}.sm-post-toc-btn{--conic-gradient:var(--surface-light) 0deg 0%,var(--surface-light) 0deg 100%;background:var(--surface-light);border-radius:50%;box-shadow:0 4px 1rem hsl(var(--primary-h) var(--saturation) 9%/.1);box-sizing:content-box;height:30px;padding:.75rem;pointer-events:all;position:relative;transition:color var(--transition);width:30px}.sm-post-toc-btn:before{background-image:conic-gradient(var(--conic-gradient));border-radius:50%;content:"";inset:-3px;opacity:.5;position:absolute;transition:background-image var(--transition);z-index:-1}.sm-post-toc-btn.focus-visible,.sm-post-toc-btn:hover{color:var(--primary)}.sm-post-toc-btn:focus-visible,.sm-post-toc-btn:hover{color:var(--primary)}.sm-post-toc-btn svg{fill:currentcolor;height:100%;width:100%}.sm-post-toc-contents{-webkit-margin-after:1rem;align-items:flex-start;background:var(--surface-light);border-radius:0 var(--radius) var(--radius) var(--radius);display:flex;filter:drop-shadow(0 4px 1rem hsl(var(--primary-h) var(--saturation) 9%/.1));flex-direction:column;gap:.5rem;margin-block-end:1rem;max-width:min(500px,calc(100vw - 56px));opacity:0;padding:.75rem;pointer-events:none;position:relative;scale:0;transform-origin:bottom left;transition:scale .2s ease-out,opacity .2s ease-out .1s,translate .2s ease-out .1s;translate:15px 10%}.sm-post-toc-contents-title{background:var(--primary-dark);border-radius:var(--radius) var(--radius) 0 0;color:var(--surface-dark);font-size:var(--x-small);left:0;letter-spacing:var(--letter-spacing);padding:.15rem .75rem;position:absolute;text-transform:uppercase;top:0;translate:0 -100%}.toc-show{opacity:1;pointer-events:all;scale:1;transition:scale .2s ease-in,opacity .2s ease-in,translate .2s ease-in;translate:0 0}.sm-toc-h3{-webkit-padding-start:.5rem;padding-inline-start:.5rem}.sm-toc-h4{-webkit-padding-start:1rem;padding-inline-start:1rem}.sm-toc-h5{-webkit-padding-start:1.5rem;padding-inline-start:1.5rem}.sm-toc-h6{-webkit-padding-start:2rem;padding-inline-start:2rem}.sm-toc-link{transition:color var(--transition)}.sm-toc-active,.sm-toc-link:focus,.sm-toc-link:hover{color:var(--primary)}.toc-hide{opacity:0}.sm-toc-icon-close{display:none}.toc-show~.sm-post-toc-btn .sm-toc-icon-close{display:inline;display:initial}.toc-show~.sm-post-toc-btn .sm-toc-icon{display:none}blockquote:not(.kg-blockquote-alt){-webkit-padding-start:2rem;border-left:3px solid var(--border-color);padding-inline-start:2rem}.kg-blockquote-alt{font-family:var(--heading-typeface);line-height:1.2}.kg-blockquote-alt:after,.kg-blockquote-alt:before{color:var(--secondary)}.kg-blockquote-alt:before{-webkit-padding-end:.1em;content:"\002301";padding-inline-end:.1em}.kg-blockquote-alt:after{content:"\002301"}.kg-card{margin-inline:auto;width:100%}.kg-blockquote-alt,.kg-card{margin-block:1rem 2rem}.kg-image,.sm-post-content img{display:block;height:auto;margin-inline:auto;max-width:100%}.sm-post-content figcaption{font-size:var(--small);padding:.25rem;text-align:center}.kg-embed-card,.kg-gallery-card,.kg-width-wide{grid-column:content}.kg-embed-card .twitter-tweet{margin-inline:auto}@media (min-width:768px){.kg-gallery-card,.kg-width-wide{grid-column:wide}}.kg-width-full{grid-column:start/end}.kg-embed-card [src*=vimeo],.kg-embed-card [src*=youtube]{aspect-ratio:16/9;height:auto;width:100%}.kg-embed-card iframe{margin-inline:auto!important}.medium-zoom-overlay{z-index:10}.medium-zoom-image{z-index:11} +/* Abstracts */ +:root { + /* Space */ + --tablet: 768px; + --laptop: 992px; + --desktop: 1200px; + --widescreen: 1400px; + --gap: 1rem; + --gutter: max(20px, 3vw); + --width: 992px; + --post-width: 768px; + --content-width: 700px; + --radius: 0.5em; + --radius-small: 3px; + + /* Type */ + --heading-typeface: 'Archivo', sans-serif; + --mono-typeface: 'JetBrains Mono', 'Cascadia Code', 'Fira Code', 'Menlo', + monospace; + --letter-spacing: 0.2px; + --h1: 2.488rem; + --h2: 2.074rem; + --h3: 1.728rem; + --h4: 1.44rem; + --h5: 1.2rem; + --h6: 1rem; + --small: 0.833rem; + --x-small: 0.694rem; + --xx-small: 0.579rem; + --button-padding: 0.5em 0.75em; + + --transition: 0.3s; +} +/* Color scheme */ +:root[data-color-pref='light'] { + --primary: hsl(var(--primary-h) var(--saturation) var(--lightness)); + --primary-light: hsl( + var(--primary-h) var(--saturation) calc(var(--lightness) * 1.5) + ); + --primary-dark: hsl( + var(--primary-h) var(--saturation) calc(var(--lightness) * 0.5) + ); + --secondary: hsl( + var(--complementary-color) var(--saturation) var(--lightness) + ); + --secondary-light: hsl( + var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5) + ); + --secondary-dark: hsl( + var(--complementary-color) var(--saturation) calc(var(--lightness) * 0.5) + ); + + --surface: hsl(var(--primary-h) 10% 96%); + --surface-85: hsla(var(--primary-h) 10% 96% / 0.85); + --surface-light: hsl(var(--primary-h) 10% 100%); + --surface-dark: hsl(var(--primary-h) 10% 89%); + --surface-darker: hsl(var(--primary-h) 10% 82%); + + --element: hsl(var(--primary-h) 10% 5%); + --element-light: hsl(var(--primary-h) 10% 35%); + --element-dark: hsl(var(--primary-h) 10% 1%); + + --border-color: hsla(var(--primary-h) 10% 82% / 0.5); + --border-color-accent: hsla(var(--primary-h) 10% 72% / 0.5); + --button-text: hsl(var(--primary-h) 10% 100%); + + --box-shadow: 0 0.7px 2.2px hsla(var(--primary-h) var(--saturation) 9% / 0.02), + 0 1.6px 5.3px hsla(var(--primary-h) var(--saturation) 9% / 0.028), + 0 3px 10px hsla(var(--primary-h) var(--saturation) 9% / 0.035), + 0 5.4px 17.9px hsla(var(--primary-h) var(--saturation) 9% / 0.042), + 0 10px 33.4px hsla(var(--primary-h) var(--saturation) 9% / 0.05), + 0 24px 80px hsla(var(--primary-h) var(--saturation) 9% / 0.07); +} +:root[data-color-pref='dark'] { + /* Color */ + --primary: hsl( + var(--primary-h) var(--saturation) calc(var(--lightness) * 1.5) + ); + --primary-light: hsl( + var(--primary-h) var(--saturation) calc(var(--lightness) * 1.75) + ); + --primary-dark: hsl( + var(--primary-h) var(--saturation) calc(var(--lightness) * 1.15) + ); + + --secondary: hsl( + var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5) + ); + --secondary-light: hsl( + var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.75) + ); + --secondary-dark: hsl( + var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.15) + ); + + --element: hsl(var(--primary-h) 10% 96%); + --element-light: hsl(var(--primary-h) 10% 100%); + --element-dark: hsl(var(--primary-h) 10% 89%); + --element-darker: hsl(var(--primary-h) 10% 82%); + + --surface: hsl(var(--primary-h) 10% 12%); + --surface-85: hsla(var(--primary-h) 10% 15% / 0.85); + --surface-light: hsl(var(--primary-h) 10% 18%); + --surface-dark: hsl(var(--primary-h) 10% 8%); + --surface-darker: hsl(var(--primary-h) 10% 3%); + + --border-color: hsla(var(--primary-h) 10% 35% / 0.5); + --border-color-accent: hsla(var(--primary-h) 10% 25% / 0.5); + --button-text: hsl(var(--primary-h) 10% 3%); + + --box-shadow: 0 0.7px 2.2px hsla(var(--primary-h) var(--saturation) 1% / 0.02), + 0 1.6px 5.3px hsla(var(--primary-h) var(--saturation) 1% / 0.048), + 0 3px 10px hsla(var(--primary-h) var(--saturation) 1% / 0.055), + 0 5.4px 17.9px hsla(var(--primary-h) var(--saturation) 1% / 0.062), + 0 10px 33.4px hsla(var(--primary-h) var(--saturation) 1% / 0.07), + 0 24px 80px hsla(var(--primary-h) var(--saturation) 1% / 0.09); +} +/* Base */ +*, +*:before, +*:after { + box-sizing: border-box; + padding: 0; + margin: 0; +} +button { + cursor: pointer; + background: none; + border: none; +} +a, +:link, +:visited { + color: inherit; + text-decoration: none; +} +ul, +ol { + -webkit-padding-start: 2em; + padding-inline-start: 2em; +} +input, +textarea, +button { + font-family: inherit; + font-size: inherit; + line-height: inherit; + color: inherit; + border: none; +} +html { + height: 100%; + font-family: 'Work Sans', system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, + 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', + sans-serif; + + font-size: 1rem; + font-size: clamp( + 1rem, + 0.9285714285714286rem + 0.35714285714285715vw, + 1.25rem + ); + font-size: 1rem; + font-size: clamp(1rem, 0.95rem + 0.25vw, 1.25rem); + line-height: 1.5; + color: var(--element); + background-color: var(--surface); + scroll-behavior: smooth; + scroll-padding-block-start: 3.5rem; +} +body { + display: flex; + flex-direction: column; + height: 100%; +} +:target::before { + -webkit-margin-end: 0.25em; + margin-inline-end: 0.25em; + color: var(--primary); + content: '➠'; +} +::-moz-selection { + color: #000; + background-color: var(--primary-light); +} +::selection { + color: #000; + background-color: var(--primary-light); +} +.sm-grid > .sm-zap { + grid-column: content; +} +.sm-zap { + position: relative; + color: var(--border-color); + text-align: center; +} +.sm-zap::before, +.sm-zap::after { + position: absolute; + top: 50%; + width: 48%; + height: 1px; + content: ''; +} +.sm-zap::before { + left: 0; + background-image: linear-gradient(90deg, var(--border-color), transparent); +} +.sm-zap::after { + right: 0; + background-image: linear-gradient(-90deg, var(--border-color), transparent); +} +/* work-sans-regular - latin */ +@font-face { + font-family: 'Work Sans'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: local(''), + url('/assets/fonts/work-sans-v17-latin-regular.woff2') format('woff2'), + /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('/assets/fonts/work-sans-v17-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +/* work-sans-700 - latin */ +@font-face { + font-family: 'Work Sans'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local(''), + url('/assets/fonts/work-sans-v17-latin-700.woff2') format('woff2'), + /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('/assets/fonts/work-sans-v17-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +/* work-sans-italic - latin */ +@font-face { + font-family: 'Work Sans'; + font-style: italic; + font-weight: 400; + font-display: swap; + src: local(''), + url('/assets/fonts/work-sans-v17-latin-italic.woff2') format('woff2'), + /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('/assets/fonts/work-sans-v17-latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +/* work-sans-700italic - latin */ +@font-face { + font-family: 'Work Sans'; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local(''), + url('/assets/fonts/work-sans-v17-latin-700italic.woff2') format('woff2'), + /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('/assets/fonts/work-sans-v17-latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +@font-face { + font-family: Archivo; + font-style: normal; + font-weight: 700; + font-display: swap; + src: local(''), + url('/assets/fonts/archivo-v18-latin-700.woff2') format('woff2'), + url('/assets/fonts/archivo-v18-latin-700.woff') format('woff'); +} +@font-face { + font-family: Archivo; + font-style: italic; + font-weight: 700; + font-display: swap; + src: local(''), + url('/assets/fonts/archivo-v18-latin-700italic.woff2') format('woff2'), + url('/assets/fonts/archivo-v18-latin-700italic.woff') format('woff'); +} +@font-face { + font-family: Archivo; + font-weight: 900; + font-display: swap; + src: local(''), + url('/assets/fonts/archivo-v18-latin-900.woff2') format('woff2'), + url('/assets/fonts/archivo-v18-latin-900.woff') format('woff'); +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 3rem 0 1.38rem; + font-family: Archivo, sans-serif; + font-weight: 700; + line-height: 1.3; +} +h1 { + margin-top: 0; + font-size: var(--h1); +} +h2 { + font-size: var(--h2); +} +h3 { + font-size: var(--h3); +} +h4 { + font-size: var(--h4); +} +h5 { + font-size: var(--h5); +} +h6 { + font-size: var(--h6); +} +/* Layout */ +[class*='grid'] { + display: grid; +} +.sm-grid { + grid-template-columns: + [start] var(--gutter) [content-start] 1fr [content-end] var(--gutter) + [end]; +} +.sm-header-grid { + grid-template-columns: + [start] var(--gutter) 1fr 1fr [content-start] minmax( + min(300px, 100%), + var(--post-width) + ) + [content-end] + 1fr 1fr var(--gutter) [end]; + margin-block: 6rem 3rem; + row-gap: 2rem; +} +.sm-content-grid { + grid-template-columns: + [start] var(--gutter) + [full-start] 1fr [wide-start] 1fr [content-start] minmax( + min(300px, 100%), + var(--content-width) + ) + [content-end] + 1fr [wide-end] 1fr [full-end] var(--gutter) [end]; +} +.sm-basic-grid { + grid-template-columns: 1fr; + gap: var(--gap); + padding-block: 3rem 6rem; +} +.sm-grid > .sm-basic-grid { + grid-column: content; +} +@media (min-width: 500px) { + .sm-basic-grid { + grid-template-columns: 1fr 1fr; + } +} +@media (min-width: 768px) { + .sm-grid { + grid-template-columns: + [start] var(--gutter) 1fr [content-start] minmax( + min(100%, 600px), + var(--width) + ) + [content-end] 1fr var(--gutter) + [end]; + } + + .sm-basic-grid { + grid-template-columns: 1fr 1fr 1fr; + } +} +.sm-navbar-container { + position: relative; + position: fixed; + top: 0; + left: 0; + z-index: 10; + width: 100%; + background-color: var(--surface); + /* box-shadow: 0 1px 1em rgb(0 0 0 / 0.15); */ +} +.sm-navbar { + display: flex; + align-items: center; + justify-content: space-between; + padding: 0.75rem 0; + grid-column: content; +} +.sm-navbar button, +.sm-search-button { + box-sizing: content-box; + font-size: var(--small); + line-height: 1; +} +.sm-navbar button:not(.sm-overflow-button) svg, +.sm-search-button svg { + width: max(1rem, 20px); + height: max(1rem, 20px); + fill: var(--element); +} +.sm-navbar-left { + display: flex; + gap: 1rem; + align-items: baseline; +} +.sm-site-title { + margin: 0; + overflow: hidden; + font-family: var(--heading-typeface); + font-size: 1rem; + font-weight: 800; + line-height: 1.1; + white-space: nowrap; +} +@media (min-width: 768px) { + .sm-site-title { + font-size: 1.15rem; + } +} +.sm-navigation-container { + display: none; + gap: 0.25rem; + align-items: flex-end; +} +.sm-navbar .sm-navbar-menu-button { + align-self: flex-end; + line-height: 0; +} +@media (min-width: 768px) { + .sm-navigation-container { + display: flex; + } + + .sm-navbar-menu-button { + display: none; + } +} +.sm-navigation { + display: flex; + -webkit-padding-start: 0; + padding-inline-start: 0; + list-style-type: none; + gap: 1rem; +} +.sm-navigation-item { + position: relative; + font-size: var(--small); + text-transform: uppercase; + letter-spacing: var(--letter-spacing); +} +.sm-navigation-item a::before { + position: absolute; + bottom: 0; + left: 0; + z-index: -1; + width: 100%; + height: 2px; + content: ''; + background-color: var(--primary); + border-radius: var(--radius); + transition: -webkit-clip-path 0.3s; + transition: clip-path 0.3s; + transition: clip-path 0.3s, -webkit-clip-path 0.3s; + -webkit-clip-path: inset(0 100% 0 0); + clip-path: inset(0 100% 0 0); +} +.sm-navigation-item a:hover::before { + -webkit-clip-path: inset(0 0 0 0); + clip-path: inset(0 0 0 0); +} +.sm-navbar-right { + display: flex; + gap: 1rem; + align-items: center; +} +.sm-footer-container { + -webkit-margin-before: auto; + margin-block-start: auto; + background-color: var(--surface-dark); + /* gap: 1rem var(--gap); */ +} +.sm-footer { + padding-block: 2rem; + font-size: var(--small); + color: var(--element-dark); + grid-column: content; +} +.sm-footer > *:not(:last-child) { + -webkit-margin-after: 1em; + margin-block-end: 1em; +} +@media (min-width: 500px) { + .sm-footer { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + grid-gap: 1rem var(--gap); + gap: 1rem var(--gap); + -webkit-margin-after: 0; + margin-block-end: 0; + } + + .sm-footer > div:not(:last-child) { + -webkit-padding-end: 1em; + padding-inline-end: 1em; + -webkit-margin-after: 0; + margin-block-end: 0; + } +} +.sm-footer-title { + font-family: var(--heading-typeface); + font-weight: 700; +} +.sm-footer-secondary-navigation ul { + padding: 0; + list-style: none; +} +.sm-footer input { + display: block; + width: 100%; + margin-block: 0.25em 0.75em; + color: var(--primary); + background-color: transparent; + border-bottom: 1px solid var(--border-color); + transition: border-color 0.3s; +} +.sm-footer input::-moz-placeholder { + font-size: var(--x-small); + color: var(--element-light); + opacity: 0.5; +} +.sm-footer input::placeholder { + font-size: var(--x-small); + color: var(--element-light); + opacity: 0.5; +} +.sm-footer .sm-button-simple { + font-size: var(--x-small); + font-weight: 400; +} +.sm-footer input.focus-visible { + border-color: var(--element-light); + outline: 0; +} +.sm-footer input:focus-visible { + border-color: var(--element-light); + outline: 0; +} +.sm-footer-meta { + padding-block: 2rem; + font-size: var(--x-small); + color: var(--element-light); + text-align: center; + border-top: 1px solid var(--border-color); + grid-column: content; +} +.sm-footer-meta a { + white-space: nowrap; +} +/* Pages */ +.sm-home-accent { + background-color: var(--surface-dark); +} +.sm-home-accent .sm-card, +.sm-home-accent .sm-cta-card { + border-color: var(--border-color-accent); +} +.sm-home-accent .sm-card .sm-tag { + background-color: var(--surface-darker); +} +.home-template .sm-pagination { + margin-block: var(--gap) 3rem; +} +/* Grid */ +.sm-grid-home { + display: grid; + grid-gap: var(--gap); + gap: var(--gap); + grid-column: content; + padding: 6rem 0; + grid-template-columns: repeat(auto-fit, minmax(min(21.875rem, 100%), 1fr)); +} +.sm-card-2.sm-card-horizontal, +.sm-card-3.sm-card-vertical, +.sm-card-4.sm-card-vertical, +.sm-card-5.sm-card-vertical, +.sm-card-6.sm-card-vertical, +.sm-card-7.sm-card-vertical, +.sm-card-8.sm-card-vertical, +.sm-card-9.sm-card-vertical, +.sm-card-10.sm-card-vertical, +.sm-card-11.sm-card-horizontal, +.sm-card-12.sm-card-vertical, +.sm-card-13.sm-card-vertical, +.sm-card-14.sm-card-vertical, +.sm-card-15.sm-card-vertical { + display: none; +} +.sm-card-1.sm-card-horizontal .sm-card-link { + flex-direction: column; +} +.sm-card-1.sm-card-horizontal .sm-card-link > img { + width: 100%; + max-width: 100%; +} +@media (min-width: 768px) { + .sm-card-1.sm-card-horizontal .sm-card-link { + flex-direction: row; + } + .sm-card-1.sm-card-horizontal .sm-card-link > img { + width: 50%; + } +} +@media (min-width: 768px) { + .sm-grid-feature { + grid-template-columns: repeat(4, minmax(0, 1fr)); + grid-template-areas: + 'card-1 card-1 card-1 card-1' + 'card-2 card-2 card-3 card-3' + 'card-4 card-4 card-5 card-5'; + } + + .sm-grid-feature-left, + .sm-grid-feature-right { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .sm-card-1 { + grid-area: card-1; + } + + .sm-card-2 { + grid-area: card-2; + } + + .sm-card-3 { + grid-area: card-3; + } + + .sm-card-4 { + grid-area: card-4; + } + .sm-card-5 { + grid-area: card-5; + } + + .sm-grid-feature-left { + grid-template-areas: + 'feature card-6 card-6' + 'feature card-7 card-7' + 'card-8 card-9 card-10'; + } + + .sm-grid-feature-right { + grid-template-areas: + 'card-11 card-11 feature' + 'card-12 card-12 feature' + 'card-13 card-14 card-15'; + } + + .sm-card-2.sm-card-horizontal, + .sm-card-3.sm-card-horizontal, + .sm-card-4.sm-card-horizontal, + .sm-card-5.sm-card-horizontal, + .sm-card-6.sm-card-vertical, + .sm-card-7.sm-card-vertical, + .sm-card-8.sm-card-horizontal, + .sm-card-9.sm-card-horizontal, + .sm-card-10.sm-card-horizontal, + .sm-card-11.sm-card-vertical, + .sm-card-12.sm-card-vertical, + .sm-card-13.sm-card-horizontal, + .sm-card-14.sm-card-horizontal, + .sm-card-15.sm-card-horizontal { + display: none; + } + + .sm-card-2.sm-card-vertical, + .sm-card-3.sm-card-vertical, + .sm-card-4.sm-card-vertical, + .sm-card-5.sm-card-vertical, + .sm-card-6.sm-card-horizontal, + .sm-card-7.sm-card-horizontal, + .sm-card-8.sm-card-vertical, + .sm-card-9.sm-card-vertical, + .sm-card-10.sm-card-vertical, + .sm-card-11.sm-card-horizontal, + .sm-card-12.sm-card-horizontal, + .sm-card-13.sm-card-vertical, + .sm-card-14.sm-card-vertical, + .sm-card-15.sm-card-vertical { + display: inline; + display: initial; + } + + .sm-feature-card { + grid-area: feature; + } + + .sm-card-6 { + grid-area: card-6; + } + + .sm-card-7 { + grid-area: card-7; + } + .sm-card-8 { + grid-area: card-8; + } + .sm-card-9 { + grid-area: card-9; + } + .sm-card-10 { + grid-area: card-10; + } + .sm-card-11 { + grid-area: card-11; + } + .sm-card-12 { + grid-area: card-12; + } + .sm-card-13 { + grid-area: card-13; + } + .sm-card-14 { + grid-area: card-14; + } + .sm-card-15 { + grid-area: card-15; + } +} +.sm-post-title { + -webkit-margin-after: 1rem; + margin-block-end: 1rem; +} +/* TODO - Combine with card.css */ +.sm-post-excerpt { + max-width: 66ch; + margin-inline: auto; + color: var(--element-light); + opacity: 0.75; +} +.sm-post-author-block { + display: flex; + align-items: center; + justify-content: center; + text-align: left; + gap: 0.5rem; +} +.sm-post-author-block p { + text-align: left; +} +.sm-post-author-profile-image { + line-height: 1; +} +.sm-post-author-profile-image:empty { + display: none; +} +.sm-post-author-profile-image:empty + div { + text-align: center; +} +.sm-post-author-profile-image img { + position: relative; + z-index: 5; + width: 3rem; + height: 3rem; + border: 1px solid var(--border-color); + border-radius: 50%; + -o-object-fit: cover; + object-fit: cover; +} +.sm-post-author-profile-image img + img { + z-index: 4; + -webkit-margin-end: -1rem; + margin-inline-end: -1rem; + transform: translateX(-1rem); +} +.sm-post-author-profile-image img:nth-of-type(3) { + z-index: 3; +} +.sm-post-author-profile-image img:nth-of-type(4) { + z-index: 2; +} +.sm-post-author-profile-image img:nth-of-type(5) { + z-index: 1; +} +.sm-post-meta { + display: flex; + flex-wrap: wrap; + font-size: var(--x-small); + color: var(--element-light); + text-transform: uppercase; + letter-spacing: var(--letter-spacing); + opacity: 0.8; + gap: 0 0.5em; +} +.sm-post-meta > *:not(:last-child):after { + -webkit-margin-start: 0.5em; + margin-inline-start: 0.5em; + content: '\002301'; +} +.sm-post-meta > a:hover::after { + color: var(--element-light); +} +.sm-post-save-button { + display: flex; + align-items: center; + text-transform: uppercase; + transition: color 0.3s; +} +.sm-post-save-button.sm-love-button { + transform: none; +} +.sm-post-meta a:hover, +.sm-post-save-button:hover { + color: var(--primary); +} +.sm-post-save-button span { + display: flex; + align-items: center; + gap: 3px; +} +.sm-post-save-button.sm-love-button.sm-love-toggle .sm-heart-fill-icon { + display: flex; +} +.sm-post-save-button svg { + width: 1em; + height: 1em; + fill: currentcolor; +} +/* Related posts */ +.sm-related-posts { + margin-block: 1rem 6rem; + grid-column: content; +} +/* Related posts block */ +.sm-related-posts h2 { + -webkit-margin-before: 1rem; + margin-block-start: 1rem; +} +.sm-related-posts-grid-container { + grid-template-columns: 1fr; + gap: var(--gap); +} +@media (min-width: 500px) { + .sm-related-posts-grid-container { + grid-template-columns: 1fr 1fr; + } + + .sm-related-posts-grid-container > article:last-child { + display: none; + } +} +@media (min-width: 768px) { + .sm-related-posts-grid-container { + grid-template-columns: repeat(3, 1fr); + } + .sm-related-posts-grid-container > article:last-child { + display: inline; + display: initial; + } +} +.sm-related-posts .sm-card { + grid-area: auto; +} +/* Comments */ +/* stylelint-disable-next-line selector-max-id */ +#ghost-comments-root { + grid-column: content; +} +/* Content */ +.sm-post-content { + -webkit-margin-after: 3rem; + margin-block-end: 3rem; +} +.sm-post-content > * { + grid-column: content; + -webkit-margin-after: 1rem; + margin-block-end: 1rem; +} +/* Links */ +.sm-post-content a { + text-decoration: underline; + text-decoration-thickness: 2px; + transition: text-decoration-color 0.1s; +} +.sm-post-content a:hover { + text-decoration-color: var(--primary); +} +/* Divider */ +.sm-post-content hr { + height: 1px; + background-color: var(--border-color); + border: none; +} +/* Table */ +.sm-table-wrapper { + border: 1px solid var(--border-color); + border-radius: var(--radius); + border-radius: var(--radius); +} +.sm-post-content table { + width: 100%; + border-collapse: collapse; +} +.sm-post-content tbody tr { + border-top: 1px solid var(--border-color); + transition: background-color 0.3s; +} +.sm-post-content tbody tr:hover { + background-color: var(--surface-dark); +} +.sm-post-content thead th { + padding: var(--radius); + font-family: var(--heading-typeface); + text-align: left; +} +.sm-post-content tbody td { + padding: var(--radius); + font-size: var(--small); +} +/* Code */ +.sm-post-content code:not([class*='language']) { + padding: 0.15em 0.25em; + font-family: var(--mono-typeface); + font-size: var(--small); + color: var(--element-light); + background-color: var(--border-color); + border-radius: 4px; +} +/* List */ +.sm-post-content li { + line-height: inherit; +} +.sm-post-content li:not(:last-child) { + -webkit-margin-after: 0.5em; + margin-block-end: 0.5em; +} +.sm-search { + position: fixed; + top: 0; + left: 0; + z-index: 35; + display: none; + width: 100%; + height: 100%; + overflow: auto; + background-color: var(--surface-85); + -webkit-backdrop-filter: blur(15px); + backdrop-filter: blur(15px); +} +.sm-search-form { + -webkit-margin-before: 1.5rem; + margin-block-start: 1.5rem; + grid-auto-rows: min-content; +} +.sm-show-search { + display: inline; + display: initial; +} +.sm-search-form-container { + grid-column: content; + margin-block: 2rem; +} +.sm-search-input-container { + position: relative; +} +.sm-clear-search-button { + position: absolute; + top: 50%; + right: 0.75em; + box-sizing: content-box; + display: none; + width: 1em; + height: 1em; + line-height: 1; + transform: translate(0, -50%); +} +.sm-clear-search-button.sm-show-clear-button { + display: inline; + display: initial; +} +.sm-clear-search-button svg { + width: 1em; + height: 1em; + transition: fill 0.3s; + fill: var(--element-light); +} +.sm-clear-search-button:hover svg { + fill: var(--secondary); +} +.sm-search-form input { + width: 100%; + padding: var(--button-padding); + color: var(--element); + background-color: var(--surface-dark); + border: 1px solid transparent; + border-radius: var(--radius); + caret-color: var(--secondary); +} +.sm-search-form input::-moz-placeholder { + color: var(--element-dark); +} +.sm-search-form input::placeholder { + color: var(--element-dark); +} +.sm-search-form input.focus-visible { + border-color: var(--primary); + outline: 0; +} +.sm-search-form input:focus-visible { + border-color: var(--primary); + outline: 0; +} +.sm-search-results-container { + grid-column: content; + -webkit-padding-after: 3rem; + padding-block-end: 3rem; +} +.sm-search-result { + font-family: var(--heading-typeface); + font-size: var(--h3); + font-weight: 700; + line-height: 1.1; +} +.sm-search-result-link { + display: block; + width: -moz-fit-content; + width: fit-content; + -webkit-margin-after: 1rem; + margin-block-end: 1rem; + transition: color 0.3s; +} +.sm-search-result-link:hover, +.sm-search-result-link:focus { + color: var(--secondary); + outline: 0; +} +.sm-matching-terms { + display: flex; + gap: 0.5em; + font-size: var(--small); + color: var(--surface); +} +.sm-matching-terms span { + padding: 0 0.25em; + background-color: var(--primary); + border-radius: var(--radius); + opacity: 0.75; +} +.sm-author-profile-image { + width: 6.5rem; + height: 6.5rem; + border: 1px solid var(--border-color); + border-radius: 50%; + box-shadow: var(--box-shadow); +} +.sm-author-location { + display: flex; + align-items: center; + justify-content: center; + gap: 0.35em; + -webkit-margin-after: 1rem; + margin-block-end: 1rem; +} +.sm-author-location svg { + width: 1em; + height: 1em; + fill: var(--element-light); +} +.sm-author-socials { + display: flex; + justify-content: center; + -webkit-margin-before: 2rem; + margin-block-start: 2rem; + gap: 1rem; +} +.sm-author-posts-container > h2 span { + display: none; + vertical-align: middle; +} +.paged .sm-author-posts-container > h2 span { + display: inline; + display: initial; +} +.sm-author-posts-container > * { + grid-column: content; +} +.sm-author-posts-container > h2 { + margin: 3rem 0 0; + /* border-top: 1px solid var(--border-color); */ +} +.sm-author-posts-container .sm-basic-grid:last-child { + -webkit-padding-after: 3rem; + padding-block-end: 3rem; +} +.sm-404 { + grid-column: content; +} +.sm-404 a { + text-decoration: underline; +} +.page-template .sm-grid > * { + grid-column: content; +} +/* Components */ +.sm-card { + position: relative; + border-radius: var(--radius); + transition: background 3s; +} +.sm-card::before { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + content: ''; + border-radius: var(--radius); + box-shadow: var(--box-shadow); + opacity: 0; + transition: opacity 0.3s; +} +.sm-card:hover, +.sm-card:focus { + outline: none; +} +.sm-card:hover::before, +.sm-card:focus::before { + opacity: 1; +} +.sm-card-link { + position: relative; + display: flex; + flex-direction: column; + justify-content: space-between; + height: 100%; + overflow: hidden; + background-color: var(--surface-light); + border-radius: var(--radius); +} +.sm-cta-card, +.sm-tags-card { + background-color: var(--surface-light); +} +.sm-card img { + width: 100%; + height: 100%; + border-top-left-radius: var(--radius-small); + border-top-right-radius: var(--radius-small); + aspect-ratio: 16 / 9; + -o-object-fit: cover; + object-fit: cover; +} +.sm-card h2 { + margin: 0; + font-size: 2rem; + line-height: 1.1; +} +.sm-card h2:not(.large) { + font-size: 1.35rem; +} +.sm-card-body { + display: flex; + flex-direction: column; + justify-content: space-between; + height: inherit; + padding: 1rem; +} +.sm-card .sm-excerpt { + -webkit-margin-before: 0.75rem; + margin-block-start: 0.75rem; + font-size: 0.875rem; +} +.sm-card-footer { + display: flex; + justify-content: space-between; + -webkit-margin-before: 2rem; + margin-block-start: 2rem; + gap: 1rem; +} +.sm-card .sm-tag { + display: inline-block; + max-width: 70%; + padding: 0 0.75em; + overflow: hidden; + font-size: var(--x-small); + color: var(--element-light); + text-overflow: ellipsis; + text-transform: uppercase; + letter-spacing: var(--letter-spacing); + white-space: nowrap; + background-color: var(--border-color); + border-radius: var(--radius); +} +.sm-card .sm-reading-time { + font-size: var(--x-small); + color: var(--element-light); +} +@media (min-width: 768px) { + .sm-card-horizontal .sm-card-link { + flex-direction: row; + } + + .sm-grid-feature .sm-card-horizontal picture { + max-width: 50%; + } + + .sm-grid-feature .sm-card-horizontal img { + max-width: none; + } + + .sm-card-horizontal img { + max-width: 12.5rem; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } +} +.sm-card-horizontal .sm-card-body { + display: flex; + flex: 1; + flex-direction: column; + justify-content: space-between; +} +.sm-card-1 .sm-card-horizontal .sm-card-link img { + flex: 1; + width: 50%; +} +/* Feature cards */ +.sm-feature-card { + border-radius: var(--radius); +} +.sm-feature-card h2 { + margin-top: 0; +} +/* CTA */ +.sm-cta-card { + position: relative; +} +.sm-cta-card picture + form { + height: auto; + -webkit-margin-before: 2rem; + margin-block-start: 2rem; +} +.sm-cta-card img { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 4rem; + height: 4rem; + margin-inline: auto; + transform: translate(-50%, -50%); +} +.sm-cta-card form { + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + height: 100%; + padding: 1.5rem 1rem; + text-align: center; +} +.sm-cta-copy { + display: flex; + flex-direction: column; +} +.sm-cta-card h2 { + margin: 0 0 0.5rem; + line-height: 1.1; + background: linear-gradient(45deg, var(--primary), var(--secondary)); + -webkit-background-clip: text; + background-clip: text; + -webkit-text-fill-color: transparent; +} +.sm-cta-card input { + width: 100%; + padding: 0.25em; + -webkit-margin-before: 2rem; + margin-block-start: 2rem; + color: var(--element); + text-align: center; + background-color: transparent; + border-bottom: 3px solid var(--border-color); + transition: border-color 0.3s; +} +.sm-cta-card input.focus-visible { + border-color: var(--element); + outline: none; +} +.sm-cta-card input:focus-visible { + border-color: var(--element); + outline: none; +} +.sm-cta-card input::-moz-placeholder { + color: var(--element-light); + text-align: center; + opacity: 0.5; +} +.sm-cta-card input::placeholder { + color: var(--element-light); + text-align: center; + opacity: 0.5; +} +.sm-cta-card button { + -webkit-margin-before: 2rem; + margin-block-start: 2rem; +} +/* Tags */ +.sm-tags-card { + display: flex; + flex-direction: column; + justify-content: space-between; + overflow: hidden; +} +.sm-tags-card > * { + flex: 1; +} +/* Tags card */ +.sm-tags-card h2 { + margin: 1rem; +} +.sm-tags-card > h2 > a { + transition: color var(--transition); +} +.sm-tags-card > h2 > a:hover { + color: var(--primary); +} +.sm-tags-card > a { + padding: 1rem; + font-weight: 700; + color: var(--element-light); + text-transform: uppercase; + letter-spacing: var(--letter-spacing); + border-bottom: 1px solid var(--border-color); + transition: background-color 0.1s, color 0.1s; +} +.sm-tags-card > a:first-of-type { + border-top: 1px solid var(--border-color); +} +.sm-tags-card > a:last-child { + border-bottom: none; +} +.sm-tags-card span { + float: right; + font-feature-settings: "tnum"; + font-variant-numeric: tabular-nums; +} +.sm-tags-card > a:hover { + color: var(--surface); + background-color: var(--secondary); +} +.sm-tags-card > a:nth-of-type(2):hover { + background-color: hsla( + var(--complementary-color) var(--saturation) var(--lightness) / 0.75 + ); +} +.sm-tags-card > a:nth-of-type(3):hover { + color: var(--element); + background-color: hsla( + var(--complementary-color) var(--saturation) var(--lightness) / 0.5 + ); +} +.sm-tags-card > a:nth-of-type(4):hover { + color: var(--element); + background-color: hsla( + var(--complementary-color) var(--saturation) var(--lightness) / 0.25 + ); +} +.sm-tags-card > a:nth-of-type(5):hover { + color: var(--element); + background-color: hsla( + var(--complementary-color) var(--saturation) var(--lightness) / 0.05 + ); +} +:root[data-color-pref='dark'] .sm-tags-card > a:nth-of-type(2):hover { + color: var(--element); + background-color: hsla( + var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5) / + 0.75 + ); +} +:root[data-color-pref='dark'] .sm-tags-card > a:nth-of-type(3):hover { + color: var(--element); + background-color: hsla( + var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5) / + 0.5 + ); +} +:root[data-color-pref='dark'] .sm-tags-card > a:nth-of-type(4):hover { + color: var(--element); + background-color: hsla( + var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5) / + 0.25 + ); +} +:root[data-color-pref='dark'] .sm-tags-card > a:nth-of-type(5):hover { + color: var(--element); + background-color: hsla( + var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5) / + 0.05 + ); +} +.sm-card .sm-love-button { + position: absolute; + right: 1rem; + bottom: 1rem; +} +.sm-card .sm-love-button svg { + width: 1rem; + height: 1rem; + fill: var(--primary); +} +.sm-form-button, +.sm-button, +.sm-icon-button, +.sm-button-simple { + padding: var(--button-padding); + font-size: var(--small); + font-weight: 700; + line-height: 1; + text-transform: uppercase; + letter-spacing: var(--letter-spacing); + border-radius: var(--radius); +} +.sm-form-button, +.sm-button { + color: var(--button-text); + background-color: var(--primary); +} +/* Icon button */ +.sm-icon-button { + display: flex; + align-items: center; + color: var(--element); + text-align: center; + white-space: nowrap; + background-color: hsla( + var(--primary-h) var(--saturation) var(--lightness) / 0.15 + ); + transition: background-color 0.3s; + gap: 1em; +} +.sm-icon-button:hover { + background-color: hsla( + var(--primary-h) var(--saturation) var(--lightness) / 0.25 + ); +} +.sm-icon-button svg { + width: 1em; + height: 1em; + fill: var(--element); +} +/* Circle icon button +Used in navigation and pagination */ +.sm-circle-icon-button { + box-sizing: content-box; + width: 1em; + height: 1em; + padding: 0.25em; + line-height: 1; + border-radius: 50%; + transition: background-color 0.3s; +} +.sm-circle-icon-button svg { + width: 1em; + height: 1em; + fill: var(--element-light); +} +.sm-circle-icon-button:not([disabled]):hover { + background-color: var(--border-color); +} +.sm-circle-icon-button[disabled] { + opacity: 0.5; +} +/* Simple button +Used in footer */ +.sm-button-simple { + display: flex; + align-items: center; + border: 1px solid var(--border-color); + transition: background-color 0.3s; + gap: 1em; +} +.sm-button-simple svg { + width: 1em; + height: 1em; + fill: var(--element-light); +} +.sm-button-simple.focus-visible, +.sm-button-simple:hover { + background-color: var(--border-color); + outline: none; +} +.sm-button-simple:focus-visible, +.sm-button-simple:hover { + background-color: var(--border-color); + outline: none; +} +/* Circle close button +Used in search and */ +.sm-circle-close-button { + position: absolute; + top: 1rem; + right: 1rem; + box-sizing: content-box; + + width: max(1rem, 30px); + height: max(1rem, 30px); + padding: 0.25rem; + line-height: 1; + border-radius: 50%; + transition: background-color 0.3s; +} +.sm-circle-close-button:hover { + background-color: var(--border-color); +} +.sm-circle-close-button svg { + width: max(1rem, 30px); + height: max(1rem, 30px); + fill: var(--element); +} +.sm-overflow-container { + position: relative; + line-height: 1; +} +.sm-overflow-button { + box-sizing: content-box; + display: flex; + align-items: center; + justify-content: center; + width: 1rem; + height: 1rem; + padding: 0.25rem; + line-height: 0; + line-height: 0; + border-radius: 50%; + transition: background-color var(--transition); + transform: translate(0, 0.15em); +} +.sm-overflow-button svg { + display: inline-block; + width: 1em; + height: 1em; + line-height: 0; + /* transform: translateY(0.125rem); */ + fill: var(--element); +} +.sm-overflow-menu { + position: absolute; + top: 2rem; + left: 50%; + z-index: 20; + display: none; + max-width: 75vw; + background-color: var(--surface); + border: 1px solid var(--border-color); + border-radius: var(--radius); + box-shadow: var(--box-shadow); + transform: translate(-50%, 0); +} +.sm-overflow-menu > div { + flex-direction: column; + justify-content: center; + padding: 1rem; + gap: 1rem; +} +.sm-overflow-buttons { + display: flex; +} +.sm-overflow-button:hover { + background-color: var(--border-color); +} +.sm-overflow-menu::before { + position: absolute; + top: 0; + left: 50%; + pointer-events: none; + content: ''; + border-color: transparent transparent var(--border-color) transparent; + border-style: solid; + border-width: 0.5rem; + transform: translate(-50%, -100%); +} +[data-color-pref='light'] .sm-light-mode { + display: none; +} +[data-color-pref='dark'] .sm-dark-mode { + display: none; +} +/* Follow */ +.sm-overflow-follow, +.sm-overflow-share, +.sm-overflow-saves { + display: none; +} +.sm-overflow-back { + position: absolute; + top: 0.5em; + left: -0.5em; + box-sizing: content-box; + display: flex; + align-items: center; + justify-content: center; + width: 1rem; + height: 1rem; + padding: 0.25em; + line-height: 0; + background-color: var(--surface-light); + border-radius: 50%; + box-shadow: var(--box-shadow); + transform: translate(-100%, 50%); +} +.sm-overflow-back svg { + display: inline-block; + width: inherit; + height: inherit; +} +.sm-show { + display: flex; +} +.sm-hide { + display: none; +} +.sm-pagination { + display: flex; + align-items: center; + justify-content: center; + padding: var(--button-padding); + font-size: var(--small); + border: 1px solid var(--border-color); + border-radius: var(--radius); + grid-column: content; + gap: var(--gap); +} +.sm-pagination, +.sm-pagination-holder { + margin-block: 6rem 3rem; +} +.sm-current { + color: var(--primary); +} +.sm-pagination-item:hover { + color: var(--primary); +} +.sm-prev { + -webkit-margin-end: auto; + margin-inline-end: auto; +} +.sm-next { + -webkit-margin-start: auto; + margin-inline-start: auto; +} +.sm-nav-disabled { + opacity: 0.3; +} +.sm-circle-icon-button.sm-nav-disabled:hover { + background-color: transparent; +} +.sm-loading, +.sm-footer-loading, +.sm-success, +.sm-footer-success, +.sm-error, +.sm-footer-error { + display: none; +} +[data-members-form].loading .sm-default:not(.sm-cta-copy), +[data-members-form].success .sm-default, +[data-members-form].error .sm-default, +[data-members-form].loading .sm-footer-default:not(.sm-footer-default-text), +[data-members-form].success .sm-footer-default, +[data-members-form].error .sm-footer-default { + display: none; +} +[data-members-form].loading .sm-loading, +[data-members-form].success .sm-success, +[data-members-form].error .sm-error, +[data-members-form].loading .sm-footer-loading, +[data-members-form].success .sm-footer-success, +[data-members-form].error .sm-footer-error { + display: flex; +} +.sm-loading svg, +.sm-footer-loading svg { + animation: sm-spin 1s infinite linear; +} +@keyframes sm-spin { + to { + transform: rotate(1turn); + } +} +.sm-nav-menu-container { + position: fixed; + top: 0; + left: 0; + z-index: 35; + display: none; + /* align-items: center; */ + justify-content: center; + width: 100%; + height: 100%; + height: 100vh; + padding: 3rem var(--gap); + overflow-y: auto; + + text-align: center; + background-color: var(--surface); +} +.sm-nav-menu-container.sm-show-menu { + display: flex; +} +.sm-nav-menu-navigation-container { + display: flex; + flex-direction: column; + /* align-items: center; */ + gap: 1rem; + height: 100vh; + margin-bottom: 3rem; + /* margin-block-start: 6rem; */ +} +.sm-nav-menu-navigation-container .sm-navigation { + flex-direction: column; + align-items: center; +} +.sm-nav-menu-header { + margin-block: 2rem 1rem; + font-size: var(--small); + color: var(--element-light); + text-transform: uppercase; + letter-spacing: var(--letter-spacing); + opacity: 0.8; +} +.sm-nav-menu-navigation-container .sm-navigation a { + font-size: 1.25rem; + font-weight: 700; +} +.sm-nav-menu-section { + display: flex; + flex-direction: column; + flex-wrap: wrap; + justify-content: center; + gap: var(--gap); +} +.sm-nav-menu-section :where(button, a) { + justify-content: center; +} +.sm-nav-menu-navigation-container > .sm-icon-button { + -webkit-margin-before: 2rem; + margin-block-start: 2rem; +} +.sm-nav-menu-grid-container { + grid-template-columns: 1fr 1fr; + gap: var(--gap); + justify-content: space-between; + width: 100%; +} +.sm-nav-menu-navigation-container :where(.sm-dark-mode, .sm-light-mode) { + justify-content: center; + -webkit-margin-after: 3rem; + margin-block-end: 3rem; +} +.sm-header-grid > * { + grid-column: content; + text-align: center; +} +.sm-header-title { + margin: 0; + font-weight: 900; +} +.sm-header-excerpt { + max-width: 66ch; + margin-inline: auto; + color: var(--element-light); + opacity: 0.85; +} +.sm-header-image { + width: 100%; + aspect-ratio: 16 / 9; +} +.sm-header-image figcaption { + -webkit-margin-before: 3px; + margin-block-start: 3px; + font-size: var(--small); + opacity: 0.8; +} +.sm-header-image img { + display: block; + width: 100%; + height: 100%; + border-radius: var(--radius); + -o-object-fit: cover; + object-fit: cover; +} +.sm-tag-count { + display: inline-block; + padding: var(--button-padding); + -webkit-margin-start: 1em; + margin-inline-start: 1em; + font-family: 'Work Sans', sans-serif; + font-size: var(--x-small); + font-weight: 400; + line-height: 1; + color: var(--element-light); + text-transform: uppercase; + letter-spacing: var(--letter-spacing); + background-color: var(--border-color); + border-radius: var(--radius); + translate: 0 -0.5em; +} +.sm-love-button { + display: inline-block; + transform: translateY(0.25em); +} +.sm-love-button .sm-heart-fill-icon { + display: none; +} +.sm-love-button.sm-love-toggle .sm-heart-outline-icon { + display: none; +} +.sm-love-button.sm-love-toggle .sm-heart-fill-icon { + display: inline-block; +} +.sm-overflow-articles { + display: grid; + min-width: 18rem; + max-width: 100%; + grid-gap: var(--gap); + gap: var(--gap); +} +.sm-saves { + padding: 0.5em 1em; + border-radius: var(--radius); +} +.sm-saves progress::-webkit-progress-bar { + background-color: var(--primary-light); + border-radius: var(--radius); + opacity: 0.5; +} +.sm-saves progress::-webkit-progress-value { + overflow: hidden; + background-color: var(--primary); + border-radius: var(--radius); +} +.sm-saves-meta { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--gap); +} +.sm-saves-meta button { + font-size: 1rem; + transform: none; +} +.sm-saves-title { + font-family: var(--heading-typeface); + font-weight: 700; + text-align: left; + transition: 0.3s color; +} +.sm-saves-title:hover { + color: var(--primary); +} +.sm-saves-date { + margin-block: 0.5rem 0; + font-size: var(--x-small); + text-align: left; +} +.sm-saves button span { + line-height: 0; +} +.sm-hero { + position: relative; + min-height: 60vmin; + -webkit-padding-after: 3rem; + padding-block-end: 3rem; +} +.sm-hero + .sm-grid .sm-grid-home { + -webkit-padding-before: 3rem; + padding-block-start: 3rem; +} +.sm-hero-inner { + height: 100%; + -webkit-padding-before: 6rem; + padding-block-start: 6rem; + grid-column: content; +} +@media (min-width: 768px) { + .sm-hero-inner { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + grid-gap: var(--gap); + gap: var(--gap); + align-items: center; + } +} +.sm-hero-left { + position: relative; + z-index: 1; + display: flex; + flex-direction: column; + justify-content: center; + height: 100%; + -webkit-padding-end: 1rem; + padding-inline-end: 1rem; + text-align: center; +} +.sm-hero-subtitle { + -webkit-margin-after: 1rem; + margin-block-end: 1rem; + font-family: var(--heading-typeface); + font-size: var(--h1); + font-weight: 900; + line-height: 1.2; + background-image: linear-gradient(45deg, var(--primary), var(--secondary)); + -webkit-background-clip: text; + background-clip: text; + -webkit-text-fill-color: transparent; +} +@supports (color: color(display-p3 1 0.5 0)) { + .sm-hero-subtitle, + .sm-cta-card h2 { + background-image: linear-gradient( + 45deg, + color(display-p3 var(--r) var(--g) var(--b)), + color(display-p3 var(--cr) var(--cg) var(--cb)) + ); + } + + :root[data-color-pref='dark'] :where(.sm-hero-subtitle, .sm-cta-card h2) { + filter: brightness(1.5); + } +} +.sm-hero-description { + font-size: 1.15rem; + color: var(--element-dark); +} +.sm-hero-bg { + position: absolute; + display: block; + width: 100%; + height: 100%; + opacity: 0.25; + -o-object-fit: cover; + object-fit: cover; + mix-blend-mode: multiply; +} +.sm-hero-img img { + display: block; + width: 100%; + height: auto; + margin: 0 auto; + border-radius: var(--radius); + -o-object-fit: cover; + object-fit: cover; +} +.sm-hero-right { + display: none; +} +.sm-hero-button-container:not(:empty) { + display: flex; + justify-content: center; + -webkit-margin-before: 2rem; + margin-block-start: 2rem; + gap: 1rem; +} +.sm-hero-cta-2 { + position: relative; + color: var(--element); + background-color: transparent; +} +.sm-hero-cta-2 svg { + position: absolute; + top: 40%; + left: 0; + z-index: -1; + width: 100%; + height: 100%; + /* opacity: 0.5; */ +} +@media (min-width: 768px) { + .sm-hero-bg { + display: none; + } + + .sm-hero-img { + max-height: 50vmin; + } + + .sm-hero-left { + text-align: start; + } + + .sm-hero-right { + display: inline; + display: initial; + } + + .sm-hero-button-container:not(:empty) { + justify-content: flex-start; + } +} +.sm-form { + display: flex; + flex-direction: column; + width: 100%; + max-width: var(--content-width); + padding: var(--gap); + margin: 2rem auto; + border: 1px solid var(--border-color); + border-radius: var(--radius); +} +.sm-form label, +.sm-form input, +.sm-form textarea, +.sm-form button { + /* display: inline-block; */ +} +.sm-form input, +.sm-form textarea { + padding: var(--button-padding); + -webkit-margin-after: 1rem; + margin-block-end: 1rem; + color: var(--element); + background-color: var(--surface); + border: 1px solid var(--border-color); + border-radius: var(--radius); +} +.sm-form textarea { + height: 10rem; + resize: none; +} +.sm-form input.focus-visible, +.sm-form textarea.focus-visible { + border-color: var(--secondary); + outline: none; +} +.sm-form input:focus-visible, +.sm-form textarea:focus-visible { + border-color: var(--secondary); + outline: none; +} +.sm-form button:hover, +.sm-form button.focus-visible { + background-color: var(--secondary); + outline: none; +} +.sm-form button:hover, +.sm-form button:focus-visible { + background-color: var(--secondary); + outline: none; +} +.sm-gradient-divider { + height: 5rem; + background-image: linear-gradient(0deg, var(--surface), var(--surface-dark)); +} +.sm-gradient-divider-reverse { + height: 5rem; + background-image: linear-gradient( + 180deg, + var(--surface), + var(--surface-dark) + ); +} +.sm-post-toc { + position: fixed; + bottom: 28px; + left: 28px; + z-index: 5; + pointer-events: none; + transition: opacity 0.5s; + isolation: isolate; +} +.sm-post-toc-btn { + position: relative; + box-sizing: content-box; + width: 30px; + height: 30px; + padding: 0.75rem; + pointer-events: all; + background: var(--surface-light); + border-radius: 50%; + box-shadow: 0 4px 1rem hsl(var(--primary-h) var(--saturation) 9% / 0.1); + transition: color var(--transition); + --conic-gradient: var(--surface-light) 0deg 0%, var(--surface-light) 0deg 100%; +} +.sm-post-toc-btn::before { + position: absolute; + z-index: -1; + content: ''; + background-image: conic-gradient(var(--conic-gradient)); + border-radius: 50%; + opacity: 0.5; + transition: background-image var(--transition); + inset: -3px; +} +.sm-post-toc-btn:hover, +.sm-post-toc-btn.focus-visible { + color: var(--primary); +} +.sm-post-toc-btn:hover, +.sm-post-toc-btn:focus-visible { + color: var(--primary); +} +.sm-post-toc-btn svg { + width: 100%; + height: 100%; + fill: currentcolor; +} +.sm-post-toc-contents { + position: relative; + display: flex; + flex-direction: column; + align-items: flex-start; + max-width: min(500px, calc(100vw - 56px)); + padding: 1rem 0.75rem; + -webkit-margin-after: 1rem; + margin-block-end: 1rem; + pointer-events: none; + background: var(--surface-light); + filter: drop-shadow( + 0 4px 1rem hsl(var(--primary-h) var(--saturation) 9% / 0.1) + ); + border-radius: var(--radius); + opacity: 0; + transition: scale 0.2s ease-out, opacity 0.2s 0.1s ease-out, + translate 0.2s 0.1s ease-out; + transform-origin: bottom left; + gap: 0.5rem; + scale: 0; + translate: 15px 10%; + max-height: 70vh; + overflow-y: auto; +} +.sm-post-toc-contents::before { + position: absolute; + top: 0; + right: 0; + padding: 0.25rem 0.5rem; + font-size: var(--x-small); + color: var(--element-light); + text-transform: uppercase; + letter-spacing: var(--letter-spacing); + opacity: 0.5; + content: 'Contents'; +} +.toc-show { + pointer-events: all; + opacity: 1; + transition: scale 0.2s ease-in, opacity 0.2s ease-in, translate 0.2s ease-in; + scale: 1; + translate: 0 0; +} +.sm-toc-h3 { + -webkit-padding-start: 0.5rem; + padding-inline-start: 0.5rem; +} +.sm-toc-h4 { + -webkit-padding-start: 1rem; + padding-inline-start: 1rem; +} +.sm-toc-h5 { + -webkit-padding-start: 1.5rem; + padding-inline-start: 1.5rem; +} +.sm-toc-h6 { + -webkit-padding-start: 2rem; + padding-inline-start: 2rem; +} +.sm-toc-link { + transition: color var(--transition); +} +.sm-toc-link:hover, +.sm-toc-link:focus { + color: var(--primary); +} +.sm-toc-active { + color: var(--primary); +} +.toc-hide { + opacity: 0; +} +.sm-toc-icon-close { + display: none; +} +.toc-show ~ .sm-post-toc-btn .sm-toc-icon-close { + display: inline; + display: initial; +} +.toc-show ~ .sm-post-toc-btn .sm-toc-icon { + display: none; +} +/* Vendor */ +/* Blockquote */ +blockquote:not(.kg-blockquote-alt) { + -webkit-padding-start: 2rem; + padding-inline-start: 2rem; + border-left: 3px solid var(--border-color); +} +.kg-blockquote-alt { + font-family: var(--heading-typeface); + line-height: 1.2; +} +.kg-blockquote-alt::before, +.kg-blockquote-alt::after { + color: var(--secondary); +} +.kg-blockquote-alt::before { + -webkit-padding-end: 0.1em; + padding-inline-end: 0.1em; + content: '\002301'; +} +.kg-blockquote-alt::after { + content: '\002301'; +} +/* Cards and images */ +.kg-card { + width: 100%; + margin-inline: auto; +} +.kg-card, +.kg-blockquote-alt { + margin-block: 1rem 2rem; +} +.kg-image, +.sm-post-content img { + display: block; + max-width: 100%; + height: auto; + margin-inline: auto; +} +.sm-post-content figcaption { + padding: 0.25rem; + font-size: var(--small); + text-align: center; +} +.kg-width-wide, +.kg-embed-card, +.kg-gallery-card { + grid-column: content; +} +.kg-embed-card .twitter-tweet { + margin-inline: auto; +} +@media (min-width: 768px) { + .kg-width-wide, + .kg-gallery-card { + grid-column: wide; + } +} +.kg-width-full { + grid-column: start / end; +} +.kg-embed-card [src*='youtube'], +.kg-embed-card [src*='vimeo'] { + width: 100%; + height: auto; + aspect-ratio: 16 / 9; +} +.kg-embed-card iframe { + margin-inline: auto !important; +} +.kg-embed-card iframe { + /* stylelint-disable-next-line declaration-no-important */ +} +.medium-zoom-overlay { + z-index: 10; +} +.medium-zoom-image { + z-index: 11; +} + /*# sourceMappingURL=app.css.map */ \ No newline at end of file diff --git a/assets/built/app.css.map b/assets/built/app.css.map index 9e3d928d..b6b71171 100644 --- a/assets/built/app.css.map +++ b/assets/built/app.css.map @@ -1 +1 @@ -{"version":3,"sources":["abstracts/variables.css","base/reset.css","base/default.css","base/typography.css","layout/grid.css","layout/navbar.css","layout/footer.css","pages/home.css","pages/post.css","pages/post-content.css","pages/search.css","pages/author.css","pages/404.css","pages/page.css","components/card.css","components/button.css","components/overflow.css","components/pagination.css","components/subscribe.css","components/nav-menu.css","components/header.css","components/saves.css","components/hero.css","components/form.css","components/gradient.css","components/toc.css","vendor/kg.css","vendor/medium-zoom.css"],"names":[],"mappings":"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","file":"app.css","sourcesContent":["@custom-media --phone (min-width: 500px);\n@custom-media --tablet (min-width: 768px);\n@custom-media --laptop (min-width: 992px);\n@custom-media --desktop (min-width: 1200px);\n@custom-media --widescreen (min-width: 1400px);\n\n:root {\n /* Space */\n --tablet: 768px;\n --laptop: 992px;\n --desktop: 1200px;\n --widescreen: 1400px;\n --gap: 1rem;\n --gutter: max(20px, 3vw);\n --width: 992px;\n --post-width: 768px;\n --content-width: 700px;\n --radius: 0.5em;\n --radius-small: 3px;\n\n /* Type */\n --heading-typeface: 'Archivo', sans-serif;\n --mono-typeface: 'JetBrains Mono', 'Cascadia Code', 'Fira Code', 'Menlo',\n monospace;\n --letter-spacing: 0.2px;\n --h1: 2.488rem;\n --h2: 2.074rem;\n --h3: 1.728rem;\n --h4: 1.44rem;\n --h5: 1.2rem;\n --h6: 1rem;\n --small: 0.833rem;\n --x-small: 0.694rem;\n --xx-small: 0.579rem;\n --button-padding: 0.5em 0.75em;\n\n --transition: 0.3s;\n}\n\n/* Color scheme */\n:root[data-color-pref='light'] {\n --primary: hsl(var(--primary-h) var(--saturation) var(--lightness));\n --primary-light: hsl(\n var(--primary-h) var(--saturation) calc(var(--lightness) * 1.5)\n );\n --primary-dark: hsl(\n var(--primary-h) var(--saturation) calc(var(--lightness) * 0.5)\n );\n --secondary: hsl(\n var(--complementary-color) var(--saturation) var(--lightness)\n );\n --secondary-light: hsl(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5)\n );\n --secondary-dark: hsl(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 0.5)\n );\n\n --surface: hsl(var(--primary-h) 10% 96%);\n --surface-85: hsla(var(--primary-h) 10% 96% / 0.85);\n --surface-light: hsl(var(--primary-h) 10% 100%);\n --surface-dark: hsl(var(--primary-h) 10% 89%);\n --surface-darker: hsl(var(--primary-h) 10% 82%);\n\n --element: hsl(var(--primary-h) 10% 5%);\n --element-light: hsl(var(--primary-h) 10% 35%);\n --element-dark: hsl(var(--primary-h) 10% 1%);\n\n --border-color: hsla(var(--primary-h) 10% 82% / 0.5);\n --border-color-accent: hsla(var(--primary-h) 10% 72% / 0.5);\n --button-text: hsl(var(--primary-h) 10% 100%);\n\n --box-shadow: 0 0.7px 2.2px hsla(var(--primary-h) var(--saturation) 9% / 0.02),\n 0 1.6px 5.3px hsla(var(--primary-h) var(--saturation) 9% / 0.028),\n 0 3px 10px hsla(var(--primary-h) var(--saturation) 9% / 0.035),\n 0 5.4px 17.9px hsla(var(--primary-h) var(--saturation) 9% / 0.042),\n 0 10px 33.4px hsla(var(--primary-h) var(--saturation) 9% / 0.05),\n 0 24px 80px hsla(var(--primary-h) var(--saturation) 9% / 0.07);\n}\n\n:root[data-color-pref='dark'] {\n /* Color */\n --primary: hsl(\n var(--primary-h) var(--saturation) calc(var(--lightness) * 1.5)\n );\n --primary-light: hsl(\n var(--primary-h) var(--saturation) calc(var(--lightness) * 1.75)\n );\n --primary-dark: hsl(\n var(--primary-h) var(--saturation) calc(var(--lightness) * 1.15)\n );\n\n --secondary: hsl(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5)\n );\n --secondary-light: hsl(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.75)\n );\n --secondary-dark: hsl(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.15)\n );\n\n --element: hsl(var(--primary-h) 10% 96%);\n --element-light: hsl(var(--primary-h) 10% 100%);\n --element-dark: hsl(var(--primary-h) 10% 89%);\n --element-darker: hsl(var(--primary-h) 10% 82%);\n\n --surface: hsl(var(--primary-h) 10% 12%);\n --surface-85: hsla(var(--primary-h) 10% 15% / 0.85);\n --surface-light: hsl(var(--primary-h) 10% 18%);\n --surface-dark: hsl(var(--primary-h) 10% 8%);\n --surface-darker: hsl(var(--primary-h) 10% 3%);\n\n --border-color: hsla(var(--primary-h) 10% 35% / 0.5);\n --border-color-accent: hsla(var(--primary-h) 10% 25% / 0.5);\n --button-text: hsl(var(--primary-h) 10% 3%);\n\n --box-shadow: 0 0.7px 2.2px hsla(var(--primary-h) var(--saturation) 1% / 0.02),\n 0 1.6px 5.3px hsla(var(--primary-h) var(--saturation) 1% / 0.048),\n 0 3px 10px hsla(var(--primary-h) var(--saturation) 1% / 0.055),\n 0 5.4px 17.9px hsla(var(--primary-h) var(--saturation) 1% / 0.062),\n 0 10px 33.4px hsla(var(--primary-h) var(--saturation) 1% / 0.07),\n 0 24px 80px hsla(var(--primary-h) var(--saturation) 1% / 0.09);\n}\n","*,\n*:before,\n*:after {\n box-sizing: border-box;\n padding: 0;\n margin: 0;\n}\n\nbutton {\n cursor: pointer;\n background: none;\n border: none;\n}\n\na,\n:link,\n:visited {\n color: inherit;\n text-decoration: none;\n}\n\nul,\nol {\n padding-inline-start: 2em;\n}\n\ninput,\ntextarea,\nbutton {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n border: none;\n}\n","html {\n height: 100%;\n font-family: 'Work Sans', system-ui, -apple-system, BlinkMacSystemFont,\n 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue',\n sans-serif;\n\n font-size: 1rem;\n font-size: clamp(\n 1rem,\n 0.9285714285714286rem + 0.35714285714285715vw,\n 1.25rem\n );\n font-size: 1rem;\n font-size: clamp(1rem, 0.95rem + 0.25vw, 1.25rem);\n line-height: 1.5;\n color: var(--element);\n background-color: var(--surface);\n scroll-behavior: smooth;\n scroll-padding-block-start: 3.5rem;\n}\n\nbody {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n:target::before {\n margin-inline-end: 0.25em;\n color: var(--primary);\n content: '➠';\n}\n\n::selection {\n color: #000;\n background-color: var(--primary-light);\n}\n\n.sm-grid > .sm-zap {\n grid-column: content;\n}\n\n.sm-zap {\n position: relative;\n color: var(--border-color);\n text-align: center;\n}\n\n.sm-zap::before,\n.sm-zap::after {\n position: absolute;\n top: 50%;\n width: 48%;\n height: 1px;\n content: '';\n}\n\n.sm-zap::before {\n left: 0;\n background-image: linear-gradient(90deg, var(--border-color), transparent);\n}\n\n.sm-zap::after {\n right: 0;\n background-image: linear-gradient(-90deg, var(--border-color), transparent);\n}\n","/* work-sans-regular - latin */\n@font-face {\n font-family: 'Work Sans';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: local(''),\n url('/assets/fonts/work-sans-v17-latin-regular.woff2') format('woff2'),\n /* Chrome 26+, Opera 23+, Firefox 39+ */\n url('/assets/fonts/work-sans-v17-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */\n}\n/* work-sans-700 - latin */\n@font-face {\n font-family: 'Work Sans';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: local(''),\n url('/assets/fonts/work-sans-v17-latin-700.woff2') format('woff2'),\n /* Chrome 26+, Opera 23+, Firefox 39+ */\n url('/assets/fonts/work-sans-v17-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */\n}\n/* work-sans-italic - latin */\n@font-face {\n font-family: 'Work Sans';\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: local(''),\n url('/assets/fonts/work-sans-v17-latin-italic.woff2') format('woff2'),\n /* Chrome 26+, Opera 23+, Firefox 39+ */\n url('/assets/fonts/work-sans-v17-latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */\n}\n/* work-sans-700italic - latin */\n@font-face {\n font-family: 'Work Sans';\n font-style: italic;\n font-weight: 700;\n font-display: swap;\n src: local(''),\n url('/assets/fonts/work-sans-v17-latin-700italic.woff2') format('woff2'),\n /* Chrome 26+, Opera 23+, Firefox 39+ */\n url('/assets/fonts/work-sans-v17-latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */\n}\n\n@font-face {\n font-family: Archivo;\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: local(''),\n url('/assets/fonts/archivo-v18-latin-700.woff2') format('woff2'),\n url('/assets/fonts/archivo-v18-latin-700.woff') format('woff');\n}\n\n@font-face {\n font-family: Archivo;\n font-style: italic;\n font-weight: 700;\n font-display: swap;\n src: local(''),\n url('/assets/fonts/archivo-v18-latin-700italic.woff2') format('woff2'),\n url('/assets/fonts/archivo-v18-latin-700italic.woff') format('woff');\n}\n\n@font-face {\n font-family: Archivo;\n font-weight: 900;\n font-display: swap;\n src: local(''),\n url('/assets/fonts/archivo-v18-latin-900.woff2') format('woff2'),\n url('/assets/fonts/archivo-v18-latin-900.woff') format('woff');\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin: 3rem 0 1.38rem;\n font-family: Archivo, sans-serif;\n font-weight: 700;\n line-height: 1.3;\n}\n\nh1 {\n margin-top: 0;\n font-size: var(--h1);\n}\n\nh2 {\n font-size: var(--h2);\n}\n\nh3 {\n font-size: var(--h3);\n}\n\nh4 {\n font-size: var(--h4);\n}\n\nh5 {\n font-size: var(--h5);\n}\n\nh6 {\n font-size: var(--h6);\n}\n","[class*='grid'] {\n display: grid;\n}\n\n.sm-grid {\n grid-template-columns:\n [start] var(--gutter) [content-start] 1fr [content-end] var(--gutter)\n [end];\n}\n\n.sm-header-grid {\n grid-template-columns:\n [start] var(--gutter) 1fr 1fr [content-start] minmax(\n min(300px, 100%),\n var(--post-width)\n )\n [content-end]\n 1fr 1fr var(--gutter) [end];\n margin-block: 6rem 3rem;\n row-gap: 2rem;\n}\n\n.sm-content-grid {\n grid-template-columns:\n [start] var(--gutter)\n [full-start] 1fr [wide-start] 1fr [content-start] minmax(\n min(300px, 100%),\n var(--content-width)\n )\n [content-end]\n 1fr [wide-end] 1fr [full-end] var(--gutter) [end];\n}\n\n.sm-basic-grid {\n grid-template-columns: 1fr;\n gap: var(--gap);\n padding-block: 3rem 6rem;\n}\n\n.sm-grid > .sm-basic-grid {\n grid-column: content;\n}\n\n@media (--phone) {\n .sm-basic-grid {\n grid-template-columns: 1fr 1fr;\n }\n}\n\n@media (--tablet) {\n .sm-grid {\n grid-template-columns:\n [start] var(--gutter) 1fr [content-start] minmax(\n min(100%, 600px),\n var(--width)\n )\n [content-end] 1fr var(--gutter)\n [end];\n }\n\n .sm-basic-grid {\n grid-template-columns: 1fr 1fr 1fr;\n }\n}\n",".sm-navbar-container {\n position: relative;\n position: fixed;\n top: 0;\n left: 0;\n z-index: 10;\n width: 100%;\n background-color: var(--surface);\n /* box-shadow: 0 1px 1em rgb(0 0 0 / 0.15); */\n}\n\n.sm-navbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.75rem 0;\n grid-column: content;\n}\n\n.sm-navbar button,\n.sm-search-button {\n box-sizing: content-box;\n font-size: var(--small);\n line-height: 1;\n}\n\n.sm-navbar button:not(.sm-overflow-button) svg,\n.sm-search-button svg {\n width: max(1rem, 20px);\n height: max(1rem, 20px);\n fill: var(--element);\n}\n\n.sm-navbar-left {\n display: flex;\n gap: 1rem;\n align-items: baseline;\n}\n\n.sm-site-title {\n margin: 0;\n overflow: hidden;\n font-family: var(--heading-typeface);\n font-size: 1rem;\n font-weight: 800;\n line-height: 1.1;\n white-space: nowrap;\n}\n\n@media (--tablet) {\n .sm-site-title {\n font-size: 1.15rem;\n }\n}\n\n.sm-navigation-container {\n display: none;\n gap: 0.25rem;\n align-items: flex-end;\n}\n\n.sm-navbar .sm-navbar-menu-button {\n align-self: flex-end;\n line-height: 0;\n}\n\n@media (--tablet) {\n .sm-navigation-container {\n display: flex;\n }\n\n .sm-navbar-menu-button {\n display: none;\n }\n}\n\n.sm-navigation {\n display: flex;\n padding-inline-start: 0;\n list-style-type: none;\n gap: 1rem;\n}\n\n.sm-navigation-item {\n position: relative;\n font-size: var(--small);\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing);\n}\n\n.sm-navigation-item a::before {\n position: absolute;\n bottom: 0;\n left: 0;\n z-index: -1;\n width: 100%;\n height: 2px;\n content: '';\n background-color: var(--primary);\n border-radius: var(--radius);\n transition: clip-path 0.3s;\n clip-path: inset(0 100% 0 0);\n}\n\n.sm-navigation-item a:hover::before {\n clip-path: inset(0 0 0 0);\n}\n\n.sm-navbar-right {\n display: flex;\n gap: 1rem;\n align-items: center;\n}\n",".sm-footer-container {\n margin-block-start: auto;\n background-color: var(--surface-dark);\n /* gap: 1rem var(--gap); */\n}\n\n.sm-footer {\n padding-block: 2rem;\n font-size: var(--small);\n color: var(--element-dark);\n grid-column: content;\n}\n\n.sm-footer > *:not(:last-child) {\n margin-block-end: 1em;\n}\n\n@media (--phone) {\n .sm-footer {\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 1rem var(--gap);\n margin-block-end: 0;\n }\n\n .sm-footer > div:not(:last-child) {\n padding-inline-end: 1em;\n margin-block-end: 0;\n }\n}\n\n.sm-footer-title {\n font-family: var(--heading-typeface);\n font-weight: 700;\n}\n\n.sm-footer-secondary-navigation ul {\n padding: 0;\n list-style: none;\n}\n\n.sm-footer input {\n display: block;\n width: 100%;\n margin-block: 0.25em 0.75em;\n color: var(--primary);\n background-color: transparent;\n border-bottom: 1px solid var(--border-color);\n transition: border-color 0.3s;\n}\n\n.sm-footer input::placeholder {\n font-size: var(--x-small);\n color: var(--element-light);\n opacity: 0.5;\n}\n\n.sm-footer .sm-button-simple {\n font-size: var(--x-small);\n font-weight: 400;\n}\n\n.sm-footer input:focus-visible {\n border-color: var(--element-light);\n outline: 0;\n}\n\n.sm-footer-meta {\n padding-block: 2rem;\n font-size: var(--x-small);\n color: var(--element-light);\n text-align: center;\n border-top: 1px solid var(--border-color);\n grid-column: content;\n}\n\n.sm-footer-meta a {\n white-space: nowrap;\n}\n",".sm-home-accent {\n background-color: var(--surface-dark);\n}\n\n.sm-home-accent .sm-card,\n.sm-home-accent .sm-cta-card {\n border-color: var(--border-color-accent);\n}\n\n.sm-home-accent .sm-card .sm-tag {\n background-color: var(--surface-darker);\n}\n\n.home-template .sm-pagination {\n margin-block: var(--gap) 3rem;\n}\n\n/* Grid */\n.sm-grid-home {\n display: grid;\n gap: var(--gap);\n grid-column: content;\n padding: 6rem 0;\n grid-template-columns: repeat(auto-fit, minmax(min(21.875rem, 100%), 1fr));\n}\n\n.sm-card-2.sm-card-horizontal,\n.sm-card-3.sm-card-vertical,\n.sm-card-4.sm-card-vertical,\n.sm-card-5.sm-card-vertical,\n.sm-card-6.sm-card-vertical,\n.sm-card-7.sm-card-vertical,\n.sm-card-8.sm-card-vertical,\n.sm-card-9.sm-card-vertical,\n.sm-card-10.sm-card-vertical,\n.sm-card-11.sm-card-horizontal,\n.sm-card-12.sm-card-vertical,\n.sm-card-13.sm-card-vertical,\n.sm-card-14.sm-card-vertical,\n.sm-card-15.sm-card-vertical {\n display: none;\n}\n\n.sm-card-1.sm-card-horizontal .sm-card-link {\n flex-direction: column;\n}\n\n.sm-card-1.sm-card-horizontal .sm-card-link > img {\n width: 100%;\n max-width: 100%;\n}\n\n@media (--tablet) {\n .sm-card-1.sm-card-horizontal .sm-card-link {\n flex-direction: row;\n }\n .sm-card-1.sm-card-horizontal .sm-card-link > img {\n width: 50%;\n }\n}\n\n@media (--tablet) {\n .sm-grid-feature {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n grid-template-areas:\n 'card-1 card-1 card-1 card-1'\n 'card-2 card-2 card-3 card-3'\n 'card-4 card-4 card-5 card-5';\n }\n\n .sm-grid-feature-left,\n .sm-grid-feature-right {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n\n .sm-card-1 {\n grid-area: card-1;\n }\n\n .sm-card-2 {\n grid-area: card-2;\n }\n\n .sm-card-3 {\n grid-area: card-3;\n }\n\n .sm-card-4 {\n grid-area: card-4;\n }\n .sm-card-5 {\n grid-area: card-5;\n }\n\n .sm-grid-feature-left {\n grid-template-areas:\n 'feature card-6 card-6'\n 'feature card-7 card-7'\n 'card-8 card-9 card-10';\n }\n\n .sm-grid-feature-right {\n grid-template-areas:\n 'card-11 card-11 feature'\n 'card-12 card-12 feature'\n 'card-13 card-14 card-15';\n }\n\n .sm-card-2.sm-card-horizontal,\n .sm-card-3.sm-card-horizontal,\n .sm-card-4.sm-card-horizontal,\n .sm-card-5.sm-card-horizontal,\n .sm-card-6.sm-card-vertical,\n .sm-card-7.sm-card-vertical,\n .sm-card-8.sm-card-horizontal,\n .sm-card-9.sm-card-horizontal,\n .sm-card-10.sm-card-horizontal,\n .sm-card-11.sm-card-vertical,\n .sm-card-12.sm-card-vertical,\n .sm-card-13.sm-card-horizontal,\n .sm-card-14.sm-card-horizontal,\n .sm-card-15.sm-card-horizontal {\n display: none;\n }\n\n .sm-card-2.sm-card-vertical,\n .sm-card-3.sm-card-vertical,\n .sm-card-4.sm-card-vertical,\n .sm-card-5.sm-card-vertical,\n .sm-card-6.sm-card-horizontal,\n .sm-card-7.sm-card-horizontal,\n .sm-card-8.sm-card-vertical,\n .sm-card-9.sm-card-vertical,\n .sm-card-10.sm-card-vertical,\n .sm-card-11.sm-card-horizontal,\n .sm-card-12.sm-card-horizontal,\n .sm-card-13.sm-card-vertical,\n .sm-card-14.sm-card-vertical,\n .sm-card-15.sm-card-vertical {\n display: initial;\n }\n\n .sm-feature-card {\n grid-area: feature;\n }\n\n .sm-card-6 {\n grid-area: card-6;\n }\n\n .sm-card-7 {\n grid-area: card-7;\n }\n .sm-card-8 {\n grid-area: card-8;\n }\n .sm-card-9 {\n grid-area: card-9;\n }\n .sm-card-10 {\n grid-area: card-10;\n }\n .sm-card-11 {\n grid-area: card-11;\n }\n .sm-card-12 {\n grid-area: card-12;\n }\n .sm-card-13 {\n grid-area: card-13;\n }\n .sm-card-14 {\n grid-area: card-14;\n }\n .sm-card-15 {\n grid-area: card-15;\n }\n}\n",".sm-post-title {\n margin-block-end: 1rem;\n}\n\n/* TODO - Combine with card.css */\n.sm-post-excerpt {\n max-width: 66ch;\n margin-inline: auto;\n color: var(--element-light);\n opacity: 0.75;\n}\n\n.sm-post-author-block {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: left;\n gap: 0.5rem;\n}\n\n.sm-post-author-block p {\n text-align: left;\n}\n\n.sm-post-author-profile-image {\n line-height: 1;\n}\n\n.sm-post-author-profile-image:empty {\n display: none;\n}\n\n.sm-post-author-profile-image:empty + div {\n text-align: center;\n}\n\n.sm-post-author-profile-image img {\n position: relative;\n z-index: 5;\n width: 3rem;\n height: 3rem;\n border: 1px solid var(--border-color);\n border-radius: 50%;\n object-fit: cover;\n}\n\n.sm-post-author-profile-image img + img {\n z-index: 4;\n margin-inline-end: -1rem;\n transform: translateX(-1rem);\n}\n\n.sm-post-author-profile-image img:nth-of-type(3) {\n z-index: 3;\n}\n\n.sm-post-author-profile-image img:nth-of-type(4) {\n z-index: 2;\n}\n\n.sm-post-author-profile-image img:nth-of-type(5) {\n z-index: 1;\n}\n\n.sm-post-meta {\n display: flex;\n flex-wrap: wrap;\n font-size: var(--x-small);\n color: var(--element-light);\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing);\n opacity: 0.8;\n gap: 0 0.5em;\n}\n\n.sm-post-meta > *:not(:last-child):after {\n margin-inline-start: 0.5em;\n content: '\\002301';\n}\n\n.sm-post-meta > a:hover::after {\n color: var(--element-light);\n}\n\n.sm-post-save-button {\n display: flex;\n align-items: center;\n text-transform: uppercase;\n transition: color 0.3s;\n}\n\n.sm-post-save-button.sm-love-button {\n transform: none;\n}\n\n.sm-post-meta a:hover,\n.sm-post-save-button:hover {\n color: var(--primary);\n}\n\n.sm-post-save-button span {\n display: flex;\n align-items: center;\n gap: 3px;\n}\n.sm-post-save-button.sm-love-button.sm-love-toggle .sm-heart-fill-icon {\n display: flex;\n}\n\n.sm-post-save-button svg {\n width: 1em;\n height: 1em;\n fill: currentcolor;\n}\n\n/* Related posts */\n.sm-related-posts {\n margin-block: 1rem 6rem;\n grid-column: content;\n}\n\n/* Related posts block */\n.sm-related-posts h2 {\n margin-block-start: 1rem;\n}\n\n.sm-related-posts-grid-container {\n grid-template-columns: 1fr;\n gap: var(--gap);\n}\n\n@media (--phone) {\n .sm-related-posts-grid-container {\n grid-template-columns: 1fr 1fr;\n }\n\n .sm-related-posts-grid-container > article:last-child {\n display: none;\n }\n}\n\n@media (--tablet) {\n .sm-related-posts-grid-container {\n grid-template-columns: repeat(3, 1fr);\n }\n .sm-related-posts-grid-container > article:last-child {\n display: initial;\n }\n}\n\n.sm-related-posts .sm-card {\n grid-area: auto;\n}\n\n/* Comments */\n/* stylelint-disable-next-line selector-max-id */\n#ghost-comments-root {\n grid-column: content;\n}\n","/* Content */\n.sm-post-content {\n margin-block-end: 3rem;\n}\n\n.sm-post-content > * {\n grid-column: content;\n margin-block-end: 1rem;\n}\n\n/* Links */\n.sm-post-content a {\n text-decoration: underline;\n text-decoration-thickness: 2px;\n transition: text-decoration-color 0.1s;\n}\n\n.sm-post-content a:hover {\n text-decoration-color: var(--primary);\n}\n\n/* Divider */\n.sm-post-content hr {\n height: 1px;\n background-color: var(--border-color);\n border: none;\n}\n\n/* Table */\n.sm-table-wrapper {\n border: 1px solid var(--border-color);\n border-radius: var(--radius);\n border-radius: var(--radius);\n}\n\n.sm-post-content table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.sm-post-content tbody tr {\n border-top: 1px solid var(--border-color);\n transition: background-color 0.3s;\n}\n\n.sm-post-content tbody tr:hover {\n background-color: var(--surface-dark);\n}\n\n.sm-post-content thead th {\n padding: var(--radius);\n font-family: var(--heading-typeface);\n text-align: left;\n}\n\n.sm-post-content tbody td {\n padding: var(--radius);\n font-size: var(--small);\n}\n\n/* Code */\n.sm-post-content code:not([class*='language']) {\n padding: 0.15em 0.25em;\n font-family: var(--mono-typeface);\n font-size: var(--small);\n color: var(--element-light);\n background-color: var(--border-color);\n border-radius: 4px;\n}\n\n/* List */\n.sm-post-content li {\n line-height: inherit;\n}\n\n.sm-post-content li:not(:last-child) {\n margin-block-end: 0.5em;\n}\n",".sm-search {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 35;\n display: none;\n width: 100%;\n height: 100%;\n overflow: auto;\n background-color: var(--surface-85);\n backdrop-filter: blur(15px);\n}\n\n.sm-search-form {\n margin-block-start: 1.5rem;\n grid-auto-rows: min-content;\n}\n\n.sm-show-search {\n display: initial;\n}\n\n.sm-search-form-container {\n grid-column: content;\n margin-block: 2rem;\n}\n\n.sm-search-input-container {\n position: relative;\n}\n\n.sm-clear-search-button {\n position: absolute;\n top: 50%;\n right: 0.75em;\n box-sizing: content-box;\n display: none;\n width: 1em;\n height: 1em;\n line-height: 1;\n transform: translate(0, -50%);\n}\n\n.sm-clear-search-button.sm-show-clear-button {\n display: initial;\n}\n\n.sm-clear-search-button svg {\n width: 1em;\n height: 1em;\n transition: fill 0.3s;\n fill: var(--element-light);\n}\n\n.sm-clear-search-button:hover svg {\n fill: var(--secondary);\n}\n\n.sm-search-form input {\n width: 100%;\n padding: var(--button-padding);\n color: var(--element);\n background-color: var(--surface-dark);\n border: 1px solid transparent;\n border-radius: var(--radius);\n caret-color: var(--secondary);\n}\n\n.sm-search-form input::placeholder {\n color: var(--element-dark);\n}\n\n.sm-search-form input:focus-visible {\n border-color: var(--primary);\n outline: 0;\n}\n\n.sm-search-results-container {\n grid-column: content;\n padding-block-end: 3rem;\n}\n\n.sm-search-result {\n font-family: var(--heading-typeface);\n font-size: var(--h3);\n font-weight: 700;\n line-height: 1.1;\n}\n\n.sm-search-result-link {\n display: block;\n width: fit-content;\n margin-block-end: 1rem;\n transition: color 0.3s;\n}\n\n.sm-search-result-link:hover,\n.sm-search-result-link:focus {\n color: var(--secondary);\n outline: 0;\n}\n\n.sm-matching-terms {\n display: flex;\n gap: 0.5em;\n font-size: var(--small);\n color: var(--surface);\n}\n\n.sm-matching-terms span {\n padding: 0 0.25em;\n background-color: var(--primary);\n border-radius: var(--radius);\n opacity: 0.75;\n}\n",".sm-author-profile-image {\n width: 6.5rem;\n height: 6.5rem;\n border: 1px solid var(--border-color);\n border-radius: 50%;\n box-shadow: var(--box-shadow);\n}\n\n.sm-author-location {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.35em;\n margin-block-end: 1rem;\n}\n\n.sm-author-location svg {\n width: 1em;\n height: 1em;\n fill: var(--element-light);\n}\n\n.sm-author-socials {\n display: flex;\n justify-content: center;\n margin-block-start: 2rem;\n gap: 1rem;\n}\n\n.sm-author-posts-container > h2 span {\n display: none;\n vertical-align: middle;\n}\n\n.paged .sm-author-posts-container > h2 span {\n display: initial;\n}\n\n.sm-author-posts-container > * {\n grid-column: content;\n}\n\n.sm-author-posts-container > h2 {\n margin: 3rem 0 0;\n /* border-top: 1px solid var(--border-color); */\n}\n\n.sm-author-posts-container .sm-basic-grid:last-child {\n padding-block-end: 3rem;\n}\n",".sm-404 {\n grid-column: content;\n}\n\n.sm-404 a {\n text-decoration: underline;\n}\n",".page-template .sm-grid > * {\n grid-column: content;\n}\n",".sm-card {\n position: relative;\n border-radius: var(--radius);\n transition: background 3s;\n}\n\n.sm-card::before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n content: '';\n border-radius: var(--radius);\n box-shadow: var(--box-shadow);\n opacity: 0;\n transition: opacity 0.3s;\n}\n\n.sm-card:hover,\n.sm-card:focus {\n outline: none;\n}\n\n.sm-card:hover::before,\n.sm-card:focus::before {\n opacity: 1;\n}\n\n.sm-card-link {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n height: 100%;\n overflow: hidden;\n background-color: var(--surface-light);\n border-radius: var(--radius);\n}\n\n.sm-cta-card,\n.sm-tags-card {\n background-color: var(--surface-light);\n}\n\n.sm-card img {\n width: 100%;\n height: 100%;\n border-top-left-radius: var(--radius-small);\n border-top-right-radius: var(--radius-small);\n aspect-ratio: 16 / 9;\n object-fit: cover;\n}\n\n.sm-card h2 {\n margin: 0;\n font-size: 2rem;\n line-height: 1.1;\n}\n\n.sm-card h2:not(.large) {\n font-size: 1.35rem;\n}\n\n.sm-card-body {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n height: inherit;\n padding: 1rem;\n}\n\n.sm-card .sm-excerpt {\n margin-block-start: 0.75rem;\n font-size: 0.875rem;\n}\n\n.sm-card-footer {\n display: flex;\n justify-content: space-between;\n margin-block-start: 2rem;\n gap: 1rem;\n}\n\n.sm-card .sm-tag {\n display: inline-block;\n max-width: 70%;\n padding: 0 0.75em;\n overflow: hidden;\n font-size: var(--x-small);\n color: var(--element-light);\n text-overflow: ellipsis;\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing);\n white-space: nowrap;\n background-color: var(--border-color);\n border-radius: var(--radius);\n}\n\n.sm-card .sm-reading-time {\n font-size: var(--x-small);\n color: var(--element-light);\n}\n\n@media (--tablet) {\n .sm-card-horizontal .sm-card-link {\n flex-direction: row;\n }\n\n .sm-grid-feature .sm-card-horizontal picture {\n max-width: 50%;\n }\n\n .sm-grid-feature .sm-card-horizontal img {\n max-width: none;\n }\n\n .sm-card-horizontal img {\n max-width: 12.5rem;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n}\n\n.sm-card-horizontal .sm-card-body {\n display: flex;\n flex: 1;\n flex-direction: column;\n justify-content: space-between;\n}\n\n.sm-card-1 .sm-card-horizontal .sm-card-link img {\n flex: 1;\n width: 50%;\n}\n\n/* Feature cards */\n.sm-feature-card {\n border-radius: var(--radius);\n}\n\n.sm-feature-card h2 {\n margin-top: 0;\n}\n\n/* CTA */\n.sm-cta-card {\n position: relative;\n}\n\n.sm-cta-card picture + form {\n height: auto;\n margin-block-start: 2rem;\n}\n\n.sm-cta-card img {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 4rem;\n height: 4rem;\n margin-inline: auto;\n transform: translate(-50%, -50%);\n}\n\n.sm-cta-card form {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n height: 100%;\n padding: 1.5rem 1rem;\n text-align: center;\n}\n\n.sm-cta-copy {\n display: flex;\n flex-direction: column;\n}\n\n.sm-cta-card h2 {\n margin: 0 0 0.5rem;\n line-height: 1.1;\n background: linear-gradient(45deg, var(--primary), var(--secondary));\n background-clip: text;\n -webkit-text-fill-color: transparent;\n}\n\n.sm-cta-card p {\n font-size: 1.2rem;\n}\n\n.sm-cta-card input {\n width: 100%;\n padding: 0.25em;\n /* border-radius: var(--radius); */\n margin-block-start: 2rem;\n color: var(--element);\n text-align: center;\n background-color: transparent;\n border-bottom: 3px solid var(--border-color);\n transition: border-color 0.3s;\n}\n\n.sm-cta-card input:focus-visible {\n border-color: var(--element);\n outline: none;\n}\n\n.sm-cta-card input::placeholder {\n color: var(--element-light);\n text-align: center;\n opacity: 0.5;\n}\n\n.sm-cta-card button {\n margin-block-start: 2rem;\n}\n\n/* Tags */\n.sm-tags-card {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n overflow: hidden;\n}\n\n.sm-tags-card > * {\n flex: 1;\n}\n\n/* Tags card */\n.sm-tags-card h2 {\n margin: 1rem;\n}\n\n.sm-tags-card > h2 > a {\n transition: color var(--transition);\n}\n\n.sm-tags-card > h2 > a:hover {\n color: var(--primary);\n}\n\n.sm-tags-card > a {\n padding: 1rem;\n font-weight: 700;\n color: var(--element-light);\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing);\n border-bottom: 1px solid var(--border-color);\n transition: background-color 0.1s, color 0.1s;\n}\n\n.sm-tags-card > a:first-of-type {\n border-top: 1px solid var(--border-color);\n}\n\n.sm-tags-card > a:last-child {\n border-bottom: none;\n}\n\n.sm-tags-card span {\n float: right;\n font-variant-numeric: tabular-nums;\n}\n\n.sm-tags-card > a:hover {\n color: var(--surface);\n background-color: var(--secondary);\n}\n\n.sm-tags-card > a:nth-of-type(2):hover {\n background-color: hsla(\n var(--complementary-color) var(--saturation) var(--lightness) / 0.75\n );\n}\n\n.sm-tags-card > a:nth-of-type(3):hover {\n color: var(--element);\n background-color: hsla(\n var(--complementary-color) var(--saturation) var(--lightness) / 0.5\n );\n}\n\n.sm-tags-card > a:nth-of-type(4):hover {\n color: var(--element);\n background-color: hsla(\n var(--complementary-color) var(--saturation) var(--lightness) / 0.25\n );\n}\n\n.sm-tags-card > a:nth-of-type(5):hover {\n color: var(--element);\n background-color: hsla(\n var(--complementary-color) var(--saturation) var(--lightness) / 0.05\n );\n}\n\n:root[data-color-pref='dark'] .sm-tags-card > a:nth-of-type(2):hover {\n color: var(--element);\n background-color: hsla(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5) /\n 0.75\n );\n}\n\n:root[data-color-pref='dark'] .sm-tags-card > a:nth-of-type(3):hover {\n color: var(--element);\n background-color: hsla(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5) /\n 0.5\n );\n}\n:root[data-color-pref='dark'] .sm-tags-card > a:nth-of-type(4):hover {\n color: var(--element);\n background-color: hsla(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5) /\n 0.25\n );\n}\n:root[data-color-pref='dark'] .sm-tags-card > a:nth-of-type(5):hover {\n color: var(--element);\n background-color: hsla(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5) /\n 0.05\n );\n}\n\n.sm-card .sm-love-button {\n position: absolute;\n right: 1rem;\n bottom: 1rem;\n}\n\n.sm-card .sm-love-button svg {\n width: 1rem;\n height: 1rem;\n fill: var(--primary);\n}\n",".sm-form-button,\n.sm-button,\n.sm-icon-button,\n.sm-button-simple {\n padding: var(--button-padding);\n font-size: var(--small);\n font-weight: 700;\n line-height: 1;\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing);\n border-radius: var(--radius);\n}\n\n.sm-form-button,\n.sm-button {\n color: var(--button-text);\n background-color: var(--primary);\n}\n\n/* Icon button */\n.sm-icon-button {\n display: flex;\n align-items: center;\n color: var(--element);\n text-align: center;\n white-space: nowrap;\n background-color: hsla(\n var(--primary-h) var(--saturation) var(--lightness) / 0.15\n );\n transition: background-color 0.3s;\n gap: 1em;\n}\n\n.sm-icon-button:hover {\n background-color: hsla(\n var(--primary-h) var(--saturation) var(--lightness) / 0.25\n );\n}\n\n.sm-icon-button svg {\n width: 1em;\n height: 1em;\n fill: var(--element);\n}\n\n/* Circle icon button \nUsed in navigation and pagination */\n.sm-circle-icon-button {\n box-sizing: content-box;\n width: 1em;\n height: 1em;\n padding: 0.25em;\n line-height: 1;\n border-radius: 50%;\n transition: background-color 0.3s;\n}\n\n.sm-circle-icon-button svg {\n width: 1em;\n height: 1em;\n fill: var(--element-light);\n}\n\n.sm-circle-icon-button:not([disabled]):hover {\n background-color: var(--border-color);\n}\n\n.sm-circle-icon-button[disabled] {\n opacity: 0.5;\n}\n\n/* Simple button\nUsed in footer */\n.sm-button-simple {\n display: flex;\n align-items: center;\n border: 1px solid var(--border-color);\n transition: background-color 0.3s;\n gap: 1em;\n}\n\n.sm-button-simple svg {\n width: 1em;\n height: 1em;\n fill: var(--element-light);\n}\n\n.sm-button-simple:focus-visible,\n.sm-button-simple:hover {\n background-color: var(--border-color);\n outline: none;\n}\n\n/* Circle close button \nUsed in search and */\n.sm-circle-close-button {\n position: absolute;\n top: 1rem;\n right: 1rem;\n box-sizing: content-box;\n\n width: max(1rem, 30px);\n height: max(1rem, 30px);\n padding: 0.25rem;\n line-height: 1;\n border-radius: 50%;\n transition: background-color 0.3s;\n}\n\n.sm-circle-close-button:hover {\n background-color: var(--border-color);\n}\n\n.sm-circle-close-button svg {\n width: max(1rem, 30px);\n height: max(1rem, 30px);\n fill: var(--element);\n}\n",".sm-overflow-container {\n position: relative;\n line-height: 1;\n}\n\n.sm-overflow-button {\n box-sizing: content-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1rem;\n height: 1rem;\n padding: 0.25rem;\n line-height: 0;\n line-height: 0;\n border-radius: 50%;\n transition: background-color var(--transition);\n transform: translate(0, 0.15em);\n}\n\n.sm-overflow-button svg {\n display: inline-block;\n width: 1em;\n height: 1em;\n line-height: 0;\n /* transform: translateY(0.125rem); */\n fill: var(--element);\n}\n\n.sm-overflow-menu {\n position: absolute;\n top: 2rem;\n left: 50%;\n z-index: 20;\n display: none;\n max-width: 75vw;\n background-color: var(--surface);\n border: 1px solid var(--border-color);\n border-radius: var(--radius);\n box-shadow: var(--box-shadow);\n transform: translate(-50%, 0);\n}\n\n.sm-overflow-menu > div {\n flex-direction: column;\n justify-content: center;\n padding: 1rem;\n gap: 1rem;\n}\n\n.sm-overflow-buttons {\n display: flex;\n}\n\n.sm-overflow-button:hover {\n background-color: var(--border-color);\n}\n\n.sm-overflow-menu::before {\n position: absolute;\n top: 0;\n left: 50%;\n pointer-events: none;\n content: '';\n border-color: transparent transparent var(--border-color) transparent;\n border-style: solid;\n border-width: 0.5rem;\n transform: translate(-50%, -100%);\n}\n\n[data-color-pref='light'] .sm-light-mode {\n display: none;\n}\n\n[data-color-pref='dark'] .sm-dark-mode {\n display: none;\n}\n\n/* Follow */\n.sm-overflow-follow,\n.sm-overflow-share,\n.sm-overflow-saves {\n display: none;\n}\n\n.sm-overflow-back {\n position: absolute;\n top: 0.5em;\n left: -0.5em;\n box-sizing: content-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1rem;\n height: 1rem;\n padding: 0.25em;\n line-height: 0;\n background-color: var(--surface-light);\n border-radius: 50%;\n box-shadow: var(--box-shadow);\n transform: translate(-100%, 50%);\n}\n\n.sm-overflow-back svg {\n display: inline-block;\n width: inherit;\n height: inherit;\n}\n\n.sm-show {\n display: flex;\n}\n\n.sm-hide {\n display: none;\n}\n",".sm-pagination {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--button-padding);\n font-size: var(--small);\n border: 1px solid var(--border-color);\n border-radius: var(--radius);\n grid-column: content;\n gap: var(--gap);\n}\n\n.sm-pagination,\n.sm-pagination-holder {\n margin-block: 6rem 3rem;\n}\n\n.sm-current {\n color: var(--primary);\n}\n\n.sm-pagination-item:hover {\n color: var(--primary);\n}\n\n.sm-prev {\n margin-inline-end: auto;\n}\n\n.sm-next {\n margin-inline-start: auto;\n}\n\n.sm-nav-disabled {\n opacity: 0.3;\n}\n\n.sm-circle-icon-button.sm-nav-disabled:hover {\n background-color: transparent;\n}\n",".sm-loading,\n.sm-footer-loading,\n.sm-success,\n.sm-footer-success,\n.sm-error,\n.sm-footer-error {\n display: none;\n}\n\n[data-members-form].loading .sm-default:not(.sm-cta-copy),\n[data-members-form].success .sm-default,\n[data-members-form].error .sm-default,\n[data-members-form].loading .sm-footer-default:not(.sm-footer-default-text),\n[data-members-form].success .sm-footer-default,\n[data-members-form].error .sm-footer-default {\n display: none;\n}\n\n[data-members-form].loading .sm-loading,\n[data-members-form].success .sm-success,\n[data-members-form].error .sm-error,\n[data-members-form].loading .sm-footer-loading,\n[data-members-form].success .sm-footer-success,\n[data-members-form].error .sm-footer-error {\n display: flex;\n}\n\n.sm-loading svg,\n.sm-footer-loading svg {\n animation: sm-spin 1s infinite linear;\n}\n\n@keyframes sm-spin {\n to {\n transform: rotate(1turn);\n }\n}\n",".sm-nav-menu-container {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 35;\n display: none;\n /* align-items: center; */\n justify-content: center;\n width: 100%;\n height: 100%;\n height: 100vh;\n padding: 3rem var(--gap);\n overflow-y: auto;\n\n text-align: center;\n background-color: var(--surface);\n}\n\n.sm-nav-menu-container.sm-show-menu {\n display: flex;\n}\n\n.sm-nav-menu-navigation-container {\n display: flex;\n flex-direction: column;\n /* align-items: center; */\n gap: 1rem;\n height: 100vh;\n margin-bottom: 3rem;\n /* margin-block-start: 6rem; */\n}\n\n.sm-nav-menu-navigation-container .sm-navigation {\n flex-direction: column;\n align-items: center;\n}\n\n.sm-nav-menu-header {\n margin-block: 2rem 1rem;\n font-size: var(--small);\n color: var(--element-light);\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing);\n opacity: 0.8;\n}\n\n.sm-nav-menu-navigation-container .sm-navigation a {\n font-size: 1.25rem;\n font-weight: 700;\n}\n\n.sm-nav-menu-section {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n justify-content: center;\n gap: var(--gap);\n}\n\n.sm-nav-menu-section :where(button, a) {\n justify-content: center;\n}\n\n.sm-nav-menu-navigation-container > .sm-icon-button {\n margin-block-start: 2rem;\n}\n\n.sm-nav-menu-grid-container {\n grid-template-columns: 1fr 1fr;\n gap: var(--gap);\n justify-content: space-between;\n width: 100%;\n}\n\n.sm-nav-menu-navigation-container :where(.sm-dark-mode, .sm-light-mode) {\n justify-content: center;\n margin-block-end: 3rem;\n}\n",".sm-header-grid > * {\n grid-column: content;\n text-align: center;\n}\n\n.sm-header-title {\n margin: 0;\n font-weight: 900;\n}\n\n.sm-header-excerpt {\n max-width: 66ch;\n margin-inline: auto;\n color: var(--element-light);\n opacity: 0.85;\n}\n\n.sm-header-image {\n width: 100%;\n aspect-ratio: 16 / 9;\n}\n\n.sm-header-image figcaption {\n margin-block-start: 3px;\n font-size: var(--small);\n opacity: 0.8;\n}\n\n.sm-header-image img {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: var(--radius);\n object-fit: cover;\n}\n\n.sm-tag-count {\n display: inline-block;\n padding: var(--button-padding);\n margin-inline-start: 1em;\n font-family: 'Work Sans', sans-serif;\n font-size: var(--x-small);\n font-weight: 400;\n line-height: 1;\n color: var(--element-light);\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing);\n background-color: var(--border-color);\n border-radius: var(--radius);\n translate: 0 -0.5em;\n}\n",".sm-love-button {\n display: inline-block;\n transform: translateY(0.25em);\n}\n\n.sm-love-button .sm-heart-fill-icon {\n display: none;\n}\n\n.sm-love-button.sm-love-toggle .sm-heart-outline-icon {\n display: none;\n}\n\n.sm-love-button.sm-love-toggle .sm-heart-fill-icon {\n display: inline-block;\n}\n\n.sm-overflow-articles {\n display: grid;\n min-width: 18rem;\n max-width: 100%;\n gap: var(--gap);\n}\n\n.sm-saves {\n padding: 0.5em 1em;\n border-radius: var(--radius);\n}\n\n.sm-saves progress::-webkit-progress-bar {\n background-color: var(--primary-light);\n border-radius: var(--radius);\n opacity: 0.5;\n}\n\n.sm-saves progress::-webkit-progress-value {\n overflow: hidden;\n background-color: var(--primary);\n border-radius: var(--radius);\n}\n\n.sm-saves-meta {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--gap);\n}\n\n.sm-saves-meta button {\n font-size: 1rem;\n transform: none;\n}\n\n.sm-saves-title {\n font-family: var(--heading-typeface);\n font-weight: 700;\n text-align: left;\n transition: 0.3s color;\n}\n\n.sm-saves-title:hover {\n color: var(--primary);\n}\n\n.sm-saves-date {\n margin-block: 0.5rem 0;\n font-size: var(--x-small);\n text-align: left;\n}\n\n.sm-saves button span {\n line-height: 0;\n}\n",".sm-hero {\n position: relative;\n min-height: 60vmin;\n padding-block-end: 3rem;\n}\n\n.sm-hero + .sm-grid .sm-grid-home {\n padding-block-start: 3rem;\n}\n\n.sm-hero-inner {\n height: 100%;\n padding-block-start: 6rem;\n grid-column: content;\n}\n\n@media (--tablet) {\n .sm-hero-inner {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: var(--gap);\n align-items: center;\n }\n}\n\n.sm-hero-left {\n position: relative;\n z-index: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n height: 100%;\n padding-inline-end: 1rem;\n text-align: center;\n}\n\n.sm-hero-subtitle {\n margin-block-end: 1rem;\n font-family: var(--heading-typeface);\n font-size: var(--h1);\n font-weight: 900;\n line-height: 1.2;\n background-image: linear-gradient(45deg, var(--primary), var(--secondary));\n background-clip: text;\n -webkit-text-fill-color: transparent;\n}\n@supports (color: color(display-p3 1 0.5 0)) {\n .sm-hero-subtitle {\n background-image: linear-gradient(\n 45deg,\n color(display-p3 var(--r) var(--g) var(--b)),\n color(display-p3 var(--cr) var(--cg) var(--cb))\n );\n }\n\n :root[data-color-pref='dark'] .sm-hero-subtitle {\n filter: brightness(1.5);\n }\n}\n\n.sm-hero-description {\n font-size: 1.15rem;\n color: var(--element-dark);\n}\n\n.sm-hero-bg {\n position: absolute;\n display: block;\n width: 100%;\n height: 100%;\n opacity: 0.25;\n object-fit: cover;\n mix-blend-mode: multiply;\n}\n\n.sm-hero-img img {\n display: block;\n width: 100%;\n height: auto;\n margin: 0 auto;\n border-radius: var(--radius);\n object-fit: cover;\n}\n\n.sm-hero-right {\n display: none;\n}\n\n.sm-hero-button-container:not(:empty) {\n display: flex;\n justify-content: center;\n margin-block-start: 2rem;\n gap: 1rem;\n}\n\n.sm-hero-cta-2 {\n position: relative;\n color: var(--element);\n background-color: transparent;\n}\n\n.sm-hero-cta-2 svg {\n position: absolute;\n top: 40%;\n left: 0;\n z-index: -1;\n width: 100%;\n height: 100%;\n /* opacity: 0.5; */\n}\n\n@media (--tablet) {\n .sm-hero-bg {\n display: none;\n }\n\n .sm-hero-img {\n max-height: 50vmin;\n }\n\n .sm-hero-left {\n text-align: start;\n }\n\n .sm-hero-right {\n display: initial;\n }\n\n .sm-hero-button-container:not(:empty) {\n justify-content: flex-start;\n }\n}\n",".sm-form {\n display: flex;\n flex-direction: column;\n width: 100%;\n max-width: var(--content-width);\n padding: var(--gap);\n margin: 2rem auto;\n border: 1px solid var(--border-color);\n border-radius: var(--radius);\n}\n\n.sm-form label,\n.sm-form input,\n.sm-form textarea,\n.sm-form button {\n /* display: inline-block; */\n}\n\n.sm-form input,\n.sm-form textarea {\n padding: var(--button-padding);\n margin-block-end: 1rem;\n color: var(--element);\n background-color: var(--surface);\n border: 1px solid var(--border-color);\n border-radius: var(--radius);\n}\n\n.sm-form textarea {\n height: 10rem;\n resize: none;\n}\n\n.sm-form input:focus-visible,\n.sm-form textarea:focus-visible {\n border-color: var(--secondary);\n outline: none;\n}\n\n.sm-form button:hover,\n.sm-form button:focus-visible {\n background-color: var(--secondary);\n outline: none;\n}\n",".sm-gradient-divider {\n height: 5rem;\n background-image: linear-gradient(0deg, var(--surface), var(--surface-dark));\n}\n\n.sm-gradient-divider-reverse {\n height: 5rem;\n background-image: linear-gradient(\n 180deg,\n var(--surface),\n var(--surface-dark)\n );\n}\n",".sm-post-toc {\n position: fixed;\n bottom: 28px;\n left: 28px;\n z-index: 2;\n pointer-events: none;\n transition: opacity 0.5s;\n isolation: isolate;\n}\n\n.sm-post-toc-btn {\n position: relative;\n box-sizing: content-box;\n width: 30px;\n height: 30px;\n padding: 0.75rem;\n pointer-events: all;\n background: var(--surface-light);\n border-radius: 50%;\n box-shadow: 0 4px 1rem hsl(var(--primary-h) var(--saturation) 9% / 0.1);\n transition: color var(--transition);\n --conic-gradient: var(--surface-light) 0deg 0%, var(--surface-light) 0deg 100%;\n}\n\n.sm-post-toc-btn::before {\n position: absolute;\n z-index: -1;\n content: '';\n background-image: conic-gradient(var(--conic-gradient));\n border-radius: 50%;\n opacity: 0.5;\n transition: background-image var(--transition);\n inset: -3px;\n}\n\n.sm-post-toc-btn:hover,\n.sm-post-toc-btn:focus-visible {\n color: var(--primary);\n}\n\n.sm-post-toc-btn svg {\n width: 100%;\n height: 100%;\n fill: currentcolor;\n}\n\n.sm-post-toc-contents {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n max-width: min(500px, calc(100vw - 56px));\n padding: 0.75rem;\n margin-block-end: 1rem;\n /* font-size: var(--small); */\n pointer-events: none;\n background: var(--surface-light);\n filter: drop-shadow(\n 0 4px 1rem hsl(var(--primary-h) var(--saturation) 9% / 0.1)\n );\n border-radius: 0 var(--radius) var(--radius) var(--radius);\n opacity: 0;\n transition: scale 0.2s ease-out, opacity 0.2s 0.1s ease-out,\n translate 0.2s 0.1s ease-out;\n transform-origin: bottom left;\n gap: 0.5rem;\n scale: 0;\n translate: 15px 10%;\n}\n\n.sm-post-toc-contents-title {\n position: absolute;\n top: 0;\n left: 0;\n padding: 0.15rem 0.75rem;\n font-size: var(--x-small);\n color: var(--surface-dark);\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing);\n background: var(--primary-dark);\n border-radius: var(--radius) var(--radius) 0 0;\n translate: 0 -100%;\n}\n\n.toc-show {\n pointer-events: all;\n opacity: 1;\n transition: scale 0.2s ease-in, opacity 0.2s ease-in, translate 0.2s ease-in;\n scale: 1;\n translate: 0 0;\n}\n\n.sm-toc-h3 {\n padding-inline-start: 0.5rem;\n}\n\n.sm-toc-h4 {\n padding-inline-start: 1rem;\n}\n\n.sm-toc-h5 {\n padding-inline-start: 1.5rem;\n}\n\n.sm-toc-h6 {\n padding-inline-start: 2rem;\n}\n\n.sm-toc-link {\n transition: color var(--transition);\n}\n\n.sm-toc-link:hover,\n.sm-toc-link:focus {\n color: var(--primary);\n}\n\n.sm-toc-active {\n color: var(--primary);\n}\n\n.toc-hide {\n opacity: 0;\n}\n\n.sm-toc-icon-close {\n display: none;\n}\n\n.toc-show ~ .sm-post-toc-btn .sm-toc-icon-close {\n display: initial;\n}\n\n.toc-show ~ .sm-post-toc-btn .sm-toc-icon {\n display: none;\n}\n","/* Blockquote */\nblockquote:not(.kg-blockquote-alt) {\n padding-inline-start: 2rem;\n border-left: 3px solid var(--border-color);\n}\n\n.kg-blockquote-alt {\n font-family: var(--heading-typeface);\n line-height: 1.2;\n}\n\n.kg-blockquote-alt::before,\n.kg-blockquote-alt::after {\n color: var(--secondary);\n}\n\n.kg-blockquote-alt::before {\n padding-inline-end: 0.1em;\n content: '\\002301';\n}\n\n.kg-blockquote-alt::after {\n content: '\\002301';\n}\n\n/* Cards and images */\n.kg-card {\n width: 100%;\n margin-inline: auto;\n}\n\n.kg-card,\n.kg-blockquote-alt {\n margin-block: 1rem 2rem;\n}\n\n.kg-image,\n.sm-post-content img {\n display: block;\n max-width: 100%;\n height: auto;\n margin-inline: auto;\n}\n\n.sm-post-content figcaption {\n padding: 0.25rem;\n font-size: var(--small);\n text-align: center;\n}\n\n.kg-width-wide,\n.kg-embed-card,\n.kg-gallery-card {\n grid-column: content;\n}\n\n.kg-embed-card .twitter-tweet {\n margin-inline: auto;\n}\n\n@media (--tablet) {\n .kg-width-wide,\n .kg-gallery-card {\n grid-column: wide;\n }\n}\n\n.kg-width-full {\n grid-column: start / end;\n}\n\n.kg-embed-card [src*='youtube'],\n.kg-embed-card [src*='vimeo'] {\n width: 100%;\n height: auto;\n aspect-ratio: 16 / 9;\n}\n\n.kg-embed-card iframe {\n /* stylelint-disable-next-line declaration-no-important */\n margin-inline: auto !important;\n}\n",".medium-zoom-overlay {\n z-index: 10;\n}\n\n.medium-zoom-image {\n z-index: 11;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["index.css","abstracts/variables.css","base/reset.css","base/default.css","base/typography.css","layout/grid.css","layout/navbar.css","layout/footer.css","pages/home.css","pages/post.css","pages/post-content.css","pages/search.css","pages/author.css","pages/404.css","pages/page.css","components/card.css","components/button.css","components/overflow.css","components/pagination.css","components/subscribe.css","components/nav-menu.css","components/header.css","components/saves.css","components/hero.css","components/form.css","components/gradient.css","components/toc.css","vendor/kg.css","vendor/medium-zoom.css"],"names":[],"mappings":"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","file":"app.css","sourcesContent":["/* Abstracts */\n@import './abstracts/variables.css';\n\n/* Base */\n@import './base/reset.css';\n@import './base/default.css';\n@import './base/typography.css';\n\n/* Layout */\n@import './layout/grid.css';\n@import './layout/navbar.css';\n@import './layout/footer.css';\n\n/* Pages */\n@import './pages/home.css';\n@import './pages/post.css';\n@import './pages/post-content.css';\n@import './pages/search.css';\n@import './pages/author.css';\n@import './pages/404.css';\n@import './pages/page.css';\n\n/* Components */\n@import './components/card.css';\n@import './components/button.css';\n@import './components/overflow.css';\n@import './components/pagination.css';\n@import './components/subscribe.css';\n@import './components/nav-menu.css';\n@import './components/header.css';\n@import './components/saves.css';\n@import './components/hero.css';\n@import './components/form.css';\n@import './components/gradient.css';\n@import './components/toc.css';\n\n/* Vendor */\n@import './vendor/kg.css';\n@import './vendor/medium-zoom.css';\n","@custom-media --phone (min-width: 500px);\n@custom-media --tablet (min-width: 768px);\n@custom-media --laptop (min-width: 992px);\n@custom-media --desktop (min-width: 1200px);\n@custom-media --widescreen (min-width: 1400px);\n\n:root {\n /* Space */\n --tablet: 768px;\n --laptop: 992px;\n --desktop: 1200px;\n --widescreen: 1400px;\n --gap: 1rem;\n --gutter: max(20px, 3vw);\n --width: 992px;\n --post-width: 768px;\n --content-width: 700px;\n --radius: 0.5em;\n --radius-small: 3px;\n\n /* Type */\n --heading-typeface: 'Archivo', sans-serif;\n --mono-typeface: 'JetBrains Mono', 'Cascadia Code', 'Fira Code', 'Menlo',\n monospace;\n --letter-spacing: 0.2px;\n --h1: 2.488rem;\n --h2: 2.074rem;\n --h3: 1.728rem;\n --h4: 1.44rem;\n --h5: 1.2rem;\n --h6: 1rem;\n --small: 0.833rem;\n --x-small: 0.694rem;\n --xx-small: 0.579rem;\n --button-padding: 0.5em 0.75em;\n\n --transition: 0.3s;\n}\n\n/* Color scheme */\n:root[data-color-pref='light'] {\n --primary: hsl(var(--primary-h) var(--saturation) var(--lightness));\n --primary-light: hsl(\n var(--primary-h) var(--saturation) calc(var(--lightness) * 1.5)\n );\n --primary-dark: hsl(\n var(--primary-h) var(--saturation) calc(var(--lightness) * 0.5)\n );\n --secondary: hsl(\n var(--complementary-color) var(--saturation) var(--lightness)\n );\n --secondary-light: hsl(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5)\n );\n --secondary-dark: hsl(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 0.5)\n );\n\n --surface: hsl(var(--primary-h) 10% 96%);\n --surface-85: hsla(var(--primary-h) 10% 96% / 0.85);\n --surface-light: hsl(var(--primary-h) 10% 100%);\n --surface-dark: hsl(var(--primary-h) 10% 89%);\n --surface-darker: hsl(var(--primary-h) 10% 82%);\n\n --element: hsl(var(--primary-h) 10% 5%);\n --element-light: hsl(var(--primary-h) 10% 35%);\n --element-dark: hsl(var(--primary-h) 10% 1%);\n\n --border-color: hsla(var(--primary-h) 10% 82% / 0.5);\n --border-color-accent: hsla(var(--primary-h) 10% 72% / 0.5);\n --button-text: hsl(var(--primary-h) 10% 100%);\n\n --box-shadow: 0 0.7px 2.2px hsla(var(--primary-h) var(--saturation) 9% / 0.02),\n 0 1.6px 5.3px hsla(var(--primary-h) var(--saturation) 9% / 0.028),\n 0 3px 10px hsla(var(--primary-h) var(--saturation) 9% / 0.035),\n 0 5.4px 17.9px hsla(var(--primary-h) var(--saturation) 9% / 0.042),\n 0 10px 33.4px hsla(var(--primary-h) var(--saturation) 9% / 0.05),\n 0 24px 80px hsla(var(--primary-h) var(--saturation) 9% / 0.07);\n}\n\n:root[data-color-pref='dark'] {\n /* Color */\n --primary: hsl(\n var(--primary-h) var(--saturation) calc(var(--lightness) * 1.5)\n );\n --primary-light: hsl(\n var(--primary-h) var(--saturation) calc(var(--lightness) * 1.75)\n );\n --primary-dark: hsl(\n var(--primary-h) var(--saturation) calc(var(--lightness) * 1.15)\n );\n\n --secondary: hsl(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5)\n );\n --secondary-light: hsl(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.75)\n );\n --secondary-dark: hsl(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.15)\n );\n\n --element: hsl(var(--primary-h) 10% 96%);\n --element-light: hsl(var(--primary-h) 10% 100%);\n --element-dark: hsl(var(--primary-h) 10% 89%);\n --element-darker: hsl(var(--primary-h) 10% 82%);\n\n --surface: hsl(var(--primary-h) 10% 12%);\n --surface-85: hsla(var(--primary-h) 10% 15% / 0.85);\n --surface-light: hsl(var(--primary-h) 10% 18%);\n --surface-dark: hsl(var(--primary-h) 10% 8%);\n --surface-darker: hsl(var(--primary-h) 10% 3%);\n\n --border-color: hsla(var(--primary-h) 10% 35% / 0.5);\n --border-color-accent: hsla(var(--primary-h) 10% 25% / 0.5);\n --button-text: hsl(var(--primary-h) 10% 3%);\n\n --box-shadow: 0 0.7px 2.2px hsla(var(--primary-h) var(--saturation) 1% / 0.02),\n 0 1.6px 5.3px hsla(var(--primary-h) var(--saturation) 1% / 0.048),\n 0 3px 10px hsla(var(--primary-h) var(--saturation) 1% / 0.055),\n 0 5.4px 17.9px hsla(var(--primary-h) var(--saturation) 1% / 0.062),\n 0 10px 33.4px hsla(var(--primary-h) var(--saturation) 1% / 0.07),\n 0 24px 80px hsla(var(--primary-h) var(--saturation) 1% / 0.09);\n}\n","*,\n*:before,\n*:after {\n box-sizing: border-box;\n padding: 0;\n margin: 0;\n}\n\nbutton {\n cursor: pointer;\n background: none;\n border: none;\n}\n\na,\n:link,\n:visited {\n color: inherit;\n text-decoration: none;\n}\n\nul,\nol {\n padding-inline-start: 2em;\n}\n\ninput,\ntextarea,\nbutton {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n border: none;\n}\n","html {\n height: 100%;\n font-family: 'Work Sans', system-ui, -apple-system, BlinkMacSystemFont,\n 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue',\n sans-serif;\n\n font-size: 1rem;\n font-size: clamp(\n 1rem,\n 0.9285714285714286rem + 0.35714285714285715vw,\n 1.25rem\n );\n font-size: 1rem;\n font-size: clamp(1rem, 0.95rem + 0.25vw, 1.25rem);\n line-height: 1.5;\n color: var(--element);\n background-color: var(--surface);\n scroll-behavior: smooth;\n scroll-padding-block-start: 3.5rem;\n}\n\nbody {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n:target::before {\n margin-inline-end: 0.25em;\n color: var(--primary);\n content: '➠';\n}\n\n::selection {\n color: #000;\n background-color: var(--primary-light);\n}\n\n.sm-grid > .sm-zap {\n grid-column: content;\n}\n\n.sm-zap {\n position: relative;\n color: var(--border-color);\n text-align: center;\n}\n\n.sm-zap::before,\n.sm-zap::after {\n position: absolute;\n top: 50%;\n width: 48%;\n height: 1px;\n content: '';\n}\n\n.sm-zap::before {\n left: 0;\n background-image: linear-gradient(90deg, var(--border-color), transparent);\n}\n\n.sm-zap::after {\n right: 0;\n background-image: linear-gradient(-90deg, var(--border-color), transparent);\n}\n","/* work-sans-regular - latin */\n@font-face {\n font-family: 'Work Sans';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: local(''),\n url('/assets/fonts/work-sans-v17-latin-regular.woff2') format('woff2'),\n /* Chrome 26+, Opera 23+, Firefox 39+ */\n url('/assets/fonts/work-sans-v17-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */\n}\n/* work-sans-700 - latin */\n@font-face {\n font-family: 'Work Sans';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: local(''),\n url('/assets/fonts/work-sans-v17-latin-700.woff2') format('woff2'),\n /* Chrome 26+, Opera 23+, Firefox 39+ */\n url('/assets/fonts/work-sans-v17-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */\n}\n/* work-sans-italic - latin */\n@font-face {\n font-family: 'Work Sans';\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: local(''),\n url('/assets/fonts/work-sans-v17-latin-italic.woff2') format('woff2'),\n /* Chrome 26+, Opera 23+, Firefox 39+ */\n url('/assets/fonts/work-sans-v17-latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */\n}\n/* work-sans-700italic - latin */\n@font-face {\n font-family: 'Work Sans';\n font-style: italic;\n font-weight: 700;\n font-display: swap;\n src: local(''),\n url('/assets/fonts/work-sans-v17-latin-700italic.woff2') format('woff2'),\n /* Chrome 26+, Opera 23+, Firefox 39+ */\n url('/assets/fonts/work-sans-v17-latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */\n}\n\n@font-face {\n font-family: Archivo;\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: local(''),\n url('/assets/fonts/archivo-v18-latin-700.woff2') format('woff2'),\n url('/assets/fonts/archivo-v18-latin-700.woff') format('woff');\n}\n\n@font-face {\n font-family: Archivo;\n font-style: italic;\n font-weight: 700;\n font-display: swap;\n src: local(''),\n url('/assets/fonts/archivo-v18-latin-700italic.woff2') format('woff2'),\n url('/assets/fonts/archivo-v18-latin-700italic.woff') format('woff');\n}\n\n@font-face {\n font-family: Archivo;\n font-weight: 900;\n font-display: swap;\n src: local(''),\n url('/assets/fonts/archivo-v18-latin-900.woff2') format('woff2'),\n url('/assets/fonts/archivo-v18-latin-900.woff') format('woff');\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin: 3rem 0 1.38rem;\n font-family: Archivo, sans-serif;\n font-weight: 700;\n line-height: 1.3;\n}\n\nh1 {\n margin-top: 0;\n font-size: var(--h1);\n}\n\nh2 {\n font-size: var(--h2);\n}\n\nh3 {\n font-size: var(--h3);\n}\n\nh4 {\n font-size: var(--h4);\n}\n\nh5 {\n font-size: var(--h5);\n}\n\nh6 {\n font-size: var(--h6);\n}\n","[class*='grid'] {\n display: grid;\n}\n\n.sm-grid {\n grid-template-columns:\n [start] var(--gutter) [content-start] 1fr [content-end] var(--gutter)\n [end];\n}\n\n.sm-header-grid {\n grid-template-columns:\n [start] var(--gutter) 1fr 1fr [content-start] minmax(\n min(300px, 100%),\n var(--post-width)\n )\n [content-end]\n 1fr 1fr var(--gutter) [end];\n margin-block: 6rem 3rem;\n row-gap: 2rem;\n}\n\n.sm-content-grid {\n grid-template-columns:\n [start] var(--gutter)\n [full-start] 1fr [wide-start] 1fr [content-start] minmax(\n min(300px, 100%),\n var(--content-width)\n )\n [content-end]\n 1fr [wide-end] 1fr [full-end] var(--gutter) [end];\n}\n\n.sm-basic-grid {\n grid-template-columns: 1fr;\n gap: var(--gap);\n padding-block: 3rem 6rem;\n}\n\n.sm-grid > .sm-basic-grid {\n grid-column: content;\n}\n\n@media (--phone) {\n .sm-basic-grid {\n grid-template-columns: 1fr 1fr;\n }\n}\n\n@media (--tablet) {\n .sm-grid {\n grid-template-columns:\n [start] var(--gutter) 1fr [content-start] minmax(\n min(100%, 600px),\n var(--width)\n )\n [content-end] 1fr var(--gutter)\n [end];\n }\n\n .sm-basic-grid {\n grid-template-columns: 1fr 1fr 1fr;\n }\n}\n",".sm-navbar-container {\n position: relative;\n position: fixed;\n top: 0;\n left: 0;\n z-index: 10;\n width: 100%;\n background-color: var(--surface);\n /* box-shadow: 0 1px 1em rgb(0 0 0 / 0.15); */\n}\n\n.sm-navbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.75rem 0;\n grid-column: content;\n}\n\n.sm-navbar button,\n.sm-search-button {\n box-sizing: content-box;\n font-size: var(--small);\n line-height: 1;\n}\n\n.sm-navbar button:not(.sm-overflow-button) svg,\n.sm-search-button svg {\n width: max(1rem, 20px);\n height: max(1rem, 20px);\n fill: var(--element);\n}\n\n.sm-navbar-left {\n display: flex;\n gap: 1rem;\n align-items: baseline;\n}\n\n.sm-site-title {\n margin: 0;\n overflow: hidden;\n font-family: var(--heading-typeface);\n font-size: 1rem;\n font-weight: 800;\n line-height: 1.1;\n white-space: nowrap;\n}\n\n@media (--tablet) {\n .sm-site-title {\n font-size: 1.15rem;\n }\n}\n\n.sm-navigation-container {\n display: none;\n gap: 0.25rem;\n align-items: flex-end;\n}\n\n.sm-navbar .sm-navbar-menu-button {\n align-self: flex-end;\n line-height: 0;\n}\n\n@media (--tablet) {\n .sm-navigation-container {\n display: flex;\n }\n\n .sm-navbar-menu-button {\n display: none;\n }\n}\n\n.sm-navigation {\n display: flex;\n padding-inline-start: 0;\n list-style-type: none;\n gap: 1rem;\n}\n\n.sm-navigation-item {\n position: relative;\n font-size: var(--small);\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing);\n}\n\n.sm-navigation-item a::before {\n position: absolute;\n bottom: 0;\n left: 0;\n z-index: -1;\n width: 100%;\n height: 2px;\n content: '';\n background-color: var(--primary);\n border-radius: var(--radius);\n transition: clip-path 0.3s;\n clip-path: inset(0 100% 0 0);\n}\n\n.sm-navigation-item a:hover::before {\n clip-path: inset(0 0 0 0);\n}\n\n.sm-navbar-right {\n display: flex;\n gap: 1rem;\n align-items: center;\n}\n",".sm-footer-container {\n margin-block-start: auto;\n background-color: var(--surface-dark);\n /* gap: 1rem var(--gap); */\n}\n\n.sm-footer {\n padding-block: 2rem;\n font-size: var(--small);\n color: var(--element-dark);\n grid-column: content;\n}\n\n.sm-footer > *:not(:last-child) {\n margin-block-end: 1em;\n}\n\n@media (--phone) {\n .sm-footer {\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 1rem var(--gap);\n margin-block-end: 0;\n }\n\n .sm-footer > div:not(:last-child) {\n padding-inline-end: 1em;\n margin-block-end: 0;\n }\n}\n\n.sm-footer-title {\n font-family: var(--heading-typeface);\n font-weight: 700;\n}\n\n.sm-footer-secondary-navigation ul {\n padding: 0;\n list-style: none;\n}\n\n.sm-footer input {\n display: block;\n width: 100%;\n margin-block: 0.25em 0.75em;\n color: var(--primary);\n background-color: transparent;\n border-bottom: 1px solid var(--border-color);\n transition: border-color 0.3s;\n}\n\n.sm-footer input::placeholder {\n font-size: var(--x-small);\n color: var(--element-light);\n opacity: 0.5;\n}\n\n.sm-footer .sm-button-simple {\n font-size: var(--x-small);\n font-weight: 400;\n}\n\n.sm-footer input:focus-visible {\n border-color: var(--element-light);\n outline: 0;\n}\n\n.sm-footer-meta {\n padding-block: 2rem;\n font-size: var(--x-small);\n color: var(--element-light);\n text-align: center;\n border-top: 1px solid var(--border-color);\n grid-column: content;\n}\n\n.sm-footer-meta a {\n white-space: nowrap;\n}\n",".sm-home-accent {\n background-color: var(--surface-dark);\n}\n\n.sm-home-accent .sm-card,\n.sm-home-accent .sm-cta-card {\n border-color: var(--border-color-accent);\n}\n\n.sm-home-accent .sm-card .sm-tag {\n background-color: var(--surface-darker);\n}\n\n.home-template .sm-pagination {\n margin-block: var(--gap) 3rem;\n}\n\n/* Grid */\n.sm-grid-home {\n display: grid;\n gap: var(--gap);\n grid-column: content;\n padding: 6rem 0;\n grid-template-columns: repeat(auto-fit, minmax(min(21.875rem, 100%), 1fr));\n}\n\n.sm-card-2.sm-card-horizontal,\n.sm-card-3.sm-card-vertical,\n.sm-card-4.sm-card-vertical,\n.sm-card-5.sm-card-vertical,\n.sm-card-6.sm-card-vertical,\n.sm-card-7.sm-card-vertical,\n.sm-card-8.sm-card-vertical,\n.sm-card-9.sm-card-vertical,\n.sm-card-10.sm-card-vertical,\n.sm-card-11.sm-card-horizontal,\n.sm-card-12.sm-card-vertical,\n.sm-card-13.sm-card-vertical,\n.sm-card-14.sm-card-vertical,\n.sm-card-15.sm-card-vertical {\n display: none;\n}\n\n.sm-card-1.sm-card-horizontal .sm-card-link {\n flex-direction: column;\n}\n\n.sm-card-1.sm-card-horizontal .sm-card-link > img {\n width: 100%;\n max-width: 100%;\n}\n\n@media (--tablet) {\n .sm-card-1.sm-card-horizontal .sm-card-link {\n flex-direction: row;\n }\n .sm-card-1.sm-card-horizontal .sm-card-link > img {\n width: 50%;\n }\n}\n\n@media (--tablet) {\n .sm-grid-feature {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n grid-template-areas:\n 'card-1 card-1 card-1 card-1'\n 'card-2 card-2 card-3 card-3'\n 'card-4 card-4 card-5 card-5';\n }\n\n .sm-grid-feature-left,\n .sm-grid-feature-right {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n\n .sm-card-1 {\n grid-area: card-1;\n }\n\n .sm-card-2 {\n grid-area: card-2;\n }\n\n .sm-card-3 {\n grid-area: card-3;\n }\n\n .sm-card-4 {\n grid-area: card-4;\n }\n .sm-card-5 {\n grid-area: card-5;\n }\n\n .sm-grid-feature-left {\n grid-template-areas:\n 'feature card-6 card-6'\n 'feature card-7 card-7'\n 'card-8 card-9 card-10';\n }\n\n .sm-grid-feature-right {\n grid-template-areas:\n 'card-11 card-11 feature'\n 'card-12 card-12 feature'\n 'card-13 card-14 card-15';\n }\n\n .sm-card-2.sm-card-horizontal,\n .sm-card-3.sm-card-horizontal,\n .sm-card-4.sm-card-horizontal,\n .sm-card-5.sm-card-horizontal,\n .sm-card-6.sm-card-vertical,\n .sm-card-7.sm-card-vertical,\n .sm-card-8.sm-card-horizontal,\n .sm-card-9.sm-card-horizontal,\n .sm-card-10.sm-card-horizontal,\n .sm-card-11.sm-card-vertical,\n .sm-card-12.sm-card-vertical,\n .sm-card-13.sm-card-horizontal,\n .sm-card-14.sm-card-horizontal,\n .sm-card-15.sm-card-horizontal {\n display: none;\n }\n\n .sm-card-2.sm-card-vertical,\n .sm-card-3.sm-card-vertical,\n .sm-card-4.sm-card-vertical,\n .sm-card-5.sm-card-vertical,\n .sm-card-6.sm-card-horizontal,\n .sm-card-7.sm-card-horizontal,\n .sm-card-8.sm-card-vertical,\n .sm-card-9.sm-card-vertical,\n .sm-card-10.sm-card-vertical,\n .sm-card-11.sm-card-horizontal,\n .sm-card-12.sm-card-horizontal,\n .sm-card-13.sm-card-vertical,\n .sm-card-14.sm-card-vertical,\n .sm-card-15.sm-card-vertical {\n display: initial;\n }\n\n .sm-feature-card {\n grid-area: feature;\n }\n\n .sm-card-6 {\n grid-area: card-6;\n }\n\n .sm-card-7 {\n grid-area: card-7;\n }\n .sm-card-8 {\n grid-area: card-8;\n }\n .sm-card-9 {\n grid-area: card-9;\n }\n .sm-card-10 {\n grid-area: card-10;\n }\n .sm-card-11 {\n grid-area: card-11;\n }\n .sm-card-12 {\n grid-area: card-12;\n }\n .sm-card-13 {\n grid-area: card-13;\n }\n .sm-card-14 {\n grid-area: card-14;\n }\n .sm-card-15 {\n grid-area: card-15;\n }\n}\n",".sm-post-title {\n margin-block-end: 1rem;\n}\n\n/* TODO - Combine with card.css */\n.sm-post-excerpt {\n max-width: 66ch;\n margin-inline: auto;\n color: var(--element-light);\n opacity: 0.75;\n}\n\n.sm-post-author-block {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: left;\n gap: 0.5rem;\n}\n\n.sm-post-author-block p {\n text-align: left;\n}\n\n.sm-post-author-profile-image {\n line-height: 1;\n}\n\n.sm-post-author-profile-image:empty {\n display: none;\n}\n\n.sm-post-author-profile-image:empty + div {\n text-align: center;\n}\n\n.sm-post-author-profile-image img {\n position: relative;\n z-index: 5;\n width: 3rem;\n height: 3rem;\n border: 1px solid var(--border-color);\n border-radius: 50%;\n object-fit: cover;\n}\n\n.sm-post-author-profile-image img + img {\n z-index: 4;\n margin-inline-end: -1rem;\n transform: translateX(-1rem);\n}\n\n.sm-post-author-profile-image img:nth-of-type(3) {\n z-index: 3;\n}\n\n.sm-post-author-profile-image img:nth-of-type(4) {\n z-index: 2;\n}\n\n.sm-post-author-profile-image img:nth-of-type(5) {\n z-index: 1;\n}\n\n.sm-post-meta {\n display: flex;\n flex-wrap: wrap;\n font-size: var(--x-small);\n color: var(--element-light);\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing);\n opacity: 0.8;\n gap: 0 0.5em;\n}\n\n.sm-post-meta > *:not(:last-child):after {\n margin-inline-start: 0.5em;\n content: '\\002301';\n}\n\n.sm-post-meta > a:hover::after {\n color: var(--element-light);\n}\n\n.sm-post-save-button {\n display: flex;\n align-items: center;\n text-transform: uppercase;\n transition: color 0.3s;\n}\n\n.sm-post-save-button.sm-love-button {\n transform: none;\n}\n\n.sm-post-meta a:hover,\n.sm-post-save-button:hover {\n color: var(--primary);\n}\n\n.sm-post-save-button span {\n display: flex;\n align-items: center;\n gap: 3px;\n}\n.sm-post-save-button.sm-love-button.sm-love-toggle .sm-heart-fill-icon {\n display: flex;\n}\n\n.sm-post-save-button svg {\n width: 1em;\n height: 1em;\n fill: currentcolor;\n}\n\n/* Related posts */\n.sm-related-posts {\n margin-block: 1rem 6rem;\n grid-column: content;\n}\n\n/* Related posts block */\n.sm-related-posts h2 {\n margin-block-start: 1rem;\n}\n\n.sm-related-posts-grid-container {\n grid-template-columns: 1fr;\n gap: var(--gap);\n}\n\n@media (--phone) {\n .sm-related-posts-grid-container {\n grid-template-columns: 1fr 1fr;\n }\n\n .sm-related-posts-grid-container > article:last-child {\n display: none;\n }\n}\n\n@media (--tablet) {\n .sm-related-posts-grid-container {\n grid-template-columns: repeat(3, 1fr);\n }\n .sm-related-posts-grid-container > article:last-child {\n display: initial;\n }\n}\n\n.sm-related-posts .sm-card {\n grid-area: auto;\n}\n\n/* Comments */\n/* stylelint-disable-next-line selector-max-id */\n#ghost-comments-root {\n grid-column: content;\n}\n","/* Content */\n.sm-post-content {\n margin-block-end: 3rem;\n}\n\n.sm-post-content > * {\n grid-column: content;\n margin-block-end: 1rem;\n}\n\n/* Links */\n.sm-post-content a {\n text-decoration: underline;\n text-decoration-thickness: 2px;\n transition: text-decoration-color 0.1s;\n}\n\n.sm-post-content a:hover {\n text-decoration-color: var(--primary);\n}\n\n/* Divider */\n.sm-post-content hr {\n height: 1px;\n background-color: var(--border-color);\n border: none;\n}\n\n/* Table */\n.sm-table-wrapper {\n border: 1px solid var(--border-color);\n border-radius: var(--radius);\n border-radius: var(--radius);\n}\n\n.sm-post-content table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.sm-post-content tbody tr {\n border-top: 1px solid var(--border-color);\n transition: background-color 0.3s;\n}\n\n.sm-post-content tbody tr:hover {\n background-color: var(--surface-dark);\n}\n\n.sm-post-content thead th {\n padding: var(--radius);\n font-family: var(--heading-typeface);\n text-align: left;\n}\n\n.sm-post-content tbody td {\n padding: var(--radius);\n font-size: var(--small);\n}\n\n/* Code */\n.sm-post-content code:not([class*='language']) {\n padding: 0.15em 0.25em;\n font-family: var(--mono-typeface);\n font-size: var(--small);\n color: var(--element-light);\n background-color: var(--border-color);\n border-radius: 4px;\n}\n\n/* List */\n.sm-post-content li {\n line-height: inherit;\n}\n\n.sm-post-content li:not(:last-child) {\n margin-block-end: 0.5em;\n}\n",".sm-search {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 35;\n display: none;\n width: 100%;\n height: 100%;\n overflow: auto;\n background-color: var(--surface-85);\n backdrop-filter: blur(15px);\n}\n\n.sm-search-form {\n margin-block-start: 1.5rem;\n grid-auto-rows: min-content;\n}\n\n.sm-show-search {\n display: initial;\n}\n\n.sm-search-form-container {\n grid-column: content;\n margin-block: 2rem;\n}\n\n.sm-search-input-container {\n position: relative;\n}\n\n.sm-clear-search-button {\n position: absolute;\n top: 50%;\n right: 0.75em;\n box-sizing: content-box;\n display: none;\n width: 1em;\n height: 1em;\n line-height: 1;\n transform: translate(0, -50%);\n}\n\n.sm-clear-search-button.sm-show-clear-button {\n display: initial;\n}\n\n.sm-clear-search-button svg {\n width: 1em;\n height: 1em;\n transition: fill 0.3s;\n fill: var(--element-light);\n}\n\n.sm-clear-search-button:hover svg {\n fill: var(--secondary);\n}\n\n.sm-search-form input {\n width: 100%;\n padding: var(--button-padding);\n color: var(--element);\n background-color: var(--surface-dark);\n border: 1px solid transparent;\n border-radius: var(--radius);\n caret-color: var(--secondary);\n}\n\n.sm-search-form input::placeholder {\n color: var(--element-dark);\n}\n\n.sm-search-form input:focus-visible {\n border-color: var(--primary);\n outline: 0;\n}\n\n.sm-search-results-container {\n grid-column: content;\n padding-block-end: 3rem;\n}\n\n.sm-search-result {\n font-family: var(--heading-typeface);\n font-size: var(--h3);\n font-weight: 700;\n line-height: 1.1;\n}\n\n.sm-search-result-link {\n display: block;\n width: fit-content;\n margin-block-end: 1rem;\n transition: color 0.3s;\n}\n\n.sm-search-result-link:hover,\n.sm-search-result-link:focus {\n color: var(--secondary);\n outline: 0;\n}\n\n.sm-matching-terms {\n display: flex;\n gap: 0.5em;\n font-size: var(--small);\n color: var(--surface);\n}\n\n.sm-matching-terms span {\n padding: 0 0.25em;\n background-color: var(--primary);\n border-radius: var(--radius);\n opacity: 0.75;\n}\n",".sm-author-profile-image {\n width: 6.5rem;\n height: 6.5rem;\n border: 1px solid var(--border-color);\n border-radius: 50%;\n box-shadow: var(--box-shadow);\n}\n\n.sm-author-location {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.35em;\n margin-block-end: 1rem;\n}\n\n.sm-author-location svg {\n width: 1em;\n height: 1em;\n fill: var(--element-light);\n}\n\n.sm-author-socials {\n display: flex;\n justify-content: center;\n margin-block-start: 2rem;\n gap: 1rem;\n}\n\n.sm-author-posts-container > h2 span {\n display: none;\n vertical-align: middle;\n}\n\n.paged .sm-author-posts-container > h2 span {\n display: initial;\n}\n\n.sm-author-posts-container > * {\n grid-column: content;\n}\n\n.sm-author-posts-container > h2 {\n margin: 3rem 0 0;\n /* border-top: 1px solid var(--border-color); */\n}\n\n.sm-author-posts-container .sm-basic-grid:last-child {\n padding-block-end: 3rem;\n}\n",".sm-404 {\n grid-column: content;\n}\n\n.sm-404 a {\n text-decoration: underline;\n}\n",".page-template .sm-grid > * {\n grid-column: content;\n}\n",".sm-card {\n position: relative;\n border-radius: var(--radius);\n transition: background 3s;\n}\n\n.sm-card::before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n content: '';\n border-radius: var(--radius);\n box-shadow: var(--box-shadow);\n opacity: 0;\n transition: opacity 0.3s;\n}\n\n.sm-card:hover,\n.sm-card:focus {\n outline: none;\n}\n\n.sm-card:hover::before,\n.sm-card:focus::before {\n opacity: 1;\n}\n\n.sm-card-link {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n height: 100%;\n overflow: hidden;\n background-color: var(--surface-light);\n border-radius: var(--radius);\n}\n\n.sm-cta-card,\n.sm-tags-card {\n background-color: var(--surface-light);\n}\n\n.sm-card img {\n width: 100%;\n height: 100%;\n border-top-left-radius: var(--radius-small);\n border-top-right-radius: var(--radius-small);\n aspect-ratio: 16 / 9;\n object-fit: cover;\n}\n\n.sm-card h2 {\n margin: 0;\n font-size: 2rem;\n line-height: 1.1;\n}\n\n.sm-card h2:not(.large) {\n font-size: 1.35rem;\n}\n\n.sm-card-body {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n height: inherit;\n padding: 1rem;\n}\n\n.sm-card .sm-excerpt {\n margin-block-start: 0.75rem;\n font-size: 0.875rem;\n}\n\n.sm-card-footer {\n display: flex;\n justify-content: space-between;\n margin-block-start: 2rem;\n gap: 1rem;\n}\n\n.sm-card .sm-tag {\n display: inline-block;\n max-width: 70%;\n padding: 0 0.75em;\n overflow: hidden;\n font-size: var(--x-small);\n color: var(--element-light);\n text-overflow: ellipsis;\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing);\n white-space: nowrap;\n background-color: var(--border-color);\n border-radius: var(--radius);\n}\n\n.sm-card .sm-reading-time {\n font-size: var(--x-small);\n color: var(--element-light);\n}\n\n@media (--tablet) {\n .sm-card-horizontal .sm-card-link {\n flex-direction: row;\n }\n\n .sm-grid-feature .sm-card-horizontal picture {\n max-width: 50%;\n }\n\n .sm-grid-feature .sm-card-horizontal img {\n max-width: none;\n }\n\n .sm-card-horizontal img {\n max-width: 12.5rem;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n}\n\n.sm-card-horizontal .sm-card-body {\n display: flex;\n flex: 1;\n flex-direction: column;\n justify-content: space-between;\n}\n\n.sm-card-1 .sm-card-horizontal .sm-card-link img {\n flex: 1;\n width: 50%;\n}\n\n/* Feature cards */\n.sm-feature-card {\n border-radius: var(--radius);\n}\n\n.sm-feature-card h2 {\n margin-top: 0;\n}\n\n/* CTA */\n.sm-cta-card {\n position: relative;\n}\n\n.sm-cta-card picture + form {\n height: auto;\n margin-block-start: 2rem;\n}\n\n.sm-cta-card img {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 4rem;\n height: 4rem;\n margin-inline: auto;\n transform: translate(-50%, -50%);\n}\n\n.sm-cta-card form {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n height: 100%;\n padding: 1.5rem 1rem;\n text-align: center;\n}\n\n.sm-cta-copy {\n display: flex;\n flex-direction: column;\n}\n\n.sm-cta-card h2 {\n margin: 0 0 0.5rem;\n line-height: 1.1;\n background: linear-gradient(45deg, var(--primary), var(--secondary));\n background-clip: text;\n -webkit-text-fill-color: transparent;\n}\n\n.sm-cta-card input {\n width: 100%;\n padding: 0.25em;\n margin-block-start: 2rem;\n color: var(--element);\n text-align: center;\n background-color: transparent;\n border-bottom: 3px solid var(--border-color);\n transition: border-color 0.3s;\n}\n\n.sm-cta-card input:focus-visible {\n border-color: var(--element);\n outline: none;\n}\n\n.sm-cta-card input::placeholder {\n color: var(--element-light);\n text-align: center;\n opacity: 0.5;\n}\n\n.sm-cta-card button {\n margin-block-start: 2rem;\n}\n\n/* Tags */\n.sm-tags-card {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n overflow: hidden;\n}\n\n.sm-tags-card > * {\n flex: 1;\n}\n\n/* Tags card */\n.sm-tags-card h2 {\n margin: 1rem;\n}\n\n.sm-tags-card > h2 > a {\n transition: color var(--transition);\n}\n\n.sm-tags-card > h2 > a:hover {\n color: var(--primary);\n}\n\n.sm-tags-card > a {\n padding: 1rem;\n font-weight: 700;\n color: var(--element-light);\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing);\n border-bottom: 1px solid var(--border-color);\n transition: background-color 0.1s, color 0.1s;\n}\n\n.sm-tags-card > a:first-of-type {\n border-top: 1px solid var(--border-color);\n}\n\n.sm-tags-card > a:last-child {\n border-bottom: none;\n}\n\n.sm-tags-card span {\n float: right;\n font-variant-numeric: tabular-nums;\n}\n\n.sm-tags-card > a:hover {\n color: var(--surface);\n background-color: var(--secondary);\n}\n\n.sm-tags-card > a:nth-of-type(2):hover {\n background-color: hsla(\n var(--complementary-color) var(--saturation) var(--lightness) / 0.75\n );\n}\n\n.sm-tags-card > a:nth-of-type(3):hover {\n color: var(--element);\n background-color: hsla(\n var(--complementary-color) var(--saturation) var(--lightness) / 0.5\n );\n}\n\n.sm-tags-card > a:nth-of-type(4):hover {\n color: var(--element);\n background-color: hsla(\n var(--complementary-color) var(--saturation) var(--lightness) / 0.25\n );\n}\n\n.sm-tags-card > a:nth-of-type(5):hover {\n color: var(--element);\n background-color: hsla(\n var(--complementary-color) var(--saturation) var(--lightness) / 0.05\n );\n}\n\n:root[data-color-pref='dark'] .sm-tags-card > a:nth-of-type(2):hover {\n color: var(--element);\n background-color: hsla(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5) /\n 0.75\n );\n}\n\n:root[data-color-pref='dark'] .sm-tags-card > a:nth-of-type(3):hover {\n color: var(--element);\n background-color: hsla(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5) /\n 0.5\n );\n}\n:root[data-color-pref='dark'] .sm-tags-card > a:nth-of-type(4):hover {\n color: var(--element);\n background-color: hsla(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5) /\n 0.25\n );\n}\n:root[data-color-pref='dark'] .sm-tags-card > a:nth-of-type(5):hover {\n color: var(--element);\n background-color: hsla(\n var(--complementary-color) var(--saturation) calc(var(--lightness) * 1.5) /\n 0.05\n );\n}\n\n.sm-card .sm-love-button {\n position: absolute;\n right: 1rem;\n bottom: 1rem;\n}\n\n.sm-card .sm-love-button svg {\n width: 1rem;\n height: 1rem;\n fill: var(--primary);\n}\n",".sm-form-button,\n.sm-button,\n.sm-icon-button,\n.sm-button-simple {\n padding: var(--button-padding);\n font-size: var(--small);\n font-weight: 700;\n line-height: 1;\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing);\n border-radius: var(--radius);\n}\n\n.sm-form-button,\n.sm-button {\n color: var(--button-text);\n background-color: var(--primary);\n}\n\n/* Icon button */\n.sm-icon-button {\n display: flex;\n align-items: center;\n color: var(--element);\n text-align: center;\n white-space: nowrap;\n background-color: hsla(\n var(--primary-h) var(--saturation) var(--lightness) / 0.15\n );\n transition: background-color 0.3s;\n gap: 1em;\n}\n\n.sm-icon-button:hover {\n background-color: hsla(\n var(--primary-h) var(--saturation) var(--lightness) / 0.25\n );\n}\n\n.sm-icon-button svg {\n width: 1em;\n height: 1em;\n fill: var(--element);\n}\n\n/* Circle icon button \nUsed in navigation and pagination */\n.sm-circle-icon-button {\n box-sizing: content-box;\n width: 1em;\n height: 1em;\n padding: 0.25em;\n line-height: 1;\n border-radius: 50%;\n transition: background-color 0.3s;\n}\n\n.sm-circle-icon-button svg {\n width: 1em;\n height: 1em;\n fill: var(--element-light);\n}\n\n.sm-circle-icon-button:not([disabled]):hover {\n background-color: var(--border-color);\n}\n\n.sm-circle-icon-button[disabled] {\n opacity: 0.5;\n}\n\n/* Simple button\nUsed in footer */\n.sm-button-simple {\n display: flex;\n align-items: center;\n border: 1px solid var(--border-color);\n transition: background-color 0.3s;\n gap: 1em;\n}\n\n.sm-button-simple svg {\n width: 1em;\n height: 1em;\n fill: var(--element-light);\n}\n\n.sm-button-simple:focus-visible,\n.sm-button-simple:hover {\n background-color: var(--border-color);\n outline: none;\n}\n\n/* Circle close button \nUsed in search and */\n.sm-circle-close-button {\n position: absolute;\n top: 1rem;\n right: 1rem;\n box-sizing: content-box;\n\n width: max(1rem, 30px);\n height: max(1rem, 30px);\n padding: 0.25rem;\n line-height: 1;\n border-radius: 50%;\n transition: background-color 0.3s;\n}\n\n.sm-circle-close-button:hover {\n background-color: var(--border-color);\n}\n\n.sm-circle-close-button svg {\n width: max(1rem, 30px);\n height: max(1rem, 30px);\n fill: var(--element);\n}\n",".sm-overflow-container {\n position: relative;\n line-height: 1;\n}\n\n.sm-overflow-button {\n box-sizing: content-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1rem;\n height: 1rem;\n padding: 0.25rem;\n line-height: 0;\n line-height: 0;\n border-radius: 50%;\n transition: background-color var(--transition);\n transform: translate(0, 0.15em);\n}\n\n.sm-overflow-button svg {\n display: inline-block;\n width: 1em;\n height: 1em;\n line-height: 0;\n /* transform: translateY(0.125rem); */\n fill: var(--element);\n}\n\n.sm-overflow-menu {\n position: absolute;\n top: 2rem;\n left: 50%;\n z-index: 20;\n display: none;\n max-width: 75vw;\n background-color: var(--surface);\n border: 1px solid var(--border-color);\n border-radius: var(--radius);\n box-shadow: var(--box-shadow);\n transform: translate(-50%, 0);\n}\n\n.sm-overflow-menu > div {\n flex-direction: column;\n justify-content: center;\n padding: 1rem;\n gap: 1rem;\n}\n\n.sm-overflow-buttons {\n display: flex;\n}\n\n.sm-overflow-button:hover {\n background-color: var(--border-color);\n}\n\n.sm-overflow-menu::before {\n position: absolute;\n top: 0;\n left: 50%;\n pointer-events: none;\n content: '';\n border-color: transparent transparent var(--border-color) transparent;\n border-style: solid;\n border-width: 0.5rem;\n transform: translate(-50%, -100%);\n}\n\n[data-color-pref='light'] .sm-light-mode {\n display: none;\n}\n\n[data-color-pref='dark'] .sm-dark-mode {\n display: none;\n}\n\n/* Follow */\n.sm-overflow-follow,\n.sm-overflow-share,\n.sm-overflow-saves {\n display: none;\n}\n\n.sm-overflow-back {\n position: absolute;\n top: 0.5em;\n left: -0.5em;\n box-sizing: content-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1rem;\n height: 1rem;\n padding: 0.25em;\n line-height: 0;\n background-color: var(--surface-light);\n border-radius: 50%;\n box-shadow: var(--box-shadow);\n transform: translate(-100%, 50%);\n}\n\n.sm-overflow-back svg {\n display: inline-block;\n width: inherit;\n height: inherit;\n}\n\n.sm-show {\n display: flex;\n}\n\n.sm-hide {\n display: none;\n}\n",".sm-pagination {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--button-padding);\n font-size: var(--small);\n border: 1px solid var(--border-color);\n border-radius: var(--radius);\n grid-column: content;\n gap: var(--gap);\n}\n\n.sm-pagination,\n.sm-pagination-holder {\n margin-block: 6rem 3rem;\n}\n\n.sm-current {\n color: var(--primary);\n}\n\n.sm-pagination-item:hover {\n color: var(--primary);\n}\n\n.sm-prev {\n margin-inline-end: auto;\n}\n\n.sm-next {\n margin-inline-start: auto;\n}\n\n.sm-nav-disabled {\n opacity: 0.3;\n}\n\n.sm-circle-icon-button.sm-nav-disabled:hover {\n background-color: transparent;\n}\n",".sm-loading,\n.sm-footer-loading,\n.sm-success,\n.sm-footer-success,\n.sm-error,\n.sm-footer-error {\n display: none;\n}\n\n[data-members-form].loading .sm-default:not(.sm-cta-copy),\n[data-members-form].success .sm-default,\n[data-members-form].error .sm-default,\n[data-members-form].loading .sm-footer-default:not(.sm-footer-default-text),\n[data-members-form].success .sm-footer-default,\n[data-members-form].error .sm-footer-default {\n display: none;\n}\n\n[data-members-form].loading .sm-loading,\n[data-members-form].success .sm-success,\n[data-members-form].error .sm-error,\n[data-members-form].loading .sm-footer-loading,\n[data-members-form].success .sm-footer-success,\n[data-members-form].error .sm-footer-error {\n display: flex;\n}\n\n.sm-loading svg,\n.sm-footer-loading svg {\n animation: sm-spin 1s infinite linear;\n}\n\n@keyframes sm-spin {\n to {\n transform: rotate(1turn);\n }\n}\n",".sm-nav-menu-container {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 35;\n display: none;\n /* align-items: center; */\n justify-content: center;\n width: 100%;\n height: 100%;\n height: 100vh;\n padding: 3rem var(--gap);\n overflow-y: auto;\n\n text-align: center;\n background-color: var(--surface);\n}\n\n.sm-nav-menu-container.sm-show-menu {\n display: flex;\n}\n\n.sm-nav-menu-navigation-container {\n display: flex;\n flex-direction: column;\n /* align-items: center; */\n gap: 1rem;\n height: 100vh;\n margin-bottom: 3rem;\n /* margin-block-start: 6rem; */\n}\n\n.sm-nav-menu-navigation-container .sm-navigation {\n flex-direction: column;\n align-items: center;\n}\n\n.sm-nav-menu-header {\n margin-block: 2rem 1rem;\n font-size: var(--small);\n color: var(--element-light);\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing);\n opacity: 0.8;\n}\n\n.sm-nav-menu-navigation-container .sm-navigation a {\n font-size: 1.25rem;\n font-weight: 700;\n}\n\n.sm-nav-menu-section {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n justify-content: center;\n gap: var(--gap);\n}\n\n.sm-nav-menu-section :where(button, a) {\n justify-content: center;\n}\n\n.sm-nav-menu-navigation-container > .sm-icon-button {\n margin-block-start: 2rem;\n}\n\n.sm-nav-menu-grid-container {\n grid-template-columns: 1fr 1fr;\n gap: var(--gap);\n justify-content: space-between;\n width: 100%;\n}\n\n.sm-nav-menu-navigation-container :where(.sm-dark-mode, .sm-light-mode) {\n justify-content: center;\n margin-block-end: 3rem;\n}\n",".sm-header-grid > * {\n grid-column: content;\n text-align: center;\n}\n\n.sm-header-title {\n margin: 0;\n font-weight: 900;\n}\n\n.sm-header-excerpt {\n max-width: 66ch;\n margin-inline: auto;\n color: var(--element-light);\n opacity: 0.85;\n}\n\n.sm-header-image {\n width: 100%;\n aspect-ratio: 16 / 9;\n}\n\n.sm-header-image figcaption {\n margin-block-start: 3px;\n font-size: var(--small);\n opacity: 0.8;\n}\n\n.sm-header-image img {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: var(--radius);\n object-fit: cover;\n}\n\n.sm-tag-count {\n display: inline-block;\n padding: var(--button-padding);\n margin-inline-start: 1em;\n font-family: 'Work Sans', sans-serif;\n font-size: var(--x-small);\n font-weight: 400;\n line-height: 1;\n color: var(--element-light);\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing);\n background-color: var(--border-color);\n border-radius: var(--radius);\n translate: 0 -0.5em;\n}\n",".sm-love-button {\n display: inline-block;\n transform: translateY(0.25em);\n}\n\n.sm-love-button .sm-heart-fill-icon {\n display: none;\n}\n\n.sm-love-button.sm-love-toggle .sm-heart-outline-icon {\n display: none;\n}\n\n.sm-love-button.sm-love-toggle .sm-heart-fill-icon {\n display: inline-block;\n}\n\n.sm-overflow-articles {\n display: grid;\n min-width: 18rem;\n max-width: 100%;\n gap: var(--gap);\n}\n\n.sm-saves {\n padding: 0.5em 1em;\n border-radius: var(--radius);\n}\n\n.sm-saves progress::-webkit-progress-bar {\n background-color: var(--primary-light);\n border-radius: var(--radius);\n opacity: 0.5;\n}\n\n.sm-saves progress::-webkit-progress-value {\n overflow: hidden;\n background-color: var(--primary);\n border-radius: var(--radius);\n}\n\n.sm-saves-meta {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--gap);\n}\n\n.sm-saves-meta button {\n font-size: 1rem;\n transform: none;\n}\n\n.sm-saves-title {\n font-family: var(--heading-typeface);\n font-weight: 700;\n text-align: left;\n transition: 0.3s color;\n}\n\n.sm-saves-title:hover {\n color: var(--primary);\n}\n\n.sm-saves-date {\n margin-block: 0.5rem 0;\n font-size: var(--x-small);\n text-align: left;\n}\n\n.sm-saves button span {\n line-height: 0;\n}\n",".sm-hero {\n position: relative;\n min-height: 60vmin;\n padding-block-end: 3rem;\n}\n\n.sm-hero + .sm-grid .sm-grid-home {\n padding-block-start: 3rem;\n}\n\n.sm-hero-inner {\n height: 100%;\n padding-block-start: 6rem;\n grid-column: content;\n}\n\n@media (--tablet) {\n .sm-hero-inner {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: var(--gap);\n align-items: center;\n }\n}\n\n.sm-hero-left {\n position: relative;\n z-index: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n height: 100%;\n padding-inline-end: 1rem;\n text-align: center;\n}\n\n.sm-hero-subtitle {\n margin-block-end: 1rem;\n font-family: var(--heading-typeface);\n font-size: var(--h1);\n font-weight: 900;\n line-height: 1.2;\n background-image: linear-gradient(45deg, var(--primary), var(--secondary));\n background-clip: text;\n -webkit-text-fill-color: transparent;\n}\n@supports (color: color(display-p3 1 0.5 0)) {\n .sm-hero-subtitle,\n .sm-cta-card h2 {\n background-image: linear-gradient(\n 45deg,\n color(display-p3 var(--r) var(--g) var(--b)),\n color(display-p3 var(--cr) var(--cg) var(--cb))\n );\n }\n\n :root[data-color-pref='dark'] :where(.sm-hero-subtitle, .sm-cta-card h2) {\n filter: brightness(1.5);\n }\n}\n\n.sm-hero-description {\n font-size: 1.15rem;\n color: var(--element-dark);\n}\n\n.sm-hero-bg {\n position: absolute;\n display: block;\n width: 100%;\n height: 100%;\n opacity: 0.25;\n object-fit: cover;\n mix-blend-mode: multiply;\n}\n\n.sm-hero-img img {\n display: block;\n width: 100%;\n height: auto;\n margin: 0 auto;\n border-radius: var(--radius);\n object-fit: cover;\n}\n\n.sm-hero-right {\n display: none;\n}\n\n.sm-hero-button-container:not(:empty) {\n display: flex;\n justify-content: center;\n margin-block-start: 2rem;\n gap: 1rem;\n}\n\n.sm-hero-cta-2 {\n position: relative;\n color: var(--element);\n background-color: transparent;\n}\n\n.sm-hero-cta-2 svg {\n position: absolute;\n top: 40%;\n left: 0;\n z-index: -1;\n width: 100%;\n height: 100%;\n /* opacity: 0.5; */\n}\n\n@media (--tablet) {\n .sm-hero-bg {\n display: none;\n }\n\n .sm-hero-img {\n max-height: 50vmin;\n }\n\n .sm-hero-left {\n text-align: start;\n }\n\n .sm-hero-right {\n display: initial;\n }\n\n .sm-hero-button-container:not(:empty) {\n justify-content: flex-start;\n }\n}\n",".sm-form {\n display: flex;\n flex-direction: column;\n width: 100%;\n max-width: var(--content-width);\n padding: var(--gap);\n margin: 2rem auto;\n border: 1px solid var(--border-color);\n border-radius: var(--radius);\n}\n\n.sm-form label,\n.sm-form input,\n.sm-form textarea,\n.sm-form button {\n /* display: inline-block; */\n}\n\n.sm-form input,\n.sm-form textarea {\n padding: var(--button-padding);\n margin-block-end: 1rem;\n color: var(--element);\n background-color: var(--surface);\n border: 1px solid var(--border-color);\n border-radius: var(--radius);\n}\n\n.sm-form textarea {\n height: 10rem;\n resize: none;\n}\n\n.sm-form input:focus-visible,\n.sm-form textarea:focus-visible {\n border-color: var(--secondary);\n outline: none;\n}\n\n.sm-form button:hover,\n.sm-form button:focus-visible {\n background-color: var(--secondary);\n outline: none;\n}\n",".sm-gradient-divider {\n height: 5rem;\n background-image: linear-gradient(0deg, var(--surface), var(--surface-dark));\n}\n\n.sm-gradient-divider-reverse {\n height: 5rem;\n background-image: linear-gradient(\n 180deg,\n var(--surface),\n var(--surface-dark)\n );\n}\n",".sm-post-toc {\n position: fixed;\n bottom: 28px;\n left: 28px;\n z-index: 5;\n pointer-events: none;\n transition: opacity 0.5s;\n isolation: isolate;\n}\n\n.sm-post-toc-btn {\n position: relative;\n box-sizing: content-box;\n width: 30px;\n height: 30px;\n padding: 0.75rem;\n pointer-events: all;\n background: var(--surface-light);\n border-radius: 50%;\n box-shadow: 0 4px 1rem hsl(var(--primary-h) var(--saturation) 9% / 0.1);\n transition: color var(--transition);\n --conic-gradient: var(--surface-light) 0deg 0%, var(--surface-light) 0deg 100%;\n}\n\n.sm-post-toc-btn::before {\n position: absolute;\n z-index: -1;\n content: '';\n background-image: conic-gradient(var(--conic-gradient));\n border-radius: 50%;\n opacity: 0.5;\n transition: background-image var(--transition);\n inset: -3px;\n}\n\n.sm-post-toc-btn:hover,\n.sm-post-toc-btn:focus-visible {\n color: var(--primary);\n}\n\n.sm-post-toc-btn svg {\n width: 100%;\n height: 100%;\n fill: currentcolor;\n}\n\n.sm-post-toc-contents {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n max-width: min(500px, calc(100vw - 56px));\n padding: 1rem 0.75rem;\n margin-block-end: 1rem;\n pointer-events: none;\n background: var(--surface-light);\n filter: drop-shadow(\n 0 4px 1rem hsl(var(--primary-h) var(--saturation) 9% / 0.1)\n );\n border-radius: var(--radius);\n opacity: 0;\n transition: scale 0.2s ease-out, opacity 0.2s 0.1s ease-out,\n translate 0.2s 0.1s ease-out;\n transform-origin: bottom left;\n gap: 0.5rem;\n scale: 0;\n translate: 15px 10%;\n max-height: 70vh;\n overflow-y: auto;\n}\n\n.sm-post-toc-contents::before {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.25rem 0.5rem;\n font-size: var(--x-small);\n color: var(--element-light);\n text-transform: uppercase;\n letter-spacing: var(--letter-spacing);\n opacity: 0.5;\n content: 'Contents';\n}\n\n.toc-show {\n pointer-events: all;\n opacity: 1;\n transition: scale 0.2s ease-in, opacity 0.2s ease-in, translate 0.2s ease-in;\n scale: 1;\n translate: 0 0;\n}\n\n.sm-toc-h3 {\n padding-inline-start: 0.5rem;\n}\n\n.sm-toc-h4 {\n padding-inline-start: 1rem;\n}\n\n.sm-toc-h5 {\n padding-inline-start: 1.5rem;\n}\n\n.sm-toc-h6 {\n padding-inline-start: 2rem;\n}\n\n.sm-toc-link {\n transition: color var(--transition);\n}\n\n.sm-toc-link:hover,\n.sm-toc-link:focus {\n color: var(--primary);\n}\n\n.sm-toc-active {\n color: var(--primary);\n}\n\n.toc-hide {\n opacity: 0;\n}\n\n.sm-toc-icon-close {\n display: none;\n}\n\n.toc-show ~ .sm-post-toc-btn .sm-toc-icon-close {\n display: initial;\n}\n\n.toc-show ~ .sm-post-toc-btn .sm-toc-icon {\n display: none;\n}\n","/* Blockquote */\nblockquote:not(.kg-blockquote-alt) {\n padding-inline-start: 2rem;\n border-left: 3px solid var(--border-color);\n}\n\n.kg-blockquote-alt {\n font-family: var(--heading-typeface);\n line-height: 1.2;\n}\n\n.kg-blockquote-alt::before,\n.kg-blockquote-alt::after {\n color: var(--secondary);\n}\n\n.kg-blockquote-alt::before {\n padding-inline-end: 0.1em;\n content: '\\002301';\n}\n\n.kg-blockquote-alt::after {\n content: '\\002301';\n}\n\n/* Cards and images */\n.kg-card {\n width: 100%;\n margin-inline: auto;\n}\n\n.kg-card,\n.kg-blockquote-alt {\n margin-block: 1rem 2rem;\n}\n\n.kg-image,\n.sm-post-content img {\n display: block;\n max-width: 100%;\n height: auto;\n margin-inline: auto;\n}\n\n.sm-post-content figcaption {\n padding: 0.25rem;\n font-size: var(--small);\n text-align: center;\n}\n\n.kg-width-wide,\n.kg-embed-card,\n.kg-gallery-card {\n grid-column: content;\n}\n\n.kg-embed-card .twitter-tweet {\n margin-inline: auto;\n}\n\n@media (--tablet) {\n .kg-width-wide,\n .kg-gallery-card {\n grid-column: wide;\n }\n}\n\n.kg-width-full {\n grid-column: start / end;\n}\n\n.kg-embed-card [src*='youtube'],\n.kg-embed-card [src*='vimeo'] {\n width: 100%;\n height: auto;\n aspect-ratio: 16 / 9;\n}\n\n.kg-embed-card iframe {\n /* stylelint-disable-next-line declaration-no-important */\n margin-inline: auto !important;\n}\n",".medium-zoom-overlay {\n z-index: 10;\n}\n\n.medium-zoom-image {\n z-index: 11;\n}\n"]} \ No newline at end of file diff --git a/assets/built/app.js b/assets/built/app.js index 57f063e9..feaba382 100644 --- a/assets/built/app.js +++ b/assets/built/app.js @@ -1,2 +1,472 @@ -!function(){"use strict";function e(e){document.documentElement.setAttribute("data-color-pref",e),localStorage.setItem("pref",e)}async function t(){const e=window.location.href;await navigator.clipboard.writeText(e),document.querySelectorAll(".sm-copy-button").forEach((e=>{const t=e,s=t.innerHTML;t.innerHTML=' Copied ✅',setTimeout((()=>{t.innerHTML=s}),3e3)}))}class s{constructor(e){this.id=e&&e.dataset.id||null,this.title=e&&e.dataset.title||null,this.items=()=>s.makeArray(JSON.parse(localStorage.getItem("saves"))),this.int=null}generateItem(){return{id:this.id,title:this.title,timestamp:new Date,scrollPos:this.scrollStatus().scrollPos,progress:this.scrollStatus().progress}}save(){localStorage.setItem("saves",JSON.stringify([this.generateItem(),...this.items()])),this.populateSavesMenu(),this.updateScrollPosition();document.querySelectorAll(`button[data-id=${this.id}]`).forEach((e=>{e.classList.add("sm-love-toggle")}))}remove(){const e=[...this.items()],t=e.findIndex((e=>this.id===e.id));e.splice(t,1),localStorage.removeItem("saves"),e.length&&localStorage.setItem("saves",JSON.stringify(e)),this.int=null,this.populateSavesMenu();document.querySelectorAll(`button[data-id=${this.id}]`).forEach((e=>{e.classList.remove("sm-love-toggle")}))}static makeArray(e){return e?e.length?e:[e]:[]}scrollStatus(){return this.isCurrentPageSaved()<0?{scrollPos:null,progress:null}:{scrollPos:window.scrollY,progress:Math.round(window.scrollY/(document.body.scrollHeight-document.body.clientHeight)*100)}}identifySaves(){this.items()&&this.items().forEach((e=>{const{id:t}=e,s=document.querySelectorAll(`button[data-id=${t}]`);s&&s.forEach((e=>e.classList.add("sm-love-toggle")))}))}isCurrentPageSaved(){const e=window.location.pathname.replace(/\//g,"");return this.items().findIndex((t=>t.id===e))}step(){const e=this.isCurrentPageSaved();if(e<0)return;const t=this.items();t[e].progress=this.scrollStatus().progress,t[e].scrollPos=this.scrollStatus().scrollPos,localStorage.removeItem("saves"),localStorage.setItem("saves",JSON.stringify(t)),this.populateSavesMenu(),setTimeout((()=>{window.requestAnimationFrame(this.step.bind(this))}),1e3)}updateScrollPosition(){if(!this.items().length)return;this.isCurrentPageSaved()<0||window.requestAnimationFrame(this.step.bind(this))}scrollToPos(){if(this.isCurrentPageSaved()>-1){const e=this.items();window.scrollTo({top:e[this.isCurrentPageSaved()].scrollPos,behavior:"smooth"})}}renderSavesMenu(){return this.items().map((e=>`
\n
\n
\n

${e.title}

\n

Saved on ${(new Intl.DateTimeFormat).format(new Date(e.timestamp))}

\n
\n \n
\n
`)).join("")}populateSavesMenu(){const e=document.querySelector(".sm-overflow-articles"),t=document.querySelector(".sm-nav-menu-saves");if(!this.items().length){const s="

No articles saved yet. Hit the heart to get started!

";return e.innerHTML=s,void(t.innerHTML=s)}e.innerHTML=this.renderSavesMenu(),t.innerHTML=this.renderSavesMenu()}init(){this.identifySaves(),this.populateSavesMenu(),this.scrollToPos(),this.updateScrollPosition()}}function o(o){if(o.target.closest(".sm-navbar-menu-button")&&document.querySelector(".sm-nav-menu-container").classList.add("sm-show-menu"),o.target.closest(".sm-love-button"))!function(e){const t=new s(e),o=t.items();if(!o.length)return void t.save();const{id:n}=t;o.find((e=>e.id===n))?t.remove():t.save()}(o.target.closest(".sm-love-button"));else if(o.target.closest(".sm-nav-menu-close-button")&&document.querySelector(".sm-nav-menu-container").classList.remove("sm-show-menu"),o.target.closest(".sm-copy-button"))t();else if(o.target.closest(".sm-dark-mode"))e("dark");else{if(!o.target.closest(".sm-light-mode"))return o.target.closest(".sm-follow-button")?(document.querySelector(".sm-overflow-buttons").classList.add("sm-hide"),void document.querySelector(".sm-overflow-follow").classList.add("sm-show")):o.target.closest(".sm-share-button")?(document.querySelector(".sm-overflow-buttons").classList.add("sm-hide"),void document.querySelector(".sm-overflow-share").classList.add("sm-show")):o.target.closest(".sm-saves-button")?(document.querySelector(".sm-overflow-buttons").classList.add("sm-hide"),void document.querySelector(".sm-overflow-saves").classList.add("sm-show")):o.target.closest(".sm-overflow-back")?(o.target.closest(".sm-overflow-back").parentElement.classList.remove("sm-show"),void document.querySelector(".sm-overflow-buttons").classList.remove("sm-hide")):void(o.target.closest(".sm-overflow-button")?document.querySelector(".sm-overflow-menu").classList.toggle("sm-show"):"A"===o.target.tagName&&o.target.closest(".sm-overflow-menu")||document.querySelector(".sm-overflow-menu").classList.contains("sm-show")&&(o.preventDefault(),document.querySelector(".sm-overflow-menu").classList.remove("sm-show")));e("light")}}function n(e){"Escape"===e.code&&document.querySelector("[class*=show]")}function r(e,t,s){const o="previous"===t?"left":"right",n="previous"===t?"sm-prev":"sm-next",r=e?document.createElement("a"):document.createElement("span");r.innerHTML=``,r.classList.add("sm-circle-icon-button",n),e?(r.setAttribute("aria-label",`${t} posts`),r.setAttribute("href",e)):r.classList.add("sm-circle-icon-button","sm-nav-disabled"),s.append(r)}document.body.addEventListener("click",o),function(){const e=document.documentElement.clientHeight,{scrollHeight:t}=document.documentElement,s=document.querySelector(".sm-navbar-container");s.style.transition="background-color .6s",document.addEventListener("scroll",(()=>{const o=Math.round(window.scrollY)/(t-e);s.style.backgroundColor=o>.15?"var(--surface-light)":"var(--surface)"}))}(),function(){const e=document.querySelectorAll(".sm-dark-mode, .sm-light-mode");window.CSS&&CSS.supports("color","var(--primary)")||e.forEach((e=>{e.style.display="none"}))}(),function(){const e=document.querySelector(".sm-pagination");if(!e)return;const t=function(e){return/page/.test(e)?e.split("page")[0]:e}(window.location.pathname),{page:s,prev:o,next:n}=e.dataset;r(o,"previous",e);const a=s-2>0?s-2:1;for(let o=a-1;o { + e.style.display = 'none'; + }); + } + } + + function updateCopyButtonState() { + const copyButtons = document.querySelectorAll('.sm-copy-button'); + copyButtons.forEach((el) => { + const copyButton = el; + const currentState = copyButton.innerHTML; + copyButton.innerHTML = + ' Copied ✅'; + setTimeout(() => { + copyButton.innerHTML = currentState; + }, 3000); + }); + } + async function copyToClipboard() { + const currentURL = window.location.href; + await navigator.clipboard.writeText(currentURL); + updateCopyButtonState(); + } + + class Saves { + constructor(e) { + this.id = (e && e.dataset.id) || null; + this.title = (e && e.dataset.title) || null; + this.items = () => + Saves.makeArray(JSON.parse(localStorage.getItem('saves'))); + this.int = null; + } + + generateItem() { + return { + id: this.id, + title: this.title, + timestamp: new Date(), + scrollPos: this.scrollStatus().scrollPos, + progress: this.scrollStatus().progress, + }; + } + + save() { + localStorage.setItem( + 'saves', + JSON.stringify([this.generateItem(), ...this.items()]), + ); + + this.populateSavesMenu(); + this.updateScrollPosition(); + + const els = document.querySelectorAll(`button[data-id=${this.id}]`); + els.forEach((el) => { + el.classList.add('sm-love-toggle'); + }); + } + + remove() { + const items = [...this.items()]; + const itemIndex = items.findIndex((el) => this.id === el.id); + items.splice(itemIndex, 1); + localStorage.removeItem('saves'); + if (items.length) { + localStorage.setItem('saves', JSON.stringify(items)); + } + + this.int = null; + this.populateSavesMenu(); + + const els = document.querySelectorAll(`button[data-id=${this.id}]`); + els.forEach((el) => { + el.classList.remove('sm-love-toggle'); + }); + } + + static makeArray(data) { + if (!data) return []; + return data.length ? data : [data]; + } + + scrollStatus() { + if (this.isCurrentPageSaved() < 0) { + return { + scrollPos: null, + progress: null, + }; + } + return { + scrollPos: window.scrollY, + progress: Math.round( + (window.scrollY / + (document.body.scrollHeight - document.body.clientHeight)) * + 100, + ), + }; + } + + identifySaves() { + if (!this.items()) return; + + this.items().forEach((el) => { + const { id } = el; + const domEl = document.querySelectorAll(`button[data-id=${id}]`); + if (domEl) { + domEl.forEach((button) => button.classList.add('sm-love-toggle')); + } + }); + } + + isCurrentPageSaved() { + const currentPage = window.location.pathname.replace(/\//g, ''); + return this.items().findIndex((item) => item.id === currentPage); + } + + step() { + const itemIndex = this.isCurrentPageSaved(); + if (itemIndex < 0) { + return; + } + + const items = this.items(); + items[itemIndex].progress = this.scrollStatus().progress; + items[itemIndex].scrollPos = this.scrollStatus().scrollPos; + localStorage.removeItem('saves'); + localStorage.setItem('saves', JSON.stringify(items)); + this.populateSavesMenu(); + + setTimeout(() => { + window.requestAnimationFrame(this.step.bind(this)); + }, 1000); + } + + updateScrollPosition() { + const items = this.items(); + if (!items.length) return; + const itemIndex = this.isCurrentPageSaved(); + + if (itemIndex < 0) { + return; + } + + window.requestAnimationFrame(this.step.bind(this)); + } + + scrollToPos() { + if (this.isCurrentPageSaved() > -1) { + const items = this.items(); + window.scrollTo({ + top: items[this.isCurrentPageSaved()].scrollPos, + behavior: 'smooth', + }); + } + } + + renderSavesMenu() { + const template = this.items().map( + (el) => + `
+
+
+

${ + el.title + }

+

Saved on ${new Intl.DateTimeFormat().format( + new Date(el.timestamp), + )}

+
+ +
+
`, + ); + return template.join(''); + } + + populateSavesMenu() { + const savesMenu = document.querySelector('.sm-overflow-articles'); + const navSavesMenu = document.querySelector('.sm-nav-menu-saves'); + + if (!this.items().length) { + const noSavesText = + '

No articles saved yet. Hit the heart to get started!

'; + savesMenu.innerHTML = noSavesText; + navSavesMenu.innerHTML = noSavesText; + return; + } + savesMenu.innerHTML = this.renderSavesMenu(); + navSavesMenu.innerHTML = this.renderSavesMenu(); + } + + init() { + this.identifySaves(); + this.populateSavesMenu(); + this.scrollToPos(); + this.updateScrollPosition(); + } + } + + function save(e) { + const savedItems = new Saves(e); + + const items = savedItems.items(); + + if (!items.length) { + savedItems.save(); + return; + } + + const { id } = savedItems; + + if (items.find((el) => el.id === id)) { + savedItems.remove(); + } else { + savedItems.save(); + } + } + + function handleClick$1(e) { + if (e.target.closest('.sm-navbar-menu-button')) { + document + .querySelector('.sm-nav-menu-container') + .classList.add('sm-show-menu'); + } + + if (e.target.closest('.sm-love-button')) { + save(e.target.closest('.sm-love-button')); + // e.target.closest('.sm-love-button').classList.toggle('sm-love-toggle'); + return; + } + + if (e.target.closest('.sm-nav-menu-close-button')) { + document + .querySelector('.sm-nav-menu-container') + .classList.remove('sm-show-menu'); + } + + // if (e.target.closest('.sm-search-button')) { + // document.querySelector('.sm-search').classList.add('sm-show-search'); + // document.querySelector('#sm-search-input').focus(); + // return; + // } + + // if (e.target.closest('.sm-search-form-close-button')) { + // document.querySelector('.sm-search').classList.remove('sm-show-search'); + // return; + // } + + // if (e.target.closest('.sm-clear-search-button')) { + // document.querySelector('.sm-search-form input').value = ''; + // document.querySelector('.sm-search-results-container').innerHTML = ''; + // document + // .querySelector('.sm-clear-search-button') + // .classList.remove('sm-show-clear-button'); + // document.querySelector('.sm-search-form input').focus(); + // return; + // } + + if (e.target.closest('.sm-copy-button')) { + copyToClipboard(); + return; + } + + if (e.target.closest('.sm-dark-mode')) { + toggleColorMode('dark'); + return; + } + + if (e.target.closest('.sm-light-mode')) { + toggleColorMode('light'); + return; + } + + if (e.target.closest('.sm-follow-button')) { + document.querySelector('.sm-overflow-buttons').classList.add('sm-hide'); + document.querySelector('.sm-overflow-follow').classList.add('sm-show'); + return; + } + + if (e.target.closest('.sm-share-button')) { + document.querySelector('.sm-overflow-buttons').classList.add('sm-hide'); + document.querySelector('.sm-overflow-share').classList.add('sm-show'); + return; + } + + if (e.target.closest('.sm-saves-button')) { + document.querySelector('.sm-overflow-buttons').classList.add('sm-hide'); + document.querySelector('.sm-overflow-saves').classList.add('sm-show'); + return; + } + + if (e.target.closest('.sm-overflow-back')) { + e.target + .closest('.sm-overflow-back') + .parentElement.classList.remove('sm-show'); + document.querySelector('.sm-overflow-buttons').classList.remove('sm-hide'); + return; + } + + if (e.target.closest('.sm-overflow-button')) { + document.querySelector('.sm-overflow-menu').classList.toggle('sm-show'); + return; + } + + if (e.target.tagName === 'A' && e.target.closest('.sm-overflow-menu')) { + return; + } + + if ( + document.querySelector('.sm-overflow-menu').classList.contains('sm-show') + ) { + e.preventDefault(); + document.querySelector('.sm-overflow-menu').classList.remove('sm-show'); + } + } + + function eventHandler() { + document.body.addEventListener('click', handleClick$1); + } + + function animateNavbar() { + const height = document.documentElement.clientHeight; + const { scrollHeight } = document.documentElement; + const navbar = document.querySelector('.sm-navbar-container'); + navbar.style.transition = 'background-color .6s'; + + document.addEventListener('scroll', () => { + const scrollPercentage = + Math.round(window.scrollY) / (scrollHeight - height); + + if (scrollPercentage > 0.15) { + navbar.style.backgroundColor = 'var(--surface-light)'; + } else { + navbar.style.backgroundColor = 'var(--surface)'; + } + }); + } + + function handleClick(e) { + if (e.code === 'Escape') { + document.querySelector('[class*=show]'); + } + } + + function keyClickHandler() { + document.body.addEventListener('keyup', handleClick); + } + + function pathnameParser(pathname) { + if (!/page/.test(pathname)) { + return pathname; + } + + return pathname.split('page')[0]; + } + + function navButtonFormatter(nextOrPrevEl, nextOrPrevName, paginationEl) { + const icon = nextOrPrevName === 'previous' ? 'left' : 'right'; + const className = nextOrPrevName === 'previous' ? 'sm-prev' : 'sm-next'; + + const navButton = nextOrPrevEl + ? document.createElement('a') + : document.createElement('span'); + navButton.innerHTML = ``; + navButton.classList.add('sm-circle-icon-button', className); + + if (nextOrPrevEl) { + navButton.setAttribute('aria-label', `${nextOrPrevName} posts`); + navButton.setAttribute('href', nextOrPrevEl); + } else { + navButton.classList.add('sm-circle-icon-button', 'sm-nav-disabled'); + } + + paginationEl.append(navButton); + } + + function generatePagination() { + const pagination = document.querySelector('.sm-pagination'); + + if (!pagination) return; + const pathname = pathnameParser(window.location.pathname); + const { page, prev, next } = pagination.dataset; + + navButtonFormatter(prev, 'previous', pagination); + + const paginationStart = page - 2 > 0 ? page - 2 : 1; + + for ( + let index = paginationStart - 1; + index < paginationStart + 4; + index += 1 + ) { + let urlPath; + + if (index === 0 && pathname === '/') { + urlPath = '/'; + } else if (index === 0 && pathname !== '/') { + urlPath = pathname; + } else { + urlPath = `${pathname}page/${index + 1}/`; + } + + const div = document.createElement('div'); + div.classList.add('sm-pagination-item'); + const a = document.createElement('a'); + a.setAttribute('href', urlPath); + a.textContent = index + 1; + + if (+page === index + 1) { + div.classList.add('sm-current'); + } + div.append(a); + pagination.append(div); + } + + navButtonFormatter(next, 'next', pagination); + } + + // eslint-disable-next-line no-undef + { + const script = document.createElement('script'); + script.src = `http://${ + (window.location.host || 'localhost').split(':')[0] + }:35729/livereload.js?snipver=1`; + document.head.append(script); + console.info('Reload script added'); + } + + eventHandler(); + animateNavbar(); + determineColorModeSupport(); + generatePagination(); + keyClickHandler(); + new Saves().init(); + +})(); //# sourceMappingURL=app.js.map diff --git a/assets/built/app.js.map b/assets/built/app.js.map index d18b91ce..ffd94174 100644 --- a/assets/built/app.js.map +++ b/assets/built/app.js.map @@ -1 +1 @@ -{"version":3,"file":"app.js","sources":["../../src/js/app/colorModeToggle.js","../../src/js/app/copy.js","../../src/js/app/saves.js","../../src/js/app/clickHandler.js","../../src/js/app/keyHandler.js","../../src/js/app/pagination.js","../../src/js/app/navbarAnimation.js","../../src/js/app/index.js"],"sourcesContent":["/*\n * Color mode toggle\n */\n\nexport function toggleColorMode(color) {\n document.documentElement.setAttribute('data-color-pref', color);\n localStorage.setItem('pref', color);\n}\n\nexport function determineColorModeSupport() {\n const colorPrefButtons = document.querySelectorAll('.sm-dark-mode, .sm-light-mode');\n\n const hasSupport = window.CSS && CSS.supports('color', 'var(--primary)');\n\n // If the browser doesn't support custom settings, hide buttons\n if (!hasSupport) {\n colorPrefButtons.forEach((e) => {\n e.style.display = 'none';\n });\n }\n}\n","function updateCopyButtonState() {\n const copyButtons = document.querySelectorAll('.sm-copy-button');\n copyButtons.forEach((el) => {\n const copyButton = el;\n const currentState = copyButton.innerHTML;\n copyButton.innerHTML =\n ' Copied ✅';\n setTimeout(() => {\n copyButton.innerHTML = currentState;\n }, 3000);\n });\n}\nexport default async function copyToClipboard() {\n const currentURL = window.location.href;\n await navigator.clipboard.writeText(currentURL);\n updateCopyButtonState();\n}\n","export class Saves {\n constructor(e) {\n this.id = (e && e.dataset.id) || null;\n this.title = (e && e.dataset.title) || null;\n this.items = () =>\n Saves.makeArray(JSON.parse(localStorage.getItem('saves')));\n this.int = null;\n }\n\n generateItem() {\n return {\n id: this.id,\n title: this.title,\n timestamp: new Date(),\n scrollPos: this.scrollStatus().scrollPos,\n progress: this.scrollStatus().progress,\n };\n }\n\n save() {\n localStorage.setItem(\n 'saves',\n JSON.stringify([this.generateItem(), ...this.items()]),\n );\n\n this.populateSavesMenu();\n this.updateScrollPosition();\n\n const els = document.querySelectorAll(`button[data-id=${this.id}]`);\n els.forEach((el) => {\n el.classList.add('sm-love-toggle');\n });\n }\n\n remove() {\n const items = [...this.items()];\n const itemIndex = items.findIndex((el) => this.id === el.id);\n items.splice(itemIndex, 1);\n localStorage.removeItem('saves');\n if (items.length) {\n localStorage.setItem('saves', JSON.stringify(items));\n }\n\n this.int = null;\n this.populateSavesMenu();\n\n const els = document.querySelectorAll(`button[data-id=${this.id}]`);\n els.forEach((el) => {\n el.classList.remove('sm-love-toggle');\n });\n }\n\n static makeArray(data) {\n if (!data) return [];\n return data.length ? data : [data];\n }\n\n scrollStatus() {\n if (this.isCurrentPageSaved() < 0) {\n return {\n scrollPos: null,\n progress: null,\n };\n }\n return {\n scrollPos: window.scrollY,\n progress: Math.round(\n (window.scrollY /\n (document.body.scrollHeight - document.body.clientHeight)) *\n 100,\n ),\n };\n }\n\n identifySaves() {\n if (!this.items()) return;\n\n this.items().forEach((el) => {\n const { id } = el;\n const domEl = document.querySelectorAll(`button[data-id=${id}]`);\n if (domEl) {\n domEl.forEach((button) => button.classList.add('sm-love-toggle'));\n }\n });\n }\n\n isCurrentPageSaved() {\n const currentPage = window.location.pathname.replace(/\\//g, '');\n return this.items().findIndex((item) => item.id === currentPage);\n }\n\n step() {\n const itemIndex = this.isCurrentPageSaved();\n if (itemIndex < 0) {\n return;\n }\n\n const items = this.items();\n items[itemIndex].progress = this.scrollStatus().progress;\n items[itemIndex].scrollPos = this.scrollStatus().scrollPos;\n localStorage.removeItem('saves');\n localStorage.setItem('saves', JSON.stringify(items));\n this.populateSavesMenu();\n\n setTimeout(() => {\n window.requestAnimationFrame(this.step.bind(this));\n }, 1000);\n }\n\n updateScrollPosition() {\n const items = this.items();\n if (!items.length) return;\n const itemIndex = this.isCurrentPageSaved();\n\n if (itemIndex < 0) {\n return;\n }\n\n window.requestAnimationFrame(this.step.bind(this));\n }\n\n scrollToPos() {\n if (this.isCurrentPageSaved() > -1) {\n const items = this.items();\n window.scrollTo({\n top: items[this.isCurrentPageSaved()].scrollPos,\n behavior: 'smooth',\n });\n }\n }\n\n renderSavesMenu() {\n const template = this.items().map(\n (el) =>\n `
\n
\n
\n

${\n el.title\n }

\n

Saved on ${new Intl.DateTimeFormat().format(\n new Date(el.timestamp),\n )}

\n
\n \n
\n
`,\n );\n return template.join('');\n }\n\n populateSavesMenu() {\n const savesMenu = document.querySelector('.sm-overflow-articles');\n const navSavesMenu = document.querySelector('.sm-nav-menu-saves');\n\n if (!this.items().length) {\n const noSavesText =\n '

No articles saved yet. Hit the heart to get started!

';\n savesMenu.innerHTML = noSavesText;\n navSavesMenu.innerHTML = noSavesText;\n return;\n }\n savesMenu.innerHTML = this.renderSavesMenu();\n navSavesMenu.innerHTML = this.renderSavesMenu();\n }\n\n init() {\n this.identifySaves();\n this.populateSavesMenu();\n this.scrollToPos();\n this.updateScrollPosition();\n }\n}\n\nexport function save(e) {\n const savedItems = new Saves(e);\n\n const items = savedItems.items();\n\n if (!items.length) {\n savedItems.save();\n return;\n }\n\n const { id } = savedItems;\n\n if (items.find((el) => el.id === id)) {\n savedItems.remove();\n } else {\n savedItems.save();\n }\n}\n","import { toggleColorMode } from './colorModeToggle';\nimport copyToClipboard from './copy';\nimport { save } from './saves';\n\nfunction handleClick(e) {\n if (e.target.closest('.sm-navbar-menu-button')) {\n document\n .querySelector('.sm-nav-menu-container')\n .classList.add('sm-show-menu');\n }\n\n if (e.target.closest('.sm-love-button')) {\n save(e.target.closest('.sm-love-button'));\n // e.target.closest('.sm-love-button').classList.toggle('sm-love-toggle');\n return;\n }\n\n if (e.target.closest('.sm-nav-menu-close-button')) {\n document\n .querySelector('.sm-nav-menu-container')\n .classList.remove('sm-show-menu');\n }\n\n // if (e.target.closest('.sm-search-button')) {\n // document.querySelector('.sm-search').classList.add('sm-show-search');\n // document.querySelector('#sm-search-input').focus();\n // return;\n // }\n\n // if (e.target.closest('.sm-search-form-close-button')) {\n // document.querySelector('.sm-search').classList.remove('sm-show-search');\n // return;\n // }\n\n // if (e.target.closest('.sm-clear-search-button')) {\n // document.querySelector('.sm-search-form input').value = '';\n // document.querySelector('.sm-search-results-container').innerHTML = '';\n // document\n // .querySelector('.sm-clear-search-button')\n // .classList.remove('sm-show-clear-button');\n // document.querySelector('.sm-search-form input').focus();\n // return;\n // }\n\n if (e.target.closest('.sm-copy-button')) {\n copyToClipboard();\n return;\n }\n\n if (e.target.closest('.sm-dark-mode')) {\n toggleColorMode('dark');\n return;\n }\n\n if (e.target.closest('.sm-light-mode')) {\n toggleColorMode('light');\n return;\n }\n\n if (e.target.closest('.sm-follow-button')) {\n document.querySelector('.sm-overflow-buttons').classList.add('sm-hide');\n document.querySelector('.sm-overflow-follow').classList.add('sm-show');\n return;\n }\n\n if (e.target.closest('.sm-share-button')) {\n document.querySelector('.sm-overflow-buttons').classList.add('sm-hide');\n document.querySelector('.sm-overflow-share').classList.add('sm-show');\n return;\n }\n\n if (e.target.closest('.sm-saves-button')) {\n document.querySelector('.sm-overflow-buttons').classList.add('sm-hide');\n document.querySelector('.sm-overflow-saves').classList.add('sm-show');\n return;\n }\n\n if (e.target.closest('.sm-overflow-back')) {\n e.target\n .closest('.sm-overflow-back')\n .parentElement.classList.remove('sm-show');\n document.querySelector('.sm-overflow-buttons').classList.remove('sm-hide');\n return;\n }\n\n if (e.target.closest('.sm-overflow-button')) {\n document.querySelector('.sm-overflow-menu').classList.toggle('sm-show');\n return;\n }\n\n if (e.target.tagName === 'A' && e.target.closest('.sm-overflow-menu')) {\n return;\n }\n\n if (\n document.querySelector('.sm-overflow-menu').classList.contains('sm-show')\n ) {\n e.preventDefault();\n document.querySelector('.sm-overflow-menu').classList.remove('sm-show');\n }\n}\n\nexport default function eventHandler() {\n document.body.addEventListener('click', handleClick);\n}\n","function handleClick(e) {\n if (e.code === 'Escape') {\n document.querySelector('[class*=show]');\n }\n}\n\nexport default function keyClickHandler() {\n document.body.addEventListener('keyup', handleClick);\n}\n","function pathnameParser(pathname) {\n if (!/page/.test(pathname)) {\n return pathname;\n }\n\n return pathname.split('page')[0];\n}\n\nfunction navButtonFormatter(nextOrPrevEl, nextOrPrevName, paginationEl) {\n const icon = nextOrPrevName === 'previous' ? 'left' : 'right';\n const className = nextOrPrevName === 'previous' ? 'sm-prev' : 'sm-next';\n\n const navButton = nextOrPrevEl\n ? document.createElement('a')\n : document.createElement('span');\n navButton.innerHTML = ``;\n navButton.classList.add('sm-circle-icon-button', className);\n\n if (nextOrPrevEl) {\n navButton.setAttribute('aria-label', `${nextOrPrevName} posts`);\n navButton.setAttribute('href', nextOrPrevEl);\n } else {\n navButton.classList.add('sm-circle-icon-button', 'sm-nav-disabled');\n }\n\n paginationEl.append(navButton);\n}\n\nexport default function generatePagination() {\n const pagination = document.querySelector('.sm-pagination');\n\n if (!pagination) return;\n const pathname = pathnameParser(window.location.pathname);\n const { page, prev, next } = pagination.dataset;\n\n navButtonFormatter(prev, 'previous', pagination);\n\n const paginationStart = page - 2 > 0 ? page - 2 : 1;\n\n for (\n let index = paginationStart - 1;\n index < paginationStart + 4;\n index += 1\n ) {\n let urlPath;\n\n if (index === 0 && pathname === '/') {\n urlPath = '/';\n } else if (index === 0 && pathname !== '/') {\n urlPath = pathname;\n } else {\n urlPath = `${pathname}page/${index + 1}/`;\n }\n\n const div = document.createElement('div');\n div.classList.add('sm-pagination-item');\n const a = document.createElement('a');\n a.setAttribute('href', urlPath);\n a.textContent = index + 1;\n\n if (+page === index + 1) {\n div.classList.add('sm-current');\n }\n div.append(a);\n pagination.append(div);\n }\n\n navButtonFormatter(next, 'next', pagination);\n}\n","export default function animateNavbar() {\n const height = document.documentElement.clientHeight;\n const { scrollHeight } = document.documentElement;\n const navbar = document.querySelector('.sm-navbar-container');\n navbar.style.transition = 'background-color .6s';\n\n document.addEventListener('scroll', () => {\n const scrollPercentage =\n Math.round(window.scrollY) / (scrollHeight - height);\n\n if (scrollPercentage > 0.15) {\n navbar.style.backgroundColor = 'var(--surface-light)';\n } else {\n navbar.style.backgroundColor = 'var(--surface)';\n }\n });\n}\n","import '../../css/app/index.css';\n\nimport initClickHandler from './clickHandler';\nimport animateNavbar from './navbarAnimation';\nimport { determineColorModeSupport } from './colorModeToggle';\nimport keyClickHandler from './keyHandler';\nimport generatePagination from './pagination';\nimport { Saves } from './saves';\n\n// eslint-disable-next-line no-undef\nif (ENV === 'development') {\n const script = document.createElement('script');\n script.src = `http://${\n (window.location.host || 'localhost').split(':')[0]\n }:35729/livereload.js?snipver=1`;\n document.head.append(script);\n console.info('Reload script added');\n}\n\ninitClickHandler();\nanimateNavbar();\ndetermineColorModeSupport();\ngeneratePagination();\nkeyClickHandler();\nnew Saves().init();\n"],"names":["toggleColorMode","color","document","documentElement","setAttribute","localStorage","setItem","async","copyToClipboard","currentURL","window","location","href","navigator","clipboard","writeText","querySelectorAll","forEach","el","copyButton","currentState","innerHTML","setTimeout","Saves","constructor","e","this","id","dataset","title","items","makeArray","JSON","parse","getItem","int","generateItem","timestamp","Date","scrollPos","scrollStatus","progress","save","stringify","populateSavesMenu","updateScrollPosition","classList","add","remove","itemIndex","findIndex","splice","removeItem","length","static","data","isCurrentPageSaved","scrollY","Math","round","body","scrollHeight","clientHeight","identifySaves","domEl","button","currentPage","pathname","replace","item","step","requestAnimationFrame","bind","scrollToPos","scrollTo","top","behavior","renderSavesMenu","map","Intl","DateTimeFormat","format","join","savesMenu","querySelector","navSavesMenu","noSavesText","init","handleClick","target","closest","savedItems","find","parentElement","toggle","tagName","contains","preventDefault","code","navButtonFormatter","nextOrPrevEl","nextOrPrevName","paginationEl","icon","className","navButton","createElement","append","addEventListener","height","navbar","style","transition","scrollPercentage","backgroundColor","animateNavbar","colorPrefButtons","CSS","supports","display","determineColorModeSupport","pagination","test","split","pathnameParser","page","prev","next","paginationStart","index","urlPath","div","a","textContent","generatePagination"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"app.js","sources":["../../src/js/app/colorModeToggle.js","../../src/js/app/copy.js","../../src/js/app/saves.js","../../src/js/app/clickHandler.js","../../src/js/app/navbarAnimation.js","../../src/js/app/keyHandler.js","../../src/js/app/pagination.js","../../src/js/app/index.js"],"sourcesContent":["/*\n * Color mode toggle\n */\n\nexport function toggleColorMode(color) {\n document.documentElement.setAttribute('data-color-pref', color);\n localStorage.setItem('pref', color);\n}\n\nexport function determineColorModeSupport() {\n const colorPrefButtons = document.querySelectorAll('.sm-dark-mode, .sm-light-mode');\n\n const hasSupport = window.CSS && CSS.supports('color', 'var(--primary)');\n\n // If the browser doesn't support custom settings, hide buttons\n if (!hasSupport) {\n colorPrefButtons.forEach((e) => {\n e.style.display = 'none';\n });\n }\n}\n","function updateCopyButtonState() {\n const copyButtons = document.querySelectorAll('.sm-copy-button');\n copyButtons.forEach((el) => {\n const copyButton = el;\n const currentState = copyButton.innerHTML;\n copyButton.innerHTML =\n ' Copied ✅';\n setTimeout(() => {\n copyButton.innerHTML = currentState;\n }, 3000);\n });\n}\nexport default async function copyToClipboard() {\n const currentURL = window.location.href;\n await navigator.clipboard.writeText(currentURL);\n updateCopyButtonState();\n}\n","export class Saves {\n constructor(e) {\n this.id = (e && e.dataset.id) || null;\n this.title = (e && e.dataset.title) || null;\n this.items = () =>\n Saves.makeArray(JSON.parse(localStorage.getItem('saves')));\n this.int = null;\n }\n\n generateItem() {\n return {\n id: this.id,\n title: this.title,\n timestamp: new Date(),\n scrollPos: this.scrollStatus().scrollPos,\n progress: this.scrollStatus().progress,\n };\n }\n\n save() {\n localStorage.setItem(\n 'saves',\n JSON.stringify([this.generateItem(), ...this.items()]),\n );\n\n this.populateSavesMenu();\n this.updateScrollPosition();\n\n const els = document.querySelectorAll(`button[data-id=${this.id}]`);\n els.forEach((el) => {\n el.classList.add('sm-love-toggle');\n });\n }\n\n remove() {\n const items = [...this.items()];\n const itemIndex = items.findIndex((el) => this.id === el.id);\n items.splice(itemIndex, 1);\n localStorage.removeItem('saves');\n if (items.length) {\n localStorage.setItem('saves', JSON.stringify(items));\n }\n\n this.int = null;\n this.populateSavesMenu();\n\n const els = document.querySelectorAll(`button[data-id=${this.id}]`);\n els.forEach((el) => {\n el.classList.remove('sm-love-toggle');\n });\n }\n\n static makeArray(data) {\n if (!data) return [];\n return data.length ? data : [data];\n }\n\n scrollStatus() {\n if (this.isCurrentPageSaved() < 0) {\n return {\n scrollPos: null,\n progress: null,\n };\n }\n return {\n scrollPos: window.scrollY,\n progress: Math.round(\n (window.scrollY /\n (document.body.scrollHeight - document.body.clientHeight)) *\n 100,\n ),\n };\n }\n\n identifySaves() {\n if (!this.items()) return;\n\n this.items().forEach((el) => {\n const { id } = el;\n const domEl = document.querySelectorAll(`button[data-id=${id}]`);\n if (domEl) {\n domEl.forEach((button) => button.classList.add('sm-love-toggle'));\n }\n });\n }\n\n isCurrentPageSaved() {\n const currentPage = window.location.pathname.replace(/\\//g, '');\n return this.items().findIndex((item) => item.id === currentPage);\n }\n\n step() {\n const itemIndex = this.isCurrentPageSaved();\n if (itemIndex < 0) {\n return;\n }\n\n const items = this.items();\n items[itemIndex].progress = this.scrollStatus().progress;\n items[itemIndex].scrollPos = this.scrollStatus().scrollPos;\n localStorage.removeItem('saves');\n localStorage.setItem('saves', JSON.stringify(items));\n this.populateSavesMenu();\n\n setTimeout(() => {\n window.requestAnimationFrame(this.step.bind(this));\n }, 1000);\n }\n\n updateScrollPosition() {\n const items = this.items();\n if (!items.length) return;\n const itemIndex = this.isCurrentPageSaved();\n\n if (itemIndex < 0) {\n return;\n }\n\n window.requestAnimationFrame(this.step.bind(this));\n }\n\n scrollToPos() {\n if (this.isCurrentPageSaved() > -1) {\n const items = this.items();\n window.scrollTo({\n top: items[this.isCurrentPageSaved()].scrollPos,\n behavior: 'smooth',\n });\n }\n }\n\n renderSavesMenu() {\n const template = this.items().map(\n (el) =>\n `
\n
\n
\n

${\n el.title\n }

\n

Saved on ${new Intl.DateTimeFormat().format(\n new Date(el.timestamp),\n )}

\n
\n \n
\n
`,\n );\n return template.join('');\n }\n\n populateSavesMenu() {\n const savesMenu = document.querySelector('.sm-overflow-articles');\n const navSavesMenu = document.querySelector('.sm-nav-menu-saves');\n\n if (!this.items().length) {\n const noSavesText =\n '

No articles saved yet. Hit the heart to get started!

';\n savesMenu.innerHTML = noSavesText;\n navSavesMenu.innerHTML = noSavesText;\n return;\n }\n savesMenu.innerHTML = this.renderSavesMenu();\n navSavesMenu.innerHTML = this.renderSavesMenu();\n }\n\n init() {\n this.identifySaves();\n this.populateSavesMenu();\n this.scrollToPos();\n this.updateScrollPosition();\n }\n}\n\nexport function save(e) {\n const savedItems = new Saves(e);\n\n const items = savedItems.items();\n\n if (!items.length) {\n savedItems.save();\n return;\n }\n\n const { id } = savedItems;\n\n if (items.find((el) => el.id === id)) {\n savedItems.remove();\n } else {\n savedItems.save();\n }\n}\n","import { toggleColorMode } from './colorModeToggle';\nimport copyToClipboard from './copy';\nimport { save } from './saves';\n\nfunction handleClick(e) {\n if (e.target.closest('.sm-navbar-menu-button')) {\n document\n .querySelector('.sm-nav-menu-container')\n .classList.add('sm-show-menu');\n }\n\n if (e.target.closest('.sm-love-button')) {\n save(e.target.closest('.sm-love-button'));\n // e.target.closest('.sm-love-button').classList.toggle('sm-love-toggle');\n return;\n }\n\n if (e.target.closest('.sm-nav-menu-close-button')) {\n document\n .querySelector('.sm-nav-menu-container')\n .classList.remove('sm-show-menu');\n }\n\n // if (e.target.closest('.sm-search-button')) {\n // document.querySelector('.sm-search').classList.add('sm-show-search');\n // document.querySelector('#sm-search-input').focus();\n // return;\n // }\n\n // if (e.target.closest('.sm-search-form-close-button')) {\n // document.querySelector('.sm-search').classList.remove('sm-show-search');\n // return;\n // }\n\n // if (e.target.closest('.sm-clear-search-button')) {\n // document.querySelector('.sm-search-form input').value = '';\n // document.querySelector('.sm-search-results-container').innerHTML = '';\n // document\n // .querySelector('.sm-clear-search-button')\n // .classList.remove('sm-show-clear-button');\n // document.querySelector('.sm-search-form input').focus();\n // return;\n // }\n\n if (e.target.closest('.sm-copy-button')) {\n copyToClipboard();\n return;\n }\n\n if (e.target.closest('.sm-dark-mode')) {\n toggleColorMode('dark');\n return;\n }\n\n if (e.target.closest('.sm-light-mode')) {\n toggleColorMode('light');\n return;\n }\n\n if (e.target.closest('.sm-follow-button')) {\n document.querySelector('.sm-overflow-buttons').classList.add('sm-hide');\n document.querySelector('.sm-overflow-follow').classList.add('sm-show');\n return;\n }\n\n if (e.target.closest('.sm-share-button')) {\n document.querySelector('.sm-overflow-buttons').classList.add('sm-hide');\n document.querySelector('.sm-overflow-share').classList.add('sm-show');\n return;\n }\n\n if (e.target.closest('.sm-saves-button')) {\n document.querySelector('.sm-overflow-buttons').classList.add('sm-hide');\n document.querySelector('.sm-overflow-saves').classList.add('sm-show');\n return;\n }\n\n if (e.target.closest('.sm-overflow-back')) {\n e.target\n .closest('.sm-overflow-back')\n .parentElement.classList.remove('sm-show');\n document.querySelector('.sm-overflow-buttons').classList.remove('sm-hide');\n return;\n }\n\n if (e.target.closest('.sm-overflow-button')) {\n document.querySelector('.sm-overflow-menu').classList.toggle('sm-show');\n return;\n }\n\n if (e.target.tagName === 'A' && e.target.closest('.sm-overflow-menu')) {\n return;\n }\n\n if (\n document.querySelector('.sm-overflow-menu').classList.contains('sm-show')\n ) {\n e.preventDefault();\n document.querySelector('.sm-overflow-menu').classList.remove('sm-show');\n }\n}\n\nexport default function eventHandler() {\n document.body.addEventListener('click', handleClick);\n}\n","export default function animateNavbar() {\n const height = document.documentElement.clientHeight;\n const { scrollHeight } = document.documentElement;\n const navbar = document.querySelector('.sm-navbar-container');\n navbar.style.transition = 'background-color .6s';\n\n document.addEventListener('scroll', () => {\n const scrollPercentage =\n Math.round(window.scrollY) / (scrollHeight - height);\n\n if (scrollPercentage > 0.15) {\n navbar.style.backgroundColor = 'var(--surface-light)';\n } else {\n navbar.style.backgroundColor = 'var(--surface)';\n }\n });\n}\n","function handleClick(e) {\n if (e.code === 'Escape') {\n document.querySelector('[class*=show]');\n }\n}\n\nexport default function keyClickHandler() {\n document.body.addEventListener('keyup', handleClick);\n}\n","function pathnameParser(pathname) {\n if (!/page/.test(pathname)) {\n return pathname;\n }\n\n return pathname.split('page')[0];\n}\n\nfunction navButtonFormatter(nextOrPrevEl, nextOrPrevName, paginationEl) {\n const icon = nextOrPrevName === 'previous' ? 'left' : 'right';\n const className = nextOrPrevName === 'previous' ? 'sm-prev' : 'sm-next';\n\n const navButton = nextOrPrevEl\n ? document.createElement('a')\n : document.createElement('span');\n navButton.innerHTML = ``;\n navButton.classList.add('sm-circle-icon-button', className);\n\n if (nextOrPrevEl) {\n navButton.setAttribute('aria-label', `${nextOrPrevName} posts`);\n navButton.setAttribute('href', nextOrPrevEl);\n } else {\n navButton.classList.add('sm-circle-icon-button', 'sm-nav-disabled');\n }\n\n paginationEl.append(navButton);\n}\n\nexport default function generatePagination() {\n const pagination = document.querySelector('.sm-pagination');\n\n if (!pagination) return;\n const pathname = pathnameParser(window.location.pathname);\n const { page, prev, next } = pagination.dataset;\n\n navButtonFormatter(prev, 'previous', pagination);\n\n const paginationStart = page - 2 > 0 ? page - 2 : 1;\n\n for (\n let index = paginationStart - 1;\n index < paginationStart + 4;\n index += 1\n ) {\n let urlPath;\n\n if (index === 0 && pathname === '/') {\n urlPath = '/';\n } else if (index === 0 && pathname !== '/') {\n urlPath = pathname;\n } else {\n urlPath = `${pathname}page/${index + 1}/`;\n }\n\n const div = document.createElement('div');\n div.classList.add('sm-pagination-item');\n const a = document.createElement('a');\n a.setAttribute('href', urlPath);\n a.textContent = index + 1;\n\n if (+page === index + 1) {\n div.classList.add('sm-current');\n }\n div.append(a);\n pagination.append(div);\n }\n\n navButtonFormatter(next, 'next', pagination);\n}\n","import '../../css/app/index.css';\n\nimport initClickHandler from './clickHandler';\nimport animateNavbar from './navbarAnimation';\nimport { determineColorModeSupport } from './colorModeToggle';\nimport keyClickHandler from './keyHandler';\nimport generatePagination from './pagination';\nimport { Saves } from './saves';\n\n// eslint-disable-next-line no-undef\nif (ENV === 'development') {\n const script = document.createElement('script');\n script.src = `http://${\n (window.location.host || 'localhost').split(':')[0]\n }:35729/livereload.js?snipver=1`;\n document.head.append(script);\n console.info('Reload script added');\n}\n\ninitClickHandler();\nanimateNavbar();\ndetermineColorModeSupport();\ngeneratePagination();\nkeyClickHandler();\nnew Saves().init();\n"],"names":["handleClick","initClickHandler"],"mappings":"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"} \ No newline at end of file diff --git a/assets/built/generateColorPalette.js b/assets/built/generateColorPalette.js index bfc64756..3640a5a3 100644 --- a/assets/built/generateColorPalette.js +++ b/assets/built/generateColorPalette.js @@ -1,2 +1,88 @@ -!function(){"use strict";function t(t){let e=0,n=0,o=0;return 4===t.length?(e=`0x${t[1]}${t[1]}`,n=`0x${t[2]}${t[2]}`,o=`0x${t[3]}${t[3]}`):7===t.length&&(e=`0x${t[1]}${t[2]}`,n=`0x${t[3]}${t[4]}`,o=`0x${t[5]}${t[6]}`),[e,n,o]}!function(){const[e,n,o]=document.documentElement.dataset.accentColor?t(document.documentElement.dataset.accentColor):t("#ff0000"),[m,c,r]=function(t){const[e,n,o]=t,m=e/255,c=n/255,r=o/255,s=Math.min(m,c,r),u=Math.max(m,c,r),l=u-s;let d=0,y=0,a=0;return d=0===l?0:u===m?(c-r)/l%6:u===c?(r-m)/l+2:(m-c)/l+4,d=Math.round(60*d),d<0&&(d+=360),a=(u+s)/2,y=0===l?0:l/(1-Math.abs(2*a-1)),y=+(100*y).toFixed(1),a=+(100*a).toFixed(1),[d,y,a,parseInt(e),parseInt(n),parseInt(o)]}([e,n,o]),s=m+180>360?m-180:m+180;document.documentElement.style.setProperty("--primary-h",m),document.documentElement.style.setProperty("--saturation",`${c}%`),document.documentElement.style.setProperty("--lightness",`${r}%`),document.documentElement.style.setProperty("--complementary-color",s),document.documentElement.style.setProperty("--r",e/255),document.documentElement.style.setProperty("--g",n/255),document.documentElement.style.setProperty("--b",o/255),document.documentElement.style.setProperty("--cr",(255-e)/255),document.documentElement.style.setProperty("--cg",(255-n)/255),document.documentElement.style.setProperty("--cb",(255-o)/255)}()}(); +(function () { + 'use strict'; + + // From CSS Tricks + function hexToRgb(H) { + // Convert hex to RGB first + let r = 0; + let g = 0; + let b = 0; + + if (H.length === 4) { + r = `0x${H[1]}${H[1]}`; + g = `0x${H[2]}${H[2]}`; + b = `0x${H[3]}${H[3]}`; + } else if (H.length === 7) { + r = `0x${H[1]}${H[2]}`; + g = `0x${H[3]}${H[4]}`; + b = `0x${H[5]}${H[6]}`; + } + return [r, g, b]; + } + + function rgbToHSL(rgb) { + const [r, g, b] = rgb; + + // Then to HSL + const sr = r / 255; + const sg = g / 255; + const sb = b / 255; + + const cmin = Math.min(sr, sg, sb); + const cmax = Math.max(sr, sg, sb); + const delta = cmax - cmin; + let h = 0; + let s = 0; + let l = 0; + + if (delta === 0) { + h = 0; + } else if (cmax === sr) { + h = ((sg - sb) / delta) % 6; + } else if (cmax === sg) { + h = (sb - sr) / delta + 2; + } else { + h = (sr - sg) / delta + 4; + } + + h = Math.round(h * 60); + + if (h < 0) { + h += 360; + } + + l = (cmax + cmin) / 2; + s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1)); + s = +(s * 100).toFixed(1); + l = +(l * 100).toFixed(1); + + return [h, s, l, parseInt(r), parseInt(g), parseInt(b)]; + } + + function generateColorPalette() { + const [r, g, b] = document.documentElement.dataset.accentColor + ? hexToRgb(document.documentElement.dataset.accentColor) + : hexToRgb('#ff0000'); + + const [h, s, l] = rgbToHSL([r, g, b]); + + const complementaryColor = h + 180 > 360 ? h - 180 : h + 180; + document.documentElement.style.setProperty('--primary-h', h); + document.documentElement.style.setProperty('--saturation', `${s}%`); + document.documentElement.style.setProperty('--lightness', `${l}%`); + document.documentElement.style.setProperty( + '--complementary-color', + complementaryColor, + ); + document.documentElement.style.setProperty('--r', r / 255); + document.documentElement.style.setProperty('--g', g / 255); + document.documentElement.style.setProperty('--b', b / 255); + document.documentElement.style.setProperty('--cr', (255 - r) / 255); + document.documentElement.style.setProperty('--cg', (255 - g) / 255); + document.documentElement.style.setProperty('--cb', (255 - b) / 255); + } + + generateColorPalette(); + +})(); //# sourceMappingURL=generateColorPalette.js.map diff --git a/assets/built/generateColorPalette.js.map b/assets/built/generateColorPalette.js.map index 5c092381..b209ebf0 100644 --- a/assets/built/generateColorPalette.js.map +++ b/assets/built/generateColorPalette.js.map @@ -1 +1 @@ -{"version":3,"file":"generateColorPalette.js","sources":["../../src/js/generateColorPalette.js"],"sourcesContent":["// From CSS Tricks\nfunction hexToRgb(H) {\n // Convert hex to RGB first\n let r = 0;\n let g = 0;\n let b = 0;\n\n if (H.length === 4) {\n r = `0x${H[1]}${H[1]}`;\n g = `0x${H[2]}${H[2]}`;\n b = `0x${H[3]}${H[3]}`;\n } else if (H.length === 7) {\n r = `0x${H[1]}${H[2]}`;\n g = `0x${H[3]}${H[4]}`;\n b = `0x${H[5]}${H[6]}`;\n }\n return [r, g, b];\n}\n\nfunction rgbToHSL(rgb) {\n const [r, g, b] = rgb;\n\n // Then to HSL\n const sr = r / 255;\n const sg = g / 255;\n const sb = b / 255;\n\n const cmin = Math.min(sr, sg, sb);\n const cmax = Math.max(sr, sg, sb);\n const delta = cmax - cmin;\n let h = 0;\n let s = 0;\n let l = 0;\n\n if (delta === 0) {\n h = 0;\n } else if (cmax === sr) {\n h = ((sg - sb) / delta) % 6;\n } else if (cmax === sg) {\n h = (sb - sr) / delta + 2;\n } else {\n h = (sr - sg) / delta + 4;\n }\n\n h = Math.round(h * 60);\n\n if (h < 0) {\n h += 360;\n }\n\n l = (cmax + cmin) / 2;\n s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));\n s = +(s * 100).toFixed(1);\n l = +(l * 100).toFixed(1);\n\n return [h, s, l, parseInt(r), parseInt(g), parseInt(b)];\n}\n\nfunction generateColorPalette() {\n const [r, g, b] = document.documentElement.dataset.accentColor\n ? hexToRgb(document.documentElement.dataset.accentColor)\n : hexToRgb('#ff0000');\n\n const [h, s, l] = rgbToHSL([r, g, b]);\n\n const complementaryColor = h + 180 > 360 ? h - 180 : h + 180;\n document.documentElement.style.setProperty('--primary-h', h);\n document.documentElement.style.setProperty('--saturation', `${s}%`);\n document.documentElement.style.setProperty('--lightness', `${l}%`);\n document.documentElement.style.setProperty(\n '--complementary-color',\n complementaryColor,\n );\n document.documentElement.style.setProperty('--r', r / 255);\n document.documentElement.style.setProperty('--g', g / 255);\n document.documentElement.style.setProperty('--b', b / 255);\n document.documentElement.style.setProperty('--cr', (255 - r) / 255);\n document.documentElement.style.setProperty('--cg', (255 - g) / 255);\n document.documentElement.style.setProperty('--cb', (255 - b) / 255);\n}\n\ngenerateColorPalette();\n"],"names":["hexToRgb","H","r","g","b","length","document","documentElement","dataset","accentColor","h","s","l","rgb","sr","sg","sb","cmin","Math","min","cmax","max","delta","round","abs","toFixed","parseInt","rgbToHSL","complementaryColor","style","setProperty","generateColorPalette"],"mappings":"yBACA,SAASA,EAASC,GAEhB,IAAIC,EAAI,EACJC,EAAI,EACJC,EAAI,EAWR,OATiB,IAAbH,EAAEI,QACJH,EAAK,KAAID,EAAE,KAAKA,EAAE,KAClBE,EAAK,KAAIF,EAAE,KAAKA,EAAE,KAClBG,EAAK,KAAIH,EAAE,KAAKA,EAAE,MACI,IAAbA,EAAEI,SACXH,EAAK,KAAID,EAAE,KAAKA,EAAE,KAClBE,EAAK,KAAIF,EAAE,KAAKA,EAAE,KAClBG,EAAK,KAAIH,EAAE,KAAKA,EAAE,MAEb,CAACC,EAAGC,EAAGC,EAChB,EAyCA,WACE,MAAOF,EAAGC,EAAGC,GAAKE,SAASC,gBAAgBC,QAAQC,YAC/CT,EAASM,SAASC,gBAAgBC,QAAQC,aAC1CT,EAAS,YAENU,EAAGC,EAAGC,GA5Cf,SAAkBC,GAChB,MAAOX,EAAGC,EAAGC,GAAKS,EAGZC,EAAKZ,EAAI,IACTa,EAAKZ,EAAI,IACTa,EAAKZ,EAAI,IAETa,EAAOC,KAAKC,IAAIL,EAAIC,EAAIC,GACxBI,EAAOF,KAAKG,IAAIP,EAAIC,EAAIC,GACxBM,EAAQF,EAAOH,EACrB,IAAIP,EAAI,EACJC,EAAI,EACJC,EAAI,EAuBR,OApBEF,EADY,IAAVY,EACE,EACKF,IAASN,GACZC,EAAKC,GAAMM,EAAS,EACjBF,IAASL,GACbC,EAAKF,GAAMQ,EAAQ,GAEnBR,EAAKC,GAAMO,EAAQ,EAG1BZ,EAAIQ,KAAKK,MAAU,GAAJb,GAEXA,EAAI,IACNA,GAAK,KAGPE,GAAKQ,EAAOH,GAAQ,EACpBN,EAAc,IAAVW,EAAc,EAAIA,GAAS,EAAIJ,KAAKM,IAAI,EAAIZ,EAAI,IACpDD,IAAU,IAAJA,GAASc,QAAQ,GACvBb,IAAU,IAAJA,GAASa,QAAQ,GAEhB,CAACf,EAAGC,EAAGC,EAAGc,SAASxB,GAAIwB,SAASvB,GAAIuB,SAAStB,GACtD,CAOoBuB,CAAS,CAACzB,EAAGC,EAAGC,IAE5BwB,EAAqBlB,EAAI,IAAM,IAAMA,EAAI,IAAMA,EAAI,IACzDJ,SAASC,gBAAgBsB,MAAMC,YAAY,cAAepB,GAC1DJ,SAASC,gBAAgBsB,MAAMC,YAAY,eAAiB,GAAEnB,MAC9DL,SAASC,gBAAgBsB,MAAMC,YAAY,cAAgB,GAAElB,MAC7DN,SAASC,gBAAgBsB,MAAMC,YAC7B,wBACAF,GAEFtB,SAASC,gBAAgBsB,MAAMC,YAAY,MAAO5B,EAAI,KACtDI,SAASC,gBAAgBsB,MAAMC,YAAY,MAAO3B,EAAI,KACtDG,SAASC,gBAAgBsB,MAAMC,YAAY,MAAO1B,EAAI,KACtDE,SAASC,gBAAgBsB,MAAMC,YAAY,QAAS,IAAM5B,GAAK,KAC/DI,SAASC,gBAAgBsB,MAAMC,YAAY,QAAS,IAAM3B,GAAK,KAC/DG,SAASC,gBAAgBsB,MAAMC,YAAY,QAAS,IAAM1B,GAAK,IACjE,CAEA2B"} \ No newline at end of file +{"version":3,"file":"generateColorPalette.js","sources":["../../src/js/generateColorPalette.js"],"sourcesContent":["// From CSS Tricks\nfunction hexToRgb(H) {\n // Convert hex to RGB first\n let r = 0;\n let g = 0;\n let b = 0;\n\n if (H.length === 4) {\n r = `0x${H[1]}${H[1]}`;\n g = `0x${H[2]}${H[2]}`;\n b = `0x${H[3]}${H[3]}`;\n } else if (H.length === 7) {\n r = `0x${H[1]}${H[2]}`;\n g = `0x${H[3]}${H[4]}`;\n b = `0x${H[5]}${H[6]}`;\n }\n return [r, g, b];\n}\n\nfunction rgbToHSL(rgb) {\n const [r, g, b] = rgb;\n\n // Then to HSL\n const sr = r / 255;\n const sg = g / 255;\n const sb = b / 255;\n\n const cmin = Math.min(sr, sg, sb);\n const cmax = Math.max(sr, sg, sb);\n const delta = cmax - cmin;\n let h = 0;\n let s = 0;\n let l = 0;\n\n if (delta === 0) {\n h = 0;\n } else if (cmax === sr) {\n h = ((sg - sb) / delta) % 6;\n } else if (cmax === sg) {\n h = (sb - sr) / delta + 2;\n } else {\n h = (sr - sg) / delta + 4;\n }\n\n h = Math.round(h * 60);\n\n if (h < 0) {\n h += 360;\n }\n\n l = (cmax + cmin) / 2;\n s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));\n s = +(s * 100).toFixed(1);\n l = +(l * 100).toFixed(1);\n\n return [h, s, l, parseInt(r), parseInt(g), parseInt(b)];\n}\n\nfunction generateColorPalette() {\n const [r, g, b] = document.documentElement.dataset.accentColor\n ? hexToRgb(document.documentElement.dataset.accentColor)\n : hexToRgb('#ff0000');\n\n const [h, s, l] = rgbToHSL([r, g, b]);\n\n const complementaryColor = h + 180 > 360 ? h - 180 : h + 180;\n document.documentElement.style.setProperty('--primary-h', h);\n document.documentElement.style.setProperty('--saturation', `${s}%`);\n document.documentElement.style.setProperty('--lightness', `${l}%`);\n document.documentElement.style.setProperty(\n '--complementary-color',\n complementaryColor,\n );\n document.documentElement.style.setProperty('--r', r / 255);\n document.documentElement.style.setProperty('--g', g / 255);\n document.documentElement.style.setProperty('--b', b / 255);\n document.documentElement.style.setProperty('--cr', (255 - r) / 255);\n document.documentElement.style.setProperty('--cg', (255 - g) / 255);\n document.documentElement.style.setProperty('--cb', (255 - b) / 255);\n}\n\ngenerateColorPalette();\n"],"names":[],"mappings":";;;EAAA;EACA,SAAS,QAAQ,CAAC,CAAC,EAAE;EACrB;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;EACZ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;EACZ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ;EACA,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;EACtB,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3B,GAAG,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;EAC7B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC3B,GAAG;EACH,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EACnB,CAAC;AACD;EACA,SAAS,QAAQ,CAAC,GAAG,EAAE;EACvB,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;AACxB;EACA;EACA,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;EACrB,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;EACrB,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;AACrB;EACA,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;EACpC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;EACpC,EAAE,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;EAC5B,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;EACZ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;EACZ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ;EACA,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE;EACnB,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,GAAG,MAAM,IAAI,IAAI,KAAK,EAAE,EAAE;EAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC;EAChC,GAAG,MAAM,IAAI,IAAI,KAAK,EAAE,EAAE;EAC1B,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;EAC9B,GAAG,MAAM;EACT,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;EAC9B,GAAG;AACH;EACA,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACzB;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;EACb,IAAI,CAAC,IAAI,GAAG,CAAC;EACb,GAAG;AACH;EACA,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;EACxB,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC1D,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;EAC5B,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC5B;EACA,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1D,CAAC;AACD;EACA,SAAS,oBAAoB,GAAG;EAChC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW;EAChE,MAAM,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC;EAC5D,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC1B;EACA,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxC;EACA,EAAE,MAAM,kBAAkB,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;EAC/D,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;EAC/D,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACtE,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACrE,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW;EAC5C,IAAI,uBAAuB;EAC3B,IAAI,kBAAkB;EACtB,GAAG,CAAC;EACJ,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;EAC7D,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;EAC7D,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;EAC7D,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;EACtE,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;EACtE,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;EACtE,CAAC;AACD;EACA,oBAAoB,EAAE;;;;;;"} \ No newline at end of file diff --git a/assets/built/ghost-cards.css b/assets/built/ghost-cards.css index 4aefce3c..38f7f380 100644 --- a/assets/built/ghost-cards.css +++ b/assets/built/ghost-cards.css @@ -1,2 +1,71 @@ -.kg-bookmark-card a.kg-bookmark-container{border-color:var(--border-color);border-radius:var(--radius);transition:border-color .3s}.kg-bookmark-card .kg-bookmark-icon{margin-inline:0 6px}.kg-bookmark-title{font-size:1rem}.kg-bookmark-content{padding:1rem}.kg-bookmark-description{color:var(--element-light);font-size:var(--small)}.kg-bookmark-metadata{font-size:var(--small)}.kg-bookmark-card:hover a.kg-bookmark-container{border-color:var(--primary-light);border-radius:var(--radius)}.kg-toggle-card{border:1px solid var(--border-color);border-radius:var(--radius);box-shadow:none;padding:1rem}.kg-toggle-heading svg{color:var(--primary-light)}.kg-toggle-card:hover .kg-toggle-heading svg{color:var(--primary)}.kg-button-card{font-family:inherit;font-weight:700;text-transform:uppercase}.kg-btn,.kg-button-card{border-radius:var(--radius)}.kg-btn{height:auto;padding:var(--button-padding)}.kg-btn-accent{background-color:var(--primary);color:var(--button-text);transition:background-color .3s}.kg-btn-accent:hover{background-color:var(--primary-light);opacity:1}.kg-callout-card{background-color:var(--border-color);border-radius:var(--radius);padding:1rem} +/* Bookmark card */ +/* stylelint-disable-next-line selector-no-qualifying-type */ +.kg-bookmark-card a.kg-bookmark-container { + border-color: var(--border-color); + border-radius: var(--radius); + transition: border-color 0.3s; +} +.kg-bookmark-card .kg-bookmark-icon { + margin-inline: 0 6px; +} +.kg-bookmark-title { + font-size: 1rem; +} +.kg-bookmark-content { + padding: 1rem; +} +.kg-bookmark-description { + font-size: var(--small); + color: var(--element-light); +} +.kg-bookmark-metadata { + font-size: var(--small); +} +/* stylelint-disable-next-line selector-no-qualifying-type */ +.kg-bookmark-card:hover a.kg-bookmark-container { + border-color: var(--primary-light); + border-radius: var(--radius); +} +/* Toggle card */ +.kg-toggle-card { + padding: 1rem; + border: 1px solid var(--border-color); + border-radius: var(--radius); + box-shadow: none; +} +.kg-toggle-heading svg { + color: var(--primary-light); +} +.kg-toggle-card:hover .kg-toggle-heading svg { + color: var(--primary); +} +/* Button */ +.kg-button-card { + font-family: inherit; + font-weight: 700; + text-transform: uppercase; + border-radius: var(--radius); +} +.kg-btn { + height: auto; + height: initial; + padding: var(--button-padding); + border-radius: var(--radius); +} +.kg-btn-accent { + color: var(--button-text); + background-color: var(--primary); + transition: background-color 0.3s; +} +.kg-btn-accent:hover { + background-color: var(--primary-light); + opacity: 1; +} +/* Callout card */ +.kg-callout-card { + padding: 1rem; + background-color: var(--border-color); + border-radius: var(--radius); +} + /*# sourceMappingURL=ghost-cards.css.map */ \ No newline at end of file diff --git a/assets/built/ghost-cards.css.map b/assets/built/ghost-cards.css.map index 42c39381..53fc83be 100644 --- a/assets/built/ghost-cards.css.map +++ b/assets/built/ghost-cards.css.map @@ -1 +1 @@ -{"version":3,"sources":["ghost-cards.css"],"names":[],"mappings":"AAEA,0CACE,gCAAiC,CACjC,2BAA4B,CAC5B,2BACF,CACA,oCACE,mBACF,CAEA,mBACE,cACF,CAEA,qBACE,YACF,CAEA,yBAEE,0BAA2B,CAD3B,sBAEF,CAEA,sBACE,sBACF,CAGA,gDACE,iCAAkC,CAClC,2BACF,CAGA,gBAEE,oCAAqC,CACrC,2BAA4B,CAC5B,eAAgB,CAHhB,YAIF,CAEA,uBACE,0BACF,CAEA,6CACE,oBACF,CAGA,gBACE,mBAAoB,CACpB,eAAgB,CAChB,wBAEF,CACA,wBAFE,2BAMF,CAJA,QACE,WAAe,CACf,6BAEF,CAEA,eAEE,+BAAgC,CADhC,wBAAyB,CAEzB,+BACF,CAEA,qBACE,qCAAsC,CACtC,SACF,CAGA,iBAEE,oCAAqC,CACrC,2BAA4B,CAF5B,YAGF","file":"ghost-cards.css","sourcesContent":["/* Bookmark card */\n/* stylelint-disable-next-line selector-no-qualifying-type */\n.kg-bookmark-card a.kg-bookmark-container {\n border-color: var(--border-color);\n border-radius: var(--radius);\n transition: border-color 0.3s;\n}\n.kg-bookmark-card .kg-bookmark-icon {\n margin-inline: 0 6px;\n}\n\n.kg-bookmark-title {\n font-size: 1rem;\n}\n\n.kg-bookmark-content {\n padding: 1rem;\n}\n\n.kg-bookmark-description {\n font-size: var(--small);\n color: var(--element-light);\n}\n\n.kg-bookmark-metadata {\n font-size: var(--small);\n}\n\n/* stylelint-disable-next-line selector-no-qualifying-type */\n.kg-bookmark-card:hover a.kg-bookmark-container {\n border-color: var(--primary-light);\n border-radius: var(--radius);\n}\n\n/* Toggle card */\n.kg-toggle-card {\n padding: 1rem;\n border: 1px solid var(--border-color);\n border-radius: var(--radius);\n box-shadow: none;\n}\n\n.kg-toggle-heading svg {\n color: var(--primary-light);\n}\n\n.kg-toggle-card:hover .kg-toggle-heading svg {\n color: var(--primary);\n}\n\n/* Button */\n.kg-button-card {\n font-family: inherit;\n font-weight: 700;\n text-transform: uppercase;\n border-radius: var(--radius);\n}\n.kg-btn {\n height: initial;\n padding: var(--button-padding);\n border-radius: var(--radius);\n}\n\n.kg-btn-accent {\n color: var(--button-text);\n background-color: var(--primary);\n transition: background-color 0.3s;\n}\n\n.kg-btn-accent:hover {\n background-color: var(--primary-light);\n opacity: 1;\n}\n\n/* Callout card */\n.kg-callout-card {\n padding: 1rem;\n background-color: var(--border-color);\n border-radius: var(--radius);\n}\n"]} \ No newline at end of file +{"version":3,"sources":["ghost-cards.css"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,4DAA4D;AAC5D;EACE,iCAAiC;EACjC,4BAA4B;EAC5B,6BAA6B;AAC/B;AACA;EACE,oBAAoB;AACtB;AAEA;EACE,eAAe;AACjB;AAEA;EACE,aAAa;AACf;AAEA;EACE,uBAAuB;EACvB,2BAA2B;AAC7B;AAEA;EACE,uBAAuB;AACzB;AAEA,4DAA4D;AAC5D;EACE,kCAAkC;EAClC,4BAA4B;AAC9B;AAEA,gBAAgB;AAChB;EACE,aAAa;EACb,qCAAqC;EACrC,4BAA4B;EAC5B,gBAAgB;AAClB;AAEA;EACE,2BAA2B;AAC7B;AAEA;EACE,qBAAqB;AACvB;AAEA,WAAW;AACX;EACE,oBAAoB;EACpB,gBAAgB;EAChB,yBAAyB;EACzB,4BAA4B;AAC9B;AACA;EACE,YAAe;EAAf,eAAe;EACf,8BAA8B;EAC9B,4BAA4B;AAC9B;AAEA;EACE,yBAAyB;EACzB,gCAAgC;EAChC,iCAAiC;AACnC;AAEA;EACE,sCAAsC;EACtC,UAAU;AACZ;AAEA,iBAAiB;AACjB;EACE,aAAa;EACb,qCAAqC;EACrC,4BAA4B;AAC9B","file":"ghost-cards.css","sourcesContent":["/* Bookmark card */\n/* stylelint-disable-next-line selector-no-qualifying-type */\n.kg-bookmark-card a.kg-bookmark-container {\n border-color: var(--border-color);\n border-radius: var(--radius);\n transition: border-color 0.3s;\n}\n.kg-bookmark-card .kg-bookmark-icon {\n margin-inline: 0 6px;\n}\n\n.kg-bookmark-title {\n font-size: 1rem;\n}\n\n.kg-bookmark-content {\n padding: 1rem;\n}\n\n.kg-bookmark-description {\n font-size: var(--small);\n color: var(--element-light);\n}\n\n.kg-bookmark-metadata {\n font-size: var(--small);\n}\n\n/* stylelint-disable-next-line selector-no-qualifying-type */\n.kg-bookmark-card:hover a.kg-bookmark-container {\n border-color: var(--primary-light);\n border-radius: var(--radius);\n}\n\n/* Toggle card */\n.kg-toggle-card {\n padding: 1rem;\n border: 1px solid var(--border-color);\n border-radius: var(--radius);\n box-shadow: none;\n}\n\n.kg-toggle-heading svg {\n color: var(--primary-light);\n}\n\n.kg-toggle-card:hover .kg-toggle-heading svg {\n color: var(--primary);\n}\n\n/* Button */\n.kg-button-card {\n font-family: inherit;\n font-weight: 700;\n text-transform: uppercase;\n border-radius: var(--radius);\n}\n.kg-btn {\n height: initial;\n padding: var(--button-padding);\n border-radius: var(--radius);\n}\n\n.kg-btn-accent {\n color: var(--button-text);\n background-color: var(--primary);\n transition: background-color 0.3s;\n}\n\n.kg-btn-accent:hover {\n background-color: var(--primary-light);\n opacity: 1;\n}\n\n/* Callout card */\n.kg-callout-card {\n padding: 1rem;\n background-color: var(--border-color);\n border-radius: var(--radius);\n}\n"]} \ No newline at end of file diff --git a/assets/built/post.js b/assets/built/post.js index a86a7804..09425499 100644 --- a/assets/built/post.js +++ b/assets/built/post.js @@ -1,3 +1,777 @@ -!function(){"use strict"; -/*! medium-zoom 1.0.8 | MIT License | https://github.com/francoischalifour/medium-zoom */var e=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},l=window.Promise||function(e){function t(){}e(t,t)},s=function(e){var t=e.target;t!==T?-1!==S.indexOf(t)&&w({target:t}):E()},u=function(){if(!x&&q.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(O-e)>k.scrollOffset&&setTimeout(E,150)}},f=function(e){var t=e.key||e.keyCode;"Escape"!==t&&"Esc"!==t&&27!==t||E()},p=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t;if(t.background&&(T.style.background=t.background),t.container&&t.container instanceof Object&&(n.container=e({},k.container,t.container)),t.template){var i=o(t.template)?t.template:document.querySelector(t.template);n.template=i}return k=e({},k,n),S.forEach((function(e){e.dispatchEvent(a("medium-zoom:update",{detail:{zoom:N}}))})),N},g=function(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t(e({},k,o))},h=function(){for(var e=arguments.length,t=Array(e),o=0;o0?t.reduce((function(e,t){return[].concat(e,i(t))}),[]):S;return n.forEach((function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(a("medium-zoom:detach",{detail:{zoom:N}}))})),S=S.filter((function(e){return-1===n.indexOf(e)})),N},z=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return S.forEach((function(n){n.addEventListener("medium-zoom:"+e,t,o)})),A.push({type:"medium-zoom:"+e,listener:t,options:o}),N},y=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return S.forEach((function(n){n.removeEventListener("medium-zoom:"+e,t,o)})),A=A.filter((function(o){return!(o.type==="medium-zoom:"+e&&o.listener.toString()===t.toString())})),N},b=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.target,r=function(){var t={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},i=void 0,r=void 0;if(k.container)if(k.container instanceof Object)i=(t=e({},t,k.container)).width-t.left-t.right-2*k.margin,r=t.height-t.top-t.bottom-2*k.margin;else{var d=(o(k.container)?k.container:document.querySelector(k.container)).getBoundingClientRect(),a=d.width,c=d.height,m=d.left,l=d.top;t=e({},t,{width:a,height:c,left:m,top:l})}i=i||t.width-2*k.margin,r=r||t.height-2*k.margin;var s=q.zoomedHd||q.original,u=n(s)?i:s.naturalWidth||i,f=n(s)?r:s.naturalHeight||r,p=s.getBoundingClientRect(),g=p.top,h=p.left,v=p.width,z=p.height,y=Math.min(Math.max(v,u),i)/v,b=Math.min(Math.max(z,f),r)/z,E=Math.min(y,b),w="scale("+E+") translate3d("+((i-v)/2-h+k.margin+t.left)/E+"px, "+((r-z)/2-g+k.margin+t.top)/E+"px, 0)";q.zoomed.style.transform=w,q.zoomedHd&&(q.zoomedHd.style.transform=w)};return new l((function(e){if(i&&-1===S.indexOf(i))e(N);else{if(q.zoomed)e(N);else{if(i)q.original=i;else{if(!(S.length>0))return void e(N);var t=S;q.original=t[0]}if(q.original.dispatchEvent(a("medium-zoom:open",{detail:{zoom:N}})),O=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,x=!0,q.zoomed=d(q.original),document.body.appendChild(T),k.template){var n=o(k.template)?k.template:document.querySelector(k.template);q.template=document.createElement("div"),q.template.appendChild(n.content.cloneNode(!0)),document.body.appendChild(q.template)}if(q.original.parentElement&&"PICTURE"===q.original.parentElement.tagName&&q.original.currentSrc&&(q.zoomed.src=q.original.currentSrc),document.body.appendChild(q.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),q.original.classList.add("medium-zoom-image--hidden"),q.zoomed.classList.add("medium-zoom-image--opened"),q.zoomed.addEventListener("click",E),q.zoomed.addEventListener("transitionend",(function t(){x=!1,q.zoomed.removeEventListener("transitionend",t),q.original.dispatchEvent(a("medium-zoom:opened",{detail:{zoom:N}})),e(N)})),q.original.getAttribute("data-zoom-src")){q.zoomedHd=q.zoomed.cloneNode(),q.zoomedHd.removeAttribute("srcset"),q.zoomedHd.removeAttribute("sizes"),q.zoomedHd.removeAttribute("loading"),q.zoomedHd.src=q.zoomed.getAttribute("data-zoom-src"),q.zoomedHd.onerror=function(){clearInterval(c),console.warn("Unable to reach the zoom image target "+q.zoomedHd.src),q.zoomedHd=null,r()};var c=setInterval((function(){q.zoomedHd.complete&&(clearInterval(c),q.zoomedHd.classList.add("medium-zoom-image--opened"),q.zoomedHd.addEventListener("click",E),document.body.appendChild(q.zoomedHd),r())}),10)}else if(q.original.hasAttribute("srcset")){q.zoomedHd=q.zoomed.cloneNode(),q.zoomedHd.removeAttribute("sizes"),q.zoomedHd.removeAttribute("loading");var m=q.zoomedHd.addEventListener("load",(function(){q.zoomedHd.removeEventListener("load",m),q.zoomedHd.classList.add("medium-zoom-image--opened"),q.zoomedHd.addEventListener("click",E),document.body.appendChild(q.zoomedHd),r()}))}else r()}}}))},E=function(){return new l((function(e){if(!x&&q.original){x=!0,document.body.classList.remove("medium-zoom--opened"),q.zoomed.style.transform="",q.zoomedHd&&(q.zoomedHd.style.transform=""),q.template&&(q.template.style.transition="opacity 150ms",q.template.style.opacity=0),q.original.dispatchEvent(a("medium-zoom:close",{detail:{zoom:N}})),q.zoomed.addEventListener("transitionend",(function t(){q.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(q.zoomed),q.zoomedHd&&document.body.removeChild(q.zoomedHd),document.body.removeChild(T),q.zoomed.classList.remove("medium-zoom-image--opened"),q.template&&document.body.removeChild(q.template),x=!1,q.zoomed.removeEventListener("transitionend",t),q.original.dispatchEvent(a("medium-zoom:closed",{detail:{zoom:N}})),q.original=null,q.zoomed=null,q.zoomedHd=null,q.template=null,e(N)}))}else e(N)}))},w=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.target;return q.original?E():b({target:t})},L=function(){return k},H=function(){return S},C=function(){return q.original},S=[],A=[],x=!1,O=0,k=m,q={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(c)?k=c:(c||"string"==typeof c)&&h(c),k=e({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},k);var T=r(k.background);document.addEventListener("click",s),document.addEventListener("keyup",f),document.addEventListener("scroll",u),window.addEventListener("resize",E);var N={open:b,close:E,toggle:w,update:p,clone:g,attach:h,detach:v,on:z,off:y,getOptions:L,getImages:H,getZoomedImage:C};return N};const m=document.querySelectorAll(".sm-post-content > table");!function(){const e=[...document.querySelectorAll(".sm-post-content > img"),...document.querySelectorAll(".sm-post-content > p > img"),...document.querySelectorAll(".kg-image-card > img"),...document.querySelectorAll(".kg-gallery-image > img")];c(e,{background:"rgba(0,0,0,0.75)"})}(),m.forEach((e=>function(e){const t=document.createElement("div");t.setAttribute("style","width: 100%; overflow-x: auto; margin: 2rem 0;"),t.setAttribute("class","sm-table-wrapper"),e.parentNode.insertBefore(t,e),t.appendChild(e)}(e))),function(){const e=document.querySelector(".sm-author-website");e&&(e.lastChild.textContent=new URL(e.textContent).hostname)}(),function(){const e=document.querySelector(".post"),t=document.querySelector(".sm-post-toc"),o=document.querySelector(".sm-post-toc-contents");if(!t||!e)return;const n=e.querySelectorAll("h2, h3, h4, h5, h6");if(n.length<3)return void(t.style.display="none");t.classList.add("toc-enabled");const i=document.querySelector(".sm-post-toc-btn");i.addEventListener("click",(()=>{o.classList.toggle("toc-show")})),n.forEach((e=>{const t=function(e){const t=document.createElement("a");return t.classList.add("sm-toc-link"),t.setAttribute("href",`#${e.id}`),t.textContent=e.textContent,t}(e);o.append(t)}));const r=new IntersectionObserver((e=>{e.forEach((e=>{const o=e.target.getAttribute("id"),n=t.querySelector(`a[href="#${o}"]`);e.isIntersecting&&(n.classList.add("sm-toc-active"),t.querySelectorAll("a").forEach((e=>{e!==n&&e.classList.remove("sm-toc-active")})))}))}),{root:null,rootMargin:"0px",threshold:.5});n.forEach((e=>{r.observe(e)})),document.addEventListener("scroll",(()=>{const e=function(){const e=document.documentElement.scrollHeight-window.innerHeight;return window.scrollY/e}();i.style.setProperty("--conic-gradient",`var(--primary-light) 0deg 0%, var(--primary-light) 0deg ${100*e}%, var(--surface-light) 0deg ${1-100*e}%, var(--surface-light) 0deg 360deg`)}))}()}(); +(function () { + 'use strict'; + + /*! medium-zoom 1.0.8 | MIT License | https://github.com/francoischalifour/medium-zoom */ + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + var isSupported = function isSupported(node) { + return node.tagName === 'IMG'; + }; + + /* eslint-disable-next-line no-prototype-builtins */ + var isNodeList = function isNodeList(selector) { + return NodeList.prototype.isPrototypeOf(selector); + }; + + var isNode = function isNode(selector) { + return selector && selector.nodeType === 1; + }; + + var isSvg = function isSvg(image) { + var source = image.currentSrc || image.src; + return source.substr(-4).toLowerCase() === '.svg'; + }; + + var getImagesFromSelector = function getImagesFromSelector(selector) { + try { + if (Array.isArray(selector)) { + return selector.filter(isSupported); + } + + if (isNodeList(selector)) { + // Do not use spread operator or Array.from() for IE support + return [].slice.call(selector).filter(isSupported); + } + + if (isNode(selector)) { + return [selector].filter(isSupported); + } + + if (typeof selector === 'string') { + // Do not use spread operator or Array.from() for IE support + return [].slice.call(document.querySelectorAll(selector)).filter(isSupported); + } + + return []; + } catch (err) { + throw new TypeError('The provided selector is invalid.\n' + 'Expects a CSS selector, a Node element, a NodeList or an array.\n' + 'See: https://github.com/francoischalifour/medium-zoom'); + } + }; + + var createOverlay = function createOverlay(background) { + var overlay = document.createElement('div'); + overlay.classList.add('medium-zoom-overlay'); + overlay.style.background = background; + + return overlay; + }; + + var cloneTarget = function cloneTarget(template) { + var _template$getBounding = template.getBoundingClientRect(), + top = _template$getBounding.top, + left = _template$getBounding.left, + width = _template$getBounding.width, + height = _template$getBounding.height; + + var clone = template.cloneNode(); + var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; + var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; + + clone.removeAttribute('id'); + clone.style.position = 'absolute'; + clone.style.top = top + scrollTop + 'px'; + clone.style.left = left + scrollLeft + 'px'; + clone.style.width = width + 'px'; + clone.style.height = height + 'px'; + clone.style.transform = ''; + + return clone; + }; + + var createCustomEvent = function createCustomEvent(type, params) { + var eventParams = _extends({ + bubbles: false, + cancelable: false, + detail: undefined + }, params); + + if (typeof window.CustomEvent === 'function') { + return new CustomEvent(type, eventParams); + } + + var customEvent = document.createEvent('CustomEvent'); + customEvent.initCustomEvent(type, eventParams.bubbles, eventParams.cancelable, eventParams.detail); + + return customEvent; + }; + + var mediumZoom = function mediumZoom(selector) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + /** + * Ensure the compatibility with IE11 if no Promise polyfill are used. + */ + var Promise = window.Promise || function Promise(fn) { + function noop() {} + fn(noop, noop); + }; + + var _handleClick = function _handleClick(event) { + var target = event.target; + + + if (target === overlay) { + close(); + return; + } + + if (images.indexOf(target) === -1) { + return; + } + + toggle({ target: target }); + }; + + var _handleScroll = function _handleScroll() { + if (isAnimating || !active.original) { + return; + } + + var currentScroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; + + if (Math.abs(scrollTop - currentScroll) > zoomOptions.scrollOffset) { + setTimeout(close, 150); + } + }; + + var _handleKeyUp = function _handleKeyUp(event) { + var key = event.key || event.keyCode; + + // Close if escape key is pressed + if (key === 'Escape' || key === 'Esc' || key === 27) { + close(); + } + }; + + var update = function update() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + var newOptions = options; + + if (options.background) { + overlay.style.background = options.background; + } + + if (options.container && options.container instanceof Object) { + newOptions.container = _extends({}, zoomOptions.container, options.container); + } + + if (options.template) { + var template = isNode(options.template) ? options.template : document.querySelector(options.template); + + newOptions.template = template; + } + + zoomOptions = _extends({}, zoomOptions, newOptions); + + images.forEach(function (image) { + image.dispatchEvent(createCustomEvent('medium-zoom:update', { + detail: { zoom: zoom } + })); + }); + + return zoom; + }; + + var clone = function clone() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return mediumZoom(_extends({}, zoomOptions, options)); + }; + + var attach = function attach() { + for (var _len = arguments.length, selectors = Array(_len), _key = 0; _key < _len; _key++) { + selectors[_key] = arguments[_key]; + } + + var newImages = selectors.reduce(function (imagesAccumulator, currentSelector) { + return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector)); + }, []); + + newImages.filter(function (newImage) { + return images.indexOf(newImage) === -1; + }).forEach(function (newImage) { + images.push(newImage); + newImage.classList.add('medium-zoom-image'); + }); + + eventListeners.forEach(function (_ref) { + var type = _ref.type, + listener = _ref.listener, + options = _ref.options; + + newImages.forEach(function (image) { + image.addEventListener(type, listener, options); + }); + }); + + return zoom; + }; + + var detach = function detach() { + for (var _len2 = arguments.length, selectors = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + selectors[_key2] = arguments[_key2]; + } + + if (active.zoomed) { + close(); + } + + var imagesToDetach = selectors.length > 0 ? selectors.reduce(function (imagesAccumulator, currentSelector) { + return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector)); + }, []) : images; + + imagesToDetach.forEach(function (image) { + image.classList.remove('medium-zoom-image'); + image.dispatchEvent(createCustomEvent('medium-zoom:detach', { + detail: { zoom: zoom } + })); + }); + + images = images.filter(function (image) { + return imagesToDetach.indexOf(image) === -1; + }); + + return zoom; + }; + + var on = function on(type, listener) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + images.forEach(function (image) { + image.addEventListener('medium-zoom:' + type, listener, options); + }); + + eventListeners.push({ type: 'medium-zoom:' + type, listener: listener, options: options }); + + return zoom; + }; + + var off = function off(type, listener) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + images.forEach(function (image) { + image.removeEventListener('medium-zoom:' + type, listener, options); + }); + + eventListeners = eventListeners.filter(function (eventListener) { + return !(eventListener.type === 'medium-zoom:' + type && eventListener.listener.toString() === listener.toString()); + }); + + return zoom; + }; + + var open = function open() { + var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + target = _ref2.target; + + var _animate = function _animate() { + var container = { + width: document.documentElement.clientWidth, + height: document.documentElement.clientHeight, + left: 0, + top: 0, + right: 0, + bottom: 0 + }; + var viewportWidth = void 0; + var viewportHeight = void 0; + + if (zoomOptions.container) { + if (zoomOptions.container instanceof Object) { + // The container is given as an object with properties like width, height, left, top + container = _extends({}, container, zoomOptions.container); + + // We need to adjust custom options like container.right or container.bottom + viewportWidth = container.width - container.left - container.right - zoomOptions.margin * 2; + viewportHeight = container.height - container.top - container.bottom - zoomOptions.margin * 2; + } else { + // The container is given as an element + var zoomContainer = isNode(zoomOptions.container) ? zoomOptions.container : document.querySelector(zoomOptions.container); + + var _zoomContainer$getBou = zoomContainer.getBoundingClientRect(), + _width = _zoomContainer$getBou.width, + _height = _zoomContainer$getBou.height, + _left = _zoomContainer$getBou.left, + _top = _zoomContainer$getBou.top; + + container = _extends({}, container, { + width: _width, + height: _height, + left: _left, + top: _top + }); + } + } + + viewportWidth = viewportWidth || container.width - zoomOptions.margin * 2; + viewportHeight = viewportHeight || container.height - zoomOptions.margin * 2; + + var zoomTarget = active.zoomedHd || active.original; + var naturalWidth = isSvg(zoomTarget) ? viewportWidth : zoomTarget.naturalWidth || viewportWidth; + var naturalHeight = isSvg(zoomTarget) ? viewportHeight : zoomTarget.naturalHeight || viewportHeight; + + var _zoomTarget$getBoundi = zoomTarget.getBoundingClientRect(), + top = _zoomTarget$getBoundi.top, + left = _zoomTarget$getBoundi.left, + width = _zoomTarget$getBoundi.width, + height = _zoomTarget$getBoundi.height; + + var scaleX = Math.min(Math.max(width, naturalWidth), viewportWidth) / width; + var scaleY = Math.min(Math.max(height, naturalHeight), viewportHeight) / height; + var scale = Math.min(scaleX, scaleY); + var translateX = (-left + (viewportWidth - width) / 2 + zoomOptions.margin + container.left) / scale; + var translateY = (-top + (viewportHeight - height) / 2 + zoomOptions.margin + container.top) / scale; + var transform = 'scale(' + scale + ') translate3d(' + translateX + 'px, ' + translateY + 'px, 0)'; + + active.zoomed.style.transform = transform; + + if (active.zoomedHd) { + active.zoomedHd.style.transform = transform; + } + }; + + return new Promise(function (resolve) { + if (target && images.indexOf(target) === -1) { + resolve(zoom); + return; + } + + var _handleOpenEnd = function _handleOpenEnd() { + isAnimating = false; + active.zoomed.removeEventListener('transitionend', _handleOpenEnd); + active.original.dispatchEvent(createCustomEvent('medium-zoom:opened', { + detail: { zoom: zoom } + })); + + resolve(zoom); + }; + + if (active.zoomed) { + resolve(zoom); + return; + } + + if (target) { + // The zoom was triggered manually via a click + active.original = target; + } else if (images.length > 0) { + var _images = images; + active.original = _images[0]; + } else { + resolve(zoom); + return; + } + + active.original.dispatchEvent(createCustomEvent('medium-zoom:open', { + detail: { zoom: zoom } + })); + + scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; + isAnimating = true; + active.zoomed = cloneTarget(active.original); + + document.body.appendChild(overlay); + + if (zoomOptions.template) { + var template = isNode(zoomOptions.template) ? zoomOptions.template : document.querySelector(zoomOptions.template); + active.template = document.createElement('div'); + active.template.appendChild(template.content.cloneNode(true)); + + document.body.appendChild(active.template); + } + + // If the selected tag is inside a tag, set the + // currently-applied source as the cloned `src=` attribute. + // (as these might differ, or src= might be unset in some cases) + if (active.original.parentElement && active.original.parentElement.tagName === 'PICTURE' && active.original.currentSrc) { + active.zoomed.src = active.original.currentSrc; + } + + document.body.appendChild(active.zoomed); + + window.requestAnimationFrame(function () { + document.body.classList.add('medium-zoom--opened'); + }); + + active.original.classList.add('medium-zoom-image--hidden'); + active.zoomed.classList.add('medium-zoom-image--opened'); + + active.zoomed.addEventListener('click', close); + active.zoomed.addEventListener('transitionend', _handleOpenEnd); + + if (active.original.getAttribute('data-zoom-src')) { + active.zoomedHd = active.zoomed.cloneNode(); + + // Reset the `scrset` property or the HD image won't load. + active.zoomedHd.removeAttribute('srcset'); + active.zoomedHd.removeAttribute('sizes'); + // Remove loading attribute so the browser can load the image normally + active.zoomedHd.removeAttribute('loading'); + + active.zoomedHd.src = active.zoomed.getAttribute('data-zoom-src'); + + active.zoomedHd.onerror = function () { + clearInterval(getZoomTargetSize); + console.warn('Unable to reach the zoom image target ' + active.zoomedHd.src); + active.zoomedHd = null; + _animate(); + }; + + // We need to access the natural size of the full HD + // target as fast as possible to compute the animation. + var getZoomTargetSize = setInterval(function () { + if ( active.zoomedHd.complete) { + clearInterval(getZoomTargetSize); + active.zoomedHd.classList.add('medium-zoom-image--opened'); + active.zoomedHd.addEventListener('click', close); + document.body.appendChild(active.zoomedHd); + _animate(); + } + }, 10); + } else if (active.original.hasAttribute('srcset')) { + // If an image has a `srcset` attribuet, we don't know the dimensions of the + // zoomed (HD) image (like when `data-zoom-src` is specified). + // Therefore the approach is quite similar. + active.zoomedHd = active.zoomed.cloneNode(); + + // Resetting the sizes attribute tells the browser to load the + // image best fitting the current viewport size, respecting the `srcset`. + active.zoomedHd.removeAttribute('sizes'); + + // In Firefox, the `loading` attribute needs to be set to `eager` (default + // value) for the load event to be fired. + active.zoomedHd.removeAttribute('loading'); + + // Wait for the load event of the hd image. This will fire if the image + // is already cached. + var loadEventListener = active.zoomedHd.addEventListener('load', function () { + active.zoomedHd.removeEventListener('load', loadEventListener); + active.zoomedHd.classList.add('medium-zoom-image--opened'); + active.zoomedHd.addEventListener('click', close); + document.body.appendChild(active.zoomedHd); + _animate(); + }); + } else { + _animate(); + } + }); + }; + + var close = function close() { + return new Promise(function (resolve) { + if (isAnimating || !active.original) { + resolve(zoom); + return; + } + + var _handleCloseEnd = function _handleCloseEnd() { + active.original.classList.remove('medium-zoom-image--hidden'); + document.body.removeChild(active.zoomed); + if (active.zoomedHd) { + document.body.removeChild(active.zoomedHd); + } + document.body.removeChild(overlay); + active.zoomed.classList.remove('medium-zoom-image--opened'); + if (active.template) { + document.body.removeChild(active.template); + } + + isAnimating = false; + active.zoomed.removeEventListener('transitionend', _handleCloseEnd); + + active.original.dispatchEvent(createCustomEvent('medium-zoom:closed', { + detail: { zoom: zoom } + })); + + active.original = null; + active.zoomed = null; + active.zoomedHd = null; + active.template = null; + + resolve(zoom); + }; + + isAnimating = true; + document.body.classList.remove('medium-zoom--opened'); + active.zoomed.style.transform = ''; + + if (active.zoomedHd) { + active.zoomedHd.style.transform = ''; + } + + // Fade out the template so it's not too abrupt + if (active.template) { + active.template.style.transition = 'opacity 150ms'; + active.template.style.opacity = 0; + } + + active.original.dispatchEvent(createCustomEvent('medium-zoom:close', { + detail: { zoom: zoom } + })); + + active.zoomed.addEventListener('transitionend', _handleCloseEnd); + }); + }; + + var toggle = function toggle() { + var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + target = _ref3.target; + + if (active.original) { + return close(); + } + + return open({ target: target }); + }; + + var getOptions = function getOptions() { + return zoomOptions; + }; + + var getImages = function getImages() { + return images; + }; + + var getZoomedImage = function getZoomedImage() { + return active.original; + }; + + var images = []; + var eventListeners = []; + var isAnimating = false; + var scrollTop = 0; + var zoomOptions = options; + var active = { + original: null, + zoomed: null, + zoomedHd: null, + template: null + + // If the selector is omitted, it's replaced by the options + };if (Object.prototype.toString.call(selector) === '[object Object]') { + zoomOptions = selector; + } else if (selector || typeof selector === 'string' // to process empty string as a selector + ) { + attach(selector); + } + + // Apply the default option values + zoomOptions = _extends({ + margin: 0, + background: '#fff', + scrollOffset: 40, + container: null, + template: null + }, zoomOptions); + + var overlay = createOverlay(zoomOptions.background); + + document.addEventListener('click', _handleClick); + document.addEventListener('keyup', _handleKeyUp); + document.addEventListener('scroll', _handleScroll); + window.addEventListener('resize', close); + + var zoom = { + open: open, + close: close, + toggle: toggle, + update: update, + clone: clone, + attach: attach, + detach: detach, + on: on, + off: off, + getOptions: getOptions, + getImages: getImages, + getZoomedImage: getZoomedImage + }; + + return zoom; + }; + + function styleInject(css, ref) { + if ( ref === void 0 ) ref = {}; + var insertAt = ref.insertAt; + + if (!css || typeof document === 'undefined') { return; } + + var head = document.head || document.getElementsByTagName('head')[0]; + var style = document.createElement('style'); + style.type = 'text/css'; + + if (insertAt === 'top') { + if (head.firstChild) { + head.insertBefore(style, head.firstChild); + } else { + head.appendChild(style); + } + } else { + head.appendChild(style); + } + + if (style.styleSheet) { + style.styleSheet.cssText = css; + } else { + style.appendChild(document.createTextNode(css)); + } + } + + var css = ".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}"; + styleInject(css); + + var mediumZoom$1 = mediumZoom; + + // Medium Zoom + function initMediumZoom() { + const directImages = document.querySelectorAll('.sm-post-content > img'); + const markdownImages = document.querySelectorAll( + '.sm-post-content > p > img', + ); + const kgImages = document.querySelectorAll('.kg-image-card > img'); + const galleryImages = document.querySelectorAll('.kg-gallery-image > img'); + + const postImages = [ + ...directImages, + ...markdownImages, + ...kgImages, + ...galleryImages, + ]; + + mediumZoom$1(postImages, { + background: 'rgba(0,0,0,0.75)', + }); + } + + //------------------------------------------- + // Make tables responsive + //------------------------------------------- + const tables = document.querySelectorAll('.sm-post-content > table'); + + function generateResponsiveTables() { + function tablePrepend(e) { + const responsiveWrapper = document.createElement('div'); + responsiveWrapper.setAttribute( + 'style', + 'width: 100%; overflow-x: auto; margin: 2rem 0;', + ); + responsiveWrapper.setAttribute('class', 'sm-table-wrapper'); + e.parentNode.insertBefore(responsiveWrapper, e); + responsiveWrapper.appendChild(e); + } + + tables.forEach((e) => tablePrepend(e)); + } + + function writeAuthorWebsite() { + const authorWebsite = document.querySelector('.sm-author-website'); + + if (!authorWebsite) return; + + authorWebsite.lastChild.textContent = new URL( + authorWebsite.textContent, + ).hostname; + } + + function getScrollProgress() { + const scrollableHeight = + document.documentElement.scrollHeight - window.innerHeight; + return window.scrollY / scrollableHeight; + } + + function toc() { + const postContainer = document.querySelector('.post'); + const tocContainer = document.querySelector('.sm-post-toc'); + const tocContentContainer = document.querySelector('.sm-post-toc-contents'); + + if (!tocContainer || !postContainer) { + return; + } + + const headings = postContainer.querySelectorAll('h2, h3, h4, h5, h6'); + + // If there are fewer than 3 headings, don't show the table of contents. + if (headings.length < 3) { + tocContainer.style.display = 'none'; + return; + } + + tocContainer.classList.add('toc-enabled'); + + const btn = document.querySelector('.sm-post-toc-btn'); + + btn.addEventListener('click', () => { + tocContentContainer.classList.toggle('toc-show'); + }); + + function createLink(element) { + const link = document.createElement('a'); + link.classList.add('sm-toc-link'); + link.setAttribute('href', `#${element.id}`); + link.textContent = element.textContent; + return link; + } + + headings.forEach((heading) => { + const link = createLink(heading); + tocContentContainer.append(link); + }); + + const observerOptions = { + root: null, + rootMargin: '0px', + threshold: 0.5, + }; + + const observer = new IntersectionObserver((entries) => { + entries.forEach((entry) => { + const id = entry.target.getAttribute('id'); + const activeLink = tocContainer.querySelector(`a[href="#${id}"]`); + if (entry.isIntersecting) { + activeLink.classList.add('sm-toc-active'); + tocContainer.querySelectorAll('a').forEach((link) => { + if (link !== activeLink) { + link.classList.remove('sm-toc-active'); + } + }); + } + }); + }, observerOptions); + + headings.forEach((heading) => { + observer.observe(heading); + }); + + document.addEventListener('scroll', () => { + const scrollPos = getScrollProgress(); + + btn.style.setProperty( + '--conic-gradient', + `var(--primary-light) 0deg 0%, var(--primary-light) 0deg ${ + scrollPos * 100 + }%, var(--surface-light) 0deg ${ + 1 - scrollPos * 100 + }%, var(--surface-light) 0deg 360deg`, + ); + }); + } + + initMediumZoom(); + // fluidvids.init(); + generateResponsiveTables(); + writeAuthorWebsite(); + toc(); + +})(); //# sourceMappingURL=post.js.map diff --git a/assets/built/post.js.map b/assets/built/post.js.map index 963f4b28..51660380 100644 --- a/assets/built/post.js.map +++ b/assets/built/post.js.map @@ -1 +1 @@ -{"version":3,"file":"post.js","sources":["../../node_modules/medium-zoom/dist/medium-zoom.esm.js","../../src/js/post/responsiveTables.js","../../src/js/post/medium_zoom.js","../../src/js/post/index.js","../../src/js/post/authorWebsite.js","../../src/js/post/toc.js"],"sourcesContent":["/*! medium-zoom 1.0.8 | MIT License | https://github.com/francoischalifour/medium-zoom */\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar isSupported = function isSupported(node) {\n return node.tagName === 'IMG';\n};\n\n/* eslint-disable-next-line no-prototype-builtins */\nvar isNodeList = function isNodeList(selector) {\n return NodeList.prototype.isPrototypeOf(selector);\n};\n\nvar isNode = function isNode(selector) {\n return selector && selector.nodeType === 1;\n};\n\nvar isSvg = function isSvg(image) {\n var source = image.currentSrc || image.src;\n return source.substr(-4).toLowerCase() === '.svg';\n};\n\nvar getImagesFromSelector = function getImagesFromSelector(selector) {\n try {\n if (Array.isArray(selector)) {\n return selector.filter(isSupported);\n }\n\n if (isNodeList(selector)) {\n // Do not use spread operator or Array.from() for IE support\n return [].slice.call(selector).filter(isSupported);\n }\n\n if (isNode(selector)) {\n return [selector].filter(isSupported);\n }\n\n if (typeof selector === 'string') {\n // Do not use spread operator or Array.from() for IE support\n return [].slice.call(document.querySelectorAll(selector)).filter(isSupported);\n }\n\n return [];\n } catch (err) {\n throw new TypeError('The provided selector is invalid.\\n' + 'Expects a CSS selector, a Node element, a NodeList or an array.\\n' + 'See: https://github.com/francoischalifour/medium-zoom');\n }\n};\n\nvar createOverlay = function createOverlay(background) {\n var overlay = document.createElement('div');\n overlay.classList.add('medium-zoom-overlay');\n overlay.style.background = background;\n\n return overlay;\n};\n\nvar cloneTarget = function cloneTarget(template) {\n var _template$getBounding = template.getBoundingClientRect(),\n top = _template$getBounding.top,\n left = _template$getBounding.left,\n width = _template$getBounding.width,\n height = _template$getBounding.height;\n\n var clone = template.cloneNode();\n var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n\n clone.removeAttribute('id');\n clone.style.position = 'absolute';\n clone.style.top = top + scrollTop + 'px';\n clone.style.left = left + scrollLeft + 'px';\n clone.style.width = width + 'px';\n clone.style.height = height + 'px';\n clone.style.transform = '';\n\n return clone;\n};\n\nvar createCustomEvent = function createCustomEvent(type, params) {\n var eventParams = _extends({\n bubbles: false,\n cancelable: false,\n detail: undefined\n }, params);\n\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(type, eventParams);\n }\n\n var customEvent = document.createEvent('CustomEvent');\n customEvent.initCustomEvent(type, eventParams.bubbles, eventParams.cancelable, eventParams.detail);\n\n return customEvent;\n};\n\nvar mediumZoom = function mediumZoom(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n /**\n * Ensure the compatibility with IE11 if no Promise polyfill are used.\n */\n var Promise = window.Promise || function Promise(fn) {\n function noop() {}\n fn(noop, noop);\n };\n\n var _handleClick = function _handleClick(event) {\n var target = event.target;\n\n\n if (target === overlay) {\n close();\n return;\n }\n\n if (images.indexOf(target) === -1) {\n return;\n }\n\n toggle({ target: target });\n };\n\n var _handleScroll = function _handleScroll() {\n if (isAnimating || !active.original) {\n return;\n }\n\n var currentScroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n\n if (Math.abs(scrollTop - currentScroll) > zoomOptions.scrollOffset) {\n setTimeout(close, 150);\n }\n };\n\n var _handleKeyUp = function _handleKeyUp(event) {\n var key = event.key || event.keyCode;\n\n // Close if escape key is pressed\n if (key === 'Escape' || key === 'Esc' || key === 27) {\n close();\n }\n };\n\n var update = function update() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var newOptions = options;\n\n if (options.background) {\n overlay.style.background = options.background;\n }\n\n if (options.container && options.container instanceof Object) {\n newOptions.container = _extends({}, zoomOptions.container, options.container);\n }\n\n if (options.template) {\n var template = isNode(options.template) ? options.template : document.querySelector(options.template);\n\n newOptions.template = template;\n }\n\n zoomOptions = _extends({}, zoomOptions, newOptions);\n\n images.forEach(function (image) {\n image.dispatchEvent(createCustomEvent('medium-zoom:update', {\n detail: { zoom: zoom }\n }));\n });\n\n return zoom;\n };\n\n var clone = function clone() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return mediumZoom(_extends({}, zoomOptions, options));\n };\n\n var attach = function attach() {\n for (var _len = arguments.length, selectors = Array(_len), _key = 0; _key < _len; _key++) {\n selectors[_key] = arguments[_key];\n }\n\n var newImages = selectors.reduce(function (imagesAccumulator, currentSelector) {\n return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector));\n }, []);\n\n newImages.filter(function (newImage) {\n return images.indexOf(newImage) === -1;\n }).forEach(function (newImage) {\n images.push(newImage);\n newImage.classList.add('medium-zoom-image');\n });\n\n eventListeners.forEach(function (_ref) {\n var type = _ref.type,\n listener = _ref.listener,\n options = _ref.options;\n\n newImages.forEach(function (image) {\n image.addEventListener(type, listener, options);\n });\n });\n\n return zoom;\n };\n\n var detach = function detach() {\n for (var _len2 = arguments.length, selectors = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n selectors[_key2] = arguments[_key2];\n }\n\n if (active.zoomed) {\n close();\n }\n\n var imagesToDetach = selectors.length > 0 ? selectors.reduce(function (imagesAccumulator, currentSelector) {\n return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector));\n }, []) : images;\n\n imagesToDetach.forEach(function (image) {\n image.classList.remove('medium-zoom-image');\n image.dispatchEvent(createCustomEvent('medium-zoom:detach', {\n detail: { zoom: zoom }\n }));\n });\n\n images = images.filter(function (image) {\n return imagesToDetach.indexOf(image) === -1;\n });\n\n return zoom;\n };\n\n var on = function on(type, listener) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n images.forEach(function (image) {\n image.addEventListener('medium-zoom:' + type, listener, options);\n });\n\n eventListeners.push({ type: 'medium-zoom:' + type, listener: listener, options: options });\n\n return zoom;\n };\n\n var off = function off(type, listener) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n images.forEach(function (image) {\n image.removeEventListener('medium-zoom:' + type, listener, options);\n });\n\n eventListeners = eventListeners.filter(function (eventListener) {\n return !(eventListener.type === 'medium-zoom:' + type && eventListener.listener.toString() === listener.toString());\n });\n\n return zoom;\n };\n\n var open = function open() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n target = _ref2.target;\n\n var _animate = function _animate() {\n var container = {\n width: document.documentElement.clientWidth,\n height: document.documentElement.clientHeight,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n var viewportWidth = void 0;\n var viewportHeight = void 0;\n\n if (zoomOptions.container) {\n if (zoomOptions.container instanceof Object) {\n // The container is given as an object with properties like width, height, left, top\n container = _extends({}, container, zoomOptions.container);\n\n // We need to adjust custom options like container.right or container.bottom\n viewportWidth = container.width - container.left - container.right - zoomOptions.margin * 2;\n viewportHeight = container.height - container.top - container.bottom - zoomOptions.margin * 2;\n } else {\n // The container is given as an element\n var zoomContainer = isNode(zoomOptions.container) ? zoomOptions.container : document.querySelector(zoomOptions.container);\n\n var _zoomContainer$getBou = zoomContainer.getBoundingClientRect(),\n _width = _zoomContainer$getBou.width,\n _height = _zoomContainer$getBou.height,\n _left = _zoomContainer$getBou.left,\n _top = _zoomContainer$getBou.top;\n\n container = _extends({}, container, {\n width: _width,\n height: _height,\n left: _left,\n top: _top\n });\n }\n }\n\n viewportWidth = viewportWidth || container.width - zoomOptions.margin * 2;\n viewportHeight = viewportHeight || container.height - zoomOptions.margin * 2;\n\n var zoomTarget = active.zoomedHd || active.original;\n var naturalWidth = isSvg(zoomTarget) ? viewportWidth : zoomTarget.naturalWidth || viewportWidth;\n var naturalHeight = isSvg(zoomTarget) ? viewportHeight : zoomTarget.naturalHeight || viewportHeight;\n\n var _zoomTarget$getBoundi = zoomTarget.getBoundingClientRect(),\n top = _zoomTarget$getBoundi.top,\n left = _zoomTarget$getBoundi.left,\n width = _zoomTarget$getBoundi.width,\n height = _zoomTarget$getBoundi.height;\n\n var scaleX = Math.min(Math.max(width, naturalWidth), viewportWidth) / width;\n var scaleY = Math.min(Math.max(height, naturalHeight), viewportHeight) / height;\n var scale = Math.min(scaleX, scaleY);\n var translateX = (-left + (viewportWidth - width) / 2 + zoomOptions.margin + container.left) / scale;\n var translateY = (-top + (viewportHeight - height) / 2 + zoomOptions.margin + container.top) / scale;\n var transform = 'scale(' + scale + ') translate3d(' + translateX + 'px, ' + translateY + 'px, 0)';\n\n active.zoomed.style.transform = transform;\n\n if (active.zoomedHd) {\n active.zoomedHd.style.transform = transform;\n }\n };\n\n return new Promise(function (resolve) {\n if (target && images.indexOf(target) === -1) {\n resolve(zoom);\n return;\n }\n\n var _handleOpenEnd = function _handleOpenEnd() {\n isAnimating = false;\n active.zoomed.removeEventListener('transitionend', _handleOpenEnd);\n active.original.dispatchEvent(createCustomEvent('medium-zoom:opened', {\n detail: { zoom: zoom }\n }));\n\n resolve(zoom);\n };\n\n if (active.zoomed) {\n resolve(zoom);\n return;\n }\n\n if (target) {\n // The zoom was triggered manually via a click\n active.original = target;\n } else if (images.length > 0) {\nvar _images = images;\n active.original = _images[0];\n } else {\n resolve(zoom);\n return;\n }\n\n active.original.dispatchEvent(createCustomEvent('medium-zoom:open', {\n detail: { zoom: zoom }\n }));\n\n scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n isAnimating = true;\n active.zoomed = cloneTarget(active.original);\n\n document.body.appendChild(overlay);\n\n if (zoomOptions.template) {\n var template = isNode(zoomOptions.template) ? zoomOptions.template : document.querySelector(zoomOptions.template);\n active.template = document.createElement('div');\n active.template.appendChild(template.content.cloneNode(true));\n\n document.body.appendChild(active.template);\n }\n\n // If the selected tag is inside a tag, set the\n // currently-applied source as the cloned `src=` attribute.\n // (as these might differ, or src= might be unset in some cases)\n if (active.original.parentElement && active.original.parentElement.tagName === 'PICTURE' && active.original.currentSrc) {\n active.zoomed.src = active.original.currentSrc;\n }\n\n document.body.appendChild(active.zoomed);\n\n window.requestAnimationFrame(function () {\n document.body.classList.add('medium-zoom--opened');\n });\n\n active.original.classList.add('medium-zoom-image--hidden');\n active.zoomed.classList.add('medium-zoom-image--opened');\n\n active.zoomed.addEventListener('click', close);\n active.zoomed.addEventListener('transitionend', _handleOpenEnd);\n\n if (active.original.getAttribute('data-zoom-src')) {\n active.zoomedHd = active.zoomed.cloneNode();\n\n // Reset the `scrset` property or the HD image won't load.\n active.zoomedHd.removeAttribute('srcset');\n active.zoomedHd.removeAttribute('sizes');\n // Remove loading attribute so the browser can load the image normally\n active.zoomedHd.removeAttribute('loading');\n\n active.zoomedHd.src = active.zoomed.getAttribute('data-zoom-src');\n\n active.zoomedHd.onerror = function () {\n clearInterval(getZoomTargetSize);\n console.warn('Unable to reach the zoom image target ' + active.zoomedHd.src);\n active.zoomedHd = null;\n _animate();\n };\n\n // We need to access the natural size of the full HD\n // target as fast as possible to compute the animation.\n var getZoomTargetSize = setInterval(function () {\n if ( active.zoomedHd.complete) {\n clearInterval(getZoomTargetSize);\n active.zoomedHd.classList.add('medium-zoom-image--opened');\n active.zoomedHd.addEventListener('click', close);\n document.body.appendChild(active.zoomedHd);\n _animate();\n }\n }, 10);\n } else if (active.original.hasAttribute('srcset')) {\n // If an image has a `srcset` attribuet, we don't know the dimensions of the\n // zoomed (HD) image (like when `data-zoom-src` is specified).\n // Therefore the approach is quite similar.\n active.zoomedHd = active.zoomed.cloneNode();\n\n // Resetting the sizes attribute tells the browser to load the\n // image best fitting the current viewport size, respecting the `srcset`.\n active.zoomedHd.removeAttribute('sizes');\n\n // In Firefox, the `loading` attribute needs to be set to `eager` (default\n // value) for the load event to be fired.\n active.zoomedHd.removeAttribute('loading');\n\n // Wait for the load event of the hd image. This will fire if the image\n // is already cached.\n var loadEventListener = active.zoomedHd.addEventListener('load', function () {\n active.zoomedHd.removeEventListener('load', loadEventListener);\n active.zoomedHd.classList.add('medium-zoom-image--opened');\n active.zoomedHd.addEventListener('click', close);\n document.body.appendChild(active.zoomedHd);\n _animate();\n });\n } else {\n _animate();\n }\n });\n };\n\n var close = function close() {\n return new Promise(function (resolve) {\n if (isAnimating || !active.original) {\n resolve(zoom);\n return;\n }\n\n var _handleCloseEnd = function _handleCloseEnd() {\n active.original.classList.remove('medium-zoom-image--hidden');\n document.body.removeChild(active.zoomed);\n if (active.zoomedHd) {\n document.body.removeChild(active.zoomedHd);\n }\n document.body.removeChild(overlay);\n active.zoomed.classList.remove('medium-zoom-image--opened');\n if (active.template) {\n document.body.removeChild(active.template);\n }\n\n isAnimating = false;\n active.zoomed.removeEventListener('transitionend', _handleCloseEnd);\n\n active.original.dispatchEvent(createCustomEvent('medium-zoom:closed', {\n detail: { zoom: zoom }\n }));\n\n active.original = null;\n active.zoomed = null;\n active.zoomedHd = null;\n active.template = null;\n\n resolve(zoom);\n };\n\n isAnimating = true;\n document.body.classList.remove('medium-zoom--opened');\n active.zoomed.style.transform = '';\n\n if (active.zoomedHd) {\n active.zoomedHd.style.transform = '';\n }\n\n // Fade out the template so it's not too abrupt\n if (active.template) {\n active.template.style.transition = 'opacity 150ms';\n active.template.style.opacity = 0;\n }\n\n active.original.dispatchEvent(createCustomEvent('medium-zoom:close', {\n detail: { zoom: zoom }\n }));\n\n active.zoomed.addEventListener('transitionend', _handleCloseEnd);\n });\n };\n\n var toggle = function toggle() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n target = _ref3.target;\n\n if (active.original) {\n return close();\n }\n\n return open({ target: target });\n };\n\n var getOptions = function getOptions() {\n return zoomOptions;\n };\n\n var getImages = function getImages() {\n return images;\n };\n\n var getZoomedImage = function getZoomedImage() {\n return active.original;\n };\n\n var images = [];\n var eventListeners = [];\n var isAnimating = false;\n var scrollTop = 0;\n var zoomOptions = options;\n var active = {\n original: null,\n zoomed: null,\n zoomedHd: null,\n template: null\n\n // If the selector is omitted, it's replaced by the options\n };if (Object.prototype.toString.call(selector) === '[object Object]') {\n zoomOptions = selector;\n } else if (selector || typeof selector === 'string' // to process empty string as a selector\n ) {\n attach(selector);\n }\n\n // Apply the default option values\n zoomOptions = _extends({\n margin: 0,\n background: '#fff',\n scrollOffset: 40,\n container: null,\n template: null\n }, zoomOptions);\n\n var overlay = createOverlay(zoomOptions.background);\n\n document.addEventListener('click', _handleClick);\n document.addEventListener('keyup', _handleKeyUp);\n document.addEventListener('scroll', _handleScroll);\n window.addEventListener('resize', close);\n\n var zoom = {\n open: open,\n close: close,\n toggle: toggle,\n update: update,\n clone: clone,\n attach: attach,\n detach: detach,\n on: on,\n off: off,\n getOptions: getOptions,\n getImages: getImages,\n getZoomedImage: getZoomedImage\n };\n\n return zoom;\n};\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}\";\nstyleInject(css);\n\nexport default mediumZoom;\n","//-------------------------------------------\n// Make tables responsive\n//-------------------------------------------\nconst tables = document.querySelectorAll('.sm-post-content > table');\n\nexport default function generateResponsiveTables() {\n function tablePrepend(e) {\n const responsiveWrapper = document.createElement('div');\n responsiveWrapper.setAttribute(\n 'style',\n 'width: 100%; overflow-x: auto; margin: 2rem 0;',\n );\n responsiveWrapper.setAttribute('class', 'sm-table-wrapper');\n e.parentNode.insertBefore(responsiveWrapper, e);\n responsiveWrapper.appendChild(e);\n }\n\n tables.forEach((e) => tablePrepend(e));\n}\n","import mediumZoom from 'medium-zoom';\n\n// Medium Zoom\nexport default function initMediumZoom() {\n const directImages = document.querySelectorAll('.sm-post-content > img');\n const markdownImages = document.querySelectorAll(\n '.sm-post-content > p > img',\n );\n const kgImages = document.querySelectorAll('.kg-image-card > img');\n const galleryImages = document.querySelectorAll('.kg-gallery-image > img');\n\n const postImages = [\n ...directImages,\n ...markdownImages,\n ...kgImages,\n ...galleryImages,\n ];\n\n mediumZoom(postImages, {\n background: 'rgba(0,0,0,0.75)',\n });\n}\n","import initMediumZoom from './medium_zoom';\nimport responsiveTableInit from './responsiveTables';\nimport writeAuthorWebsite from './authorWebsite';\nimport toc from './toc';\n\ninitMediumZoom();\n// fluidvids.init();\nresponsiveTableInit();\nwriteAuthorWebsite();\ntoc();\n","export default function writeAuthorWebsite() {\n const authorWebsite = document.querySelector('.sm-author-website');\n\n if (!authorWebsite) return;\n\n authorWebsite.lastChild.textContent = new URL(\n authorWebsite.textContent,\n ).hostname;\n}\n","function getScrollProgress() {\n const scrollableHeight =\n document.documentElement.scrollHeight - window.innerHeight;\n return window.scrollY / scrollableHeight;\n}\n\nexport default function toc() {\n const postContainer = document.querySelector('.post');\n const tocContainer = document.querySelector('.sm-post-toc');\n const tocContentContainer = document.querySelector('.sm-post-toc-contents');\n\n if (!tocContainer || !postContainer) {\n return;\n }\n\n const headings = postContainer.querySelectorAll('h2, h3, h4, h5, h6');\n\n // If there are fewer than 3 headings, don't show the table of contents.\n if (headings.length < 3) {\n tocContainer.style.display = 'none';\n return;\n }\n\n tocContainer.classList.add('toc-enabled');\n\n const btn = document.querySelector('.sm-post-toc-btn');\n\n btn.addEventListener('click', () => {\n tocContentContainer.classList.toggle('toc-show');\n });\n\n function createLink(element) {\n const link = document.createElement('a');\n link.classList.add('sm-toc-link');\n link.setAttribute('href', `#${element.id}`);\n link.textContent = element.textContent;\n return link;\n }\n\n headings.forEach((heading) => {\n const link = createLink(heading);\n tocContentContainer.append(link);\n });\n\n const observerOptions = {\n root: null,\n rootMargin: '0px',\n threshold: 0.5,\n };\n\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n const id = entry.target.getAttribute('id');\n const activeLink = tocContainer.querySelector(`a[href=\"#${id}\"]`);\n if (entry.isIntersecting) {\n activeLink.classList.add('sm-toc-active');\n tocContainer.querySelectorAll('a').forEach((link) => {\n if (link !== activeLink) {\n link.classList.remove('sm-toc-active');\n }\n });\n }\n });\n }, observerOptions);\n\n headings.forEach((heading) => {\n observer.observe(heading);\n });\n\n document.addEventListener('scroll', () => {\n const scrollPos = getScrollProgress();\n\n btn.style.setProperty(\n '--conic-gradient',\n `var(--primary-light) 0deg 0%, var(--primary-light) 0deg ${\n scrollPos * 100\n }%, var(--surface-light) 0deg ${\n 1 - scrollPos * 100\n }%, var(--surface-light) 0deg 360deg`,\n );\n });\n}\n"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","isSupported","node","tagName","isNode","selector","nodeType","isSvg","image","currentSrc","src","substr","toLowerCase","getImagesFromSelector","Array","isArray","filter","NodeList","isPrototypeOf","isNodeList","slice","document","querySelectorAll","err","TypeError","createOverlay","background","overlay","createElement","classList","add","style","cloneTarget","template","_template$getBounding","getBoundingClientRect","top","left","width","height","clone","cloneNode","scrollTop","window","pageYOffset","documentElement","body","scrollLeft","pageXOffset","removeAttribute","position","transform","createCustomEvent","type","params","eventParams","bubbles","cancelable","detail","undefined","CustomEvent","customEvent","createEvent","initCustomEvent","css","ref","insertAt","head","getElementsByTagName","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","styleInject","mediumZoom$1","mediumZoom","options","Promise","fn","noop","_handleClick","event","images","indexOf","toggle","close","_handleScroll","isAnimating","active","original","currentScroll","Math","abs","zoomOptions","scrollOffset","setTimeout","_handleKeyUp","keyCode","update","newOptions","container","querySelector","forEach","dispatchEvent","zoom","attach","_len","selectors","_key","newImages","reduce","imagesAccumulator","currentSelector","concat","newImage","push","eventListeners","_ref","listener","addEventListener","detach","_len2","_key2","zoomed","imagesToDetach","remove","on","off","removeEventListener","eventListener","toString","open","_ref2","_animate","clientWidth","clientHeight","right","bottom","viewportWidth","viewportHeight","margin","_zoomContainer$getBou","_width","_height","_left","_top","zoomTarget","zoomedHd","naturalWidth","naturalHeight","_zoomTarget$getBoundi","scaleX","min","max","scaleY","scale","resolve","_images","content","parentElement","requestAnimationFrame","_handleOpenEnd","getAttribute","onerror","clearInterval","getZoomTargetSize","console","warn","setInterval","complete","hasAttribute","loadEventListener","transition","opacity","_handleCloseEnd","removeChild","_ref3","getOptions","getImages","getZoomedImage","tables","postImages","initMediumZoom","e","responsiveWrapper","setAttribute","parentNode","tablePrepend","authorWebsite","lastChild","textContent","URL","hostname","writeAuthorWebsite","postContainer","tocContainer","tocContentContainer","headings","display","btn","heading","link","element","id","createLink","append","observer","IntersectionObserver","entries","entry","activeLink","isIntersecting","root","rootMargin","threshold","observe","scrollPos","scrollableHeight","scrollHeight","innerHeight","scrollY","getScrollProgress","setProperty","toc"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"post.js","sources":["../../node_modules/medium-zoom/dist/medium-zoom.esm.js","../../src/js/post/medium_zoom.js","../../src/js/post/responsiveTables.js","../../src/js/post/authorWebsite.js","../../src/js/post/toc.js","../../src/js/post/index.js"],"sourcesContent":["/*! medium-zoom 1.0.8 | MIT License | https://github.com/francoischalifour/medium-zoom */\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar isSupported = function isSupported(node) {\n return node.tagName === 'IMG';\n};\n\n/* eslint-disable-next-line no-prototype-builtins */\nvar isNodeList = function isNodeList(selector) {\n return NodeList.prototype.isPrototypeOf(selector);\n};\n\nvar isNode = function isNode(selector) {\n return selector && selector.nodeType === 1;\n};\n\nvar isSvg = function isSvg(image) {\n var source = image.currentSrc || image.src;\n return source.substr(-4).toLowerCase() === '.svg';\n};\n\nvar getImagesFromSelector = function getImagesFromSelector(selector) {\n try {\n if (Array.isArray(selector)) {\n return selector.filter(isSupported);\n }\n\n if (isNodeList(selector)) {\n // Do not use spread operator or Array.from() for IE support\n return [].slice.call(selector).filter(isSupported);\n }\n\n if (isNode(selector)) {\n return [selector].filter(isSupported);\n }\n\n if (typeof selector === 'string') {\n // Do not use spread operator or Array.from() for IE support\n return [].slice.call(document.querySelectorAll(selector)).filter(isSupported);\n }\n\n return [];\n } catch (err) {\n throw new TypeError('The provided selector is invalid.\\n' + 'Expects a CSS selector, a Node element, a NodeList or an array.\\n' + 'See: https://github.com/francoischalifour/medium-zoom');\n }\n};\n\nvar createOverlay = function createOverlay(background) {\n var overlay = document.createElement('div');\n overlay.classList.add('medium-zoom-overlay');\n overlay.style.background = background;\n\n return overlay;\n};\n\nvar cloneTarget = function cloneTarget(template) {\n var _template$getBounding = template.getBoundingClientRect(),\n top = _template$getBounding.top,\n left = _template$getBounding.left,\n width = _template$getBounding.width,\n height = _template$getBounding.height;\n\n var clone = template.cloneNode();\n var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n\n clone.removeAttribute('id');\n clone.style.position = 'absolute';\n clone.style.top = top + scrollTop + 'px';\n clone.style.left = left + scrollLeft + 'px';\n clone.style.width = width + 'px';\n clone.style.height = height + 'px';\n clone.style.transform = '';\n\n return clone;\n};\n\nvar createCustomEvent = function createCustomEvent(type, params) {\n var eventParams = _extends({\n bubbles: false,\n cancelable: false,\n detail: undefined\n }, params);\n\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(type, eventParams);\n }\n\n var customEvent = document.createEvent('CustomEvent');\n customEvent.initCustomEvent(type, eventParams.bubbles, eventParams.cancelable, eventParams.detail);\n\n return customEvent;\n};\n\nvar mediumZoom = function mediumZoom(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n /**\n * Ensure the compatibility with IE11 if no Promise polyfill are used.\n */\n var Promise = window.Promise || function Promise(fn) {\n function noop() {}\n fn(noop, noop);\n };\n\n var _handleClick = function _handleClick(event) {\n var target = event.target;\n\n\n if (target === overlay) {\n close();\n return;\n }\n\n if (images.indexOf(target) === -1) {\n return;\n }\n\n toggle({ target: target });\n };\n\n var _handleScroll = function _handleScroll() {\n if (isAnimating || !active.original) {\n return;\n }\n\n var currentScroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n\n if (Math.abs(scrollTop - currentScroll) > zoomOptions.scrollOffset) {\n setTimeout(close, 150);\n }\n };\n\n var _handleKeyUp = function _handleKeyUp(event) {\n var key = event.key || event.keyCode;\n\n // Close if escape key is pressed\n if (key === 'Escape' || key === 'Esc' || key === 27) {\n close();\n }\n };\n\n var update = function update() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var newOptions = options;\n\n if (options.background) {\n overlay.style.background = options.background;\n }\n\n if (options.container && options.container instanceof Object) {\n newOptions.container = _extends({}, zoomOptions.container, options.container);\n }\n\n if (options.template) {\n var template = isNode(options.template) ? options.template : document.querySelector(options.template);\n\n newOptions.template = template;\n }\n\n zoomOptions = _extends({}, zoomOptions, newOptions);\n\n images.forEach(function (image) {\n image.dispatchEvent(createCustomEvent('medium-zoom:update', {\n detail: { zoom: zoom }\n }));\n });\n\n return zoom;\n };\n\n var clone = function clone() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return mediumZoom(_extends({}, zoomOptions, options));\n };\n\n var attach = function attach() {\n for (var _len = arguments.length, selectors = Array(_len), _key = 0; _key < _len; _key++) {\n selectors[_key] = arguments[_key];\n }\n\n var newImages = selectors.reduce(function (imagesAccumulator, currentSelector) {\n return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector));\n }, []);\n\n newImages.filter(function (newImage) {\n return images.indexOf(newImage) === -1;\n }).forEach(function (newImage) {\n images.push(newImage);\n newImage.classList.add('medium-zoom-image');\n });\n\n eventListeners.forEach(function (_ref) {\n var type = _ref.type,\n listener = _ref.listener,\n options = _ref.options;\n\n newImages.forEach(function (image) {\n image.addEventListener(type, listener, options);\n });\n });\n\n return zoom;\n };\n\n var detach = function detach() {\n for (var _len2 = arguments.length, selectors = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n selectors[_key2] = arguments[_key2];\n }\n\n if (active.zoomed) {\n close();\n }\n\n var imagesToDetach = selectors.length > 0 ? selectors.reduce(function (imagesAccumulator, currentSelector) {\n return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector));\n }, []) : images;\n\n imagesToDetach.forEach(function (image) {\n image.classList.remove('medium-zoom-image');\n image.dispatchEvent(createCustomEvent('medium-zoom:detach', {\n detail: { zoom: zoom }\n }));\n });\n\n images = images.filter(function (image) {\n return imagesToDetach.indexOf(image) === -1;\n });\n\n return zoom;\n };\n\n var on = function on(type, listener) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n images.forEach(function (image) {\n image.addEventListener('medium-zoom:' + type, listener, options);\n });\n\n eventListeners.push({ type: 'medium-zoom:' + type, listener: listener, options: options });\n\n return zoom;\n };\n\n var off = function off(type, listener) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n images.forEach(function (image) {\n image.removeEventListener('medium-zoom:' + type, listener, options);\n });\n\n eventListeners = eventListeners.filter(function (eventListener) {\n return !(eventListener.type === 'medium-zoom:' + type && eventListener.listener.toString() === listener.toString());\n });\n\n return zoom;\n };\n\n var open = function open() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n target = _ref2.target;\n\n var _animate = function _animate() {\n var container = {\n width: document.documentElement.clientWidth,\n height: document.documentElement.clientHeight,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n var viewportWidth = void 0;\n var viewportHeight = void 0;\n\n if (zoomOptions.container) {\n if (zoomOptions.container instanceof Object) {\n // The container is given as an object with properties like width, height, left, top\n container = _extends({}, container, zoomOptions.container);\n\n // We need to adjust custom options like container.right or container.bottom\n viewportWidth = container.width - container.left - container.right - zoomOptions.margin * 2;\n viewportHeight = container.height - container.top - container.bottom - zoomOptions.margin * 2;\n } else {\n // The container is given as an element\n var zoomContainer = isNode(zoomOptions.container) ? zoomOptions.container : document.querySelector(zoomOptions.container);\n\n var _zoomContainer$getBou = zoomContainer.getBoundingClientRect(),\n _width = _zoomContainer$getBou.width,\n _height = _zoomContainer$getBou.height,\n _left = _zoomContainer$getBou.left,\n _top = _zoomContainer$getBou.top;\n\n container = _extends({}, container, {\n width: _width,\n height: _height,\n left: _left,\n top: _top\n });\n }\n }\n\n viewportWidth = viewportWidth || container.width - zoomOptions.margin * 2;\n viewportHeight = viewportHeight || container.height - zoomOptions.margin * 2;\n\n var zoomTarget = active.zoomedHd || active.original;\n var naturalWidth = isSvg(zoomTarget) ? viewportWidth : zoomTarget.naturalWidth || viewportWidth;\n var naturalHeight = isSvg(zoomTarget) ? viewportHeight : zoomTarget.naturalHeight || viewportHeight;\n\n var _zoomTarget$getBoundi = zoomTarget.getBoundingClientRect(),\n top = _zoomTarget$getBoundi.top,\n left = _zoomTarget$getBoundi.left,\n width = _zoomTarget$getBoundi.width,\n height = _zoomTarget$getBoundi.height;\n\n var scaleX = Math.min(Math.max(width, naturalWidth), viewportWidth) / width;\n var scaleY = Math.min(Math.max(height, naturalHeight), viewportHeight) / height;\n var scale = Math.min(scaleX, scaleY);\n var translateX = (-left + (viewportWidth - width) / 2 + zoomOptions.margin + container.left) / scale;\n var translateY = (-top + (viewportHeight - height) / 2 + zoomOptions.margin + container.top) / scale;\n var transform = 'scale(' + scale + ') translate3d(' + translateX + 'px, ' + translateY + 'px, 0)';\n\n active.zoomed.style.transform = transform;\n\n if (active.zoomedHd) {\n active.zoomedHd.style.transform = transform;\n }\n };\n\n return new Promise(function (resolve) {\n if (target && images.indexOf(target) === -1) {\n resolve(zoom);\n return;\n }\n\n var _handleOpenEnd = function _handleOpenEnd() {\n isAnimating = false;\n active.zoomed.removeEventListener('transitionend', _handleOpenEnd);\n active.original.dispatchEvent(createCustomEvent('medium-zoom:opened', {\n detail: { zoom: zoom }\n }));\n\n resolve(zoom);\n };\n\n if (active.zoomed) {\n resolve(zoom);\n return;\n }\n\n if (target) {\n // The zoom was triggered manually via a click\n active.original = target;\n } else if (images.length > 0) {\nvar _images = images;\n active.original = _images[0];\n } else {\n resolve(zoom);\n return;\n }\n\n active.original.dispatchEvent(createCustomEvent('medium-zoom:open', {\n detail: { zoom: zoom }\n }));\n\n scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n isAnimating = true;\n active.zoomed = cloneTarget(active.original);\n\n document.body.appendChild(overlay);\n\n if (zoomOptions.template) {\n var template = isNode(zoomOptions.template) ? zoomOptions.template : document.querySelector(zoomOptions.template);\n active.template = document.createElement('div');\n active.template.appendChild(template.content.cloneNode(true));\n\n document.body.appendChild(active.template);\n }\n\n // If the selected tag is inside a tag, set the\n // currently-applied source as the cloned `src=` attribute.\n // (as these might differ, or src= might be unset in some cases)\n if (active.original.parentElement && active.original.parentElement.tagName === 'PICTURE' && active.original.currentSrc) {\n active.zoomed.src = active.original.currentSrc;\n }\n\n document.body.appendChild(active.zoomed);\n\n window.requestAnimationFrame(function () {\n document.body.classList.add('medium-zoom--opened');\n });\n\n active.original.classList.add('medium-zoom-image--hidden');\n active.zoomed.classList.add('medium-zoom-image--opened');\n\n active.zoomed.addEventListener('click', close);\n active.zoomed.addEventListener('transitionend', _handleOpenEnd);\n\n if (active.original.getAttribute('data-zoom-src')) {\n active.zoomedHd = active.zoomed.cloneNode();\n\n // Reset the `scrset` property or the HD image won't load.\n active.zoomedHd.removeAttribute('srcset');\n active.zoomedHd.removeAttribute('sizes');\n // Remove loading attribute so the browser can load the image normally\n active.zoomedHd.removeAttribute('loading');\n\n active.zoomedHd.src = active.zoomed.getAttribute('data-zoom-src');\n\n active.zoomedHd.onerror = function () {\n clearInterval(getZoomTargetSize);\n console.warn('Unable to reach the zoom image target ' + active.zoomedHd.src);\n active.zoomedHd = null;\n _animate();\n };\n\n // We need to access the natural size of the full HD\n // target as fast as possible to compute the animation.\n var getZoomTargetSize = setInterval(function () {\n if ( active.zoomedHd.complete) {\n clearInterval(getZoomTargetSize);\n active.zoomedHd.classList.add('medium-zoom-image--opened');\n active.zoomedHd.addEventListener('click', close);\n document.body.appendChild(active.zoomedHd);\n _animate();\n }\n }, 10);\n } else if (active.original.hasAttribute('srcset')) {\n // If an image has a `srcset` attribuet, we don't know the dimensions of the\n // zoomed (HD) image (like when `data-zoom-src` is specified).\n // Therefore the approach is quite similar.\n active.zoomedHd = active.zoomed.cloneNode();\n\n // Resetting the sizes attribute tells the browser to load the\n // image best fitting the current viewport size, respecting the `srcset`.\n active.zoomedHd.removeAttribute('sizes');\n\n // In Firefox, the `loading` attribute needs to be set to `eager` (default\n // value) for the load event to be fired.\n active.zoomedHd.removeAttribute('loading');\n\n // Wait for the load event of the hd image. This will fire if the image\n // is already cached.\n var loadEventListener = active.zoomedHd.addEventListener('load', function () {\n active.zoomedHd.removeEventListener('load', loadEventListener);\n active.zoomedHd.classList.add('medium-zoom-image--opened');\n active.zoomedHd.addEventListener('click', close);\n document.body.appendChild(active.zoomedHd);\n _animate();\n });\n } else {\n _animate();\n }\n });\n };\n\n var close = function close() {\n return new Promise(function (resolve) {\n if (isAnimating || !active.original) {\n resolve(zoom);\n return;\n }\n\n var _handleCloseEnd = function _handleCloseEnd() {\n active.original.classList.remove('medium-zoom-image--hidden');\n document.body.removeChild(active.zoomed);\n if (active.zoomedHd) {\n document.body.removeChild(active.zoomedHd);\n }\n document.body.removeChild(overlay);\n active.zoomed.classList.remove('medium-zoom-image--opened');\n if (active.template) {\n document.body.removeChild(active.template);\n }\n\n isAnimating = false;\n active.zoomed.removeEventListener('transitionend', _handleCloseEnd);\n\n active.original.dispatchEvent(createCustomEvent('medium-zoom:closed', {\n detail: { zoom: zoom }\n }));\n\n active.original = null;\n active.zoomed = null;\n active.zoomedHd = null;\n active.template = null;\n\n resolve(zoom);\n };\n\n isAnimating = true;\n document.body.classList.remove('medium-zoom--opened');\n active.zoomed.style.transform = '';\n\n if (active.zoomedHd) {\n active.zoomedHd.style.transform = '';\n }\n\n // Fade out the template so it's not too abrupt\n if (active.template) {\n active.template.style.transition = 'opacity 150ms';\n active.template.style.opacity = 0;\n }\n\n active.original.dispatchEvent(createCustomEvent('medium-zoom:close', {\n detail: { zoom: zoom }\n }));\n\n active.zoomed.addEventListener('transitionend', _handleCloseEnd);\n });\n };\n\n var toggle = function toggle() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n target = _ref3.target;\n\n if (active.original) {\n return close();\n }\n\n return open({ target: target });\n };\n\n var getOptions = function getOptions() {\n return zoomOptions;\n };\n\n var getImages = function getImages() {\n return images;\n };\n\n var getZoomedImage = function getZoomedImage() {\n return active.original;\n };\n\n var images = [];\n var eventListeners = [];\n var isAnimating = false;\n var scrollTop = 0;\n var zoomOptions = options;\n var active = {\n original: null,\n zoomed: null,\n zoomedHd: null,\n template: null\n\n // If the selector is omitted, it's replaced by the options\n };if (Object.prototype.toString.call(selector) === '[object Object]') {\n zoomOptions = selector;\n } else if (selector || typeof selector === 'string' // to process empty string as a selector\n ) {\n attach(selector);\n }\n\n // Apply the default option values\n zoomOptions = _extends({\n margin: 0,\n background: '#fff',\n scrollOffset: 40,\n container: null,\n template: null\n }, zoomOptions);\n\n var overlay = createOverlay(zoomOptions.background);\n\n document.addEventListener('click', _handleClick);\n document.addEventListener('keyup', _handleKeyUp);\n document.addEventListener('scroll', _handleScroll);\n window.addEventListener('resize', close);\n\n var zoom = {\n open: open,\n close: close,\n toggle: toggle,\n update: update,\n clone: clone,\n attach: attach,\n detach: detach,\n on: on,\n off: off,\n getOptions: getOptions,\n getImages: getImages,\n getZoomedImage: getZoomedImage\n };\n\n return zoom;\n};\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}\";\nstyleInject(css);\n\nexport default mediumZoom;\n","import mediumZoom from 'medium-zoom';\n\n// Medium Zoom\nexport default function initMediumZoom() {\n const directImages = document.querySelectorAll('.sm-post-content > img');\n const markdownImages = document.querySelectorAll(\n '.sm-post-content > p > img',\n );\n const kgImages = document.querySelectorAll('.kg-image-card > img');\n const galleryImages = document.querySelectorAll('.kg-gallery-image > img');\n\n const postImages = [\n ...directImages,\n ...markdownImages,\n ...kgImages,\n ...galleryImages,\n ];\n\n mediumZoom(postImages, {\n background: 'rgba(0,0,0,0.75)',\n });\n}\n","//-------------------------------------------\n// Make tables responsive\n//-------------------------------------------\nconst tables = document.querySelectorAll('.sm-post-content > table');\n\nexport default function generateResponsiveTables() {\n function tablePrepend(e) {\n const responsiveWrapper = document.createElement('div');\n responsiveWrapper.setAttribute(\n 'style',\n 'width: 100%; overflow-x: auto; margin: 2rem 0;',\n );\n responsiveWrapper.setAttribute('class', 'sm-table-wrapper');\n e.parentNode.insertBefore(responsiveWrapper, e);\n responsiveWrapper.appendChild(e);\n }\n\n tables.forEach((e) => tablePrepend(e));\n}\n","export default function writeAuthorWebsite() {\n const authorWebsite = document.querySelector('.sm-author-website');\n\n if (!authorWebsite) return;\n\n authorWebsite.lastChild.textContent = new URL(\n authorWebsite.textContent,\n ).hostname;\n}\n","function getScrollProgress() {\n const scrollableHeight =\n document.documentElement.scrollHeight - window.innerHeight;\n return window.scrollY / scrollableHeight;\n}\n\nexport default function toc() {\n const postContainer = document.querySelector('.post');\n const tocContainer = document.querySelector('.sm-post-toc');\n const tocContentContainer = document.querySelector('.sm-post-toc-contents');\n\n if (!tocContainer || !postContainer) {\n return;\n }\n\n const headings = postContainer.querySelectorAll('h2, h3, h4, h5, h6');\n\n // If there are fewer than 3 headings, don't show the table of contents.\n if (headings.length < 3) {\n tocContainer.style.display = 'none';\n return;\n }\n\n tocContainer.classList.add('toc-enabled');\n\n const btn = document.querySelector('.sm-post-toc-btn');\n\n btn.addEventListener('click', () => {\n tocContentContainer.classList.toggle('toc-show');\n });\n\n function createLink(element) {\n const link = document.createElement('a');\n link.classList.add('sm-toc-link');\n link.setAttribute('href', `#${element.id}`);\n link.textContent = element.textContent;\n return link;\n }\n\n headings.forEach((heading) => {\n const link = createLink(heading);\n tocContentContainer.append(link);\n });\n\n const observerOptions = {\n root: null,\n rootMargin: '0px',\n threshold: 0.5,\n };\n\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n const id = entry.target.getAttribute('id');\n const activeLink = tocContainer.querySelector(`a[href=\"#${id}\"]`);\n if (entry.isIntersecting) {\n activeLink.classList.add('sm-toc-active');\n tocContainer.querySelectorAll('a').forEach((link) => {\n if (link !== activeLink) {\n link.classList.remove('sm-toc-active');\n }\n });\n }\n });\n }, observerOptions);\n\n headings.forEach((heading) => {\n observer.observe(heading);\n });\n\n document.addEventListener('scroll', () => {\n const scrollPos = getScrollProgress();\n\n btn.style.setProperty(\n '--conic-gradient',\n `var(--primary-light) 0deg 0%, var(--primary-light) 0deg ${\n scrollPos * 100\n }%, var(--surface-light) 0deg ${\n 1 - scrollPos * 100\n }%, var(--surface-light) 0deg 360deg`,\n );\n });\n}\n","import initMediumZoom from './medium_zoom';\nimport responsiveTableInit from './responsiveTables';\nimport writeAuthorWebsite from './authorWebsite';\nimport toc from './toc';\n\ninitMediumZoom();\n// fluidvids.init();\nresponsiveTableInit();\nwriteAuthorWebsite();\ntoc();\n"],"names":["mediumZoom","responsiveTableInit"],"mappings":"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"} \ No newline at end of file diff --git a/assets/built/syntax-highlighting.css b/assets/built/syntax-highlighting.css index 608f498f..e008e14a 100644 --- a/assets/built/syntax-highlighting.css +++ b/assets/built/syntax-highlighting.css @@ -1,2 +1,207 @@ -code[class*=language-],pre[class*=language-]{word-wrap:normal;background:hsl(var(--primary-h) 10% 8%);border-radius:var(--radius);color:#eee;font-family:var(--mono-typeface);font-size:var(--small);-webkit-hyphens:none;hyphens:none;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;white-space:pre;word-break:normal;word-spacing:normal}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{background:#363636}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{background:#363636}:not(pre)>code[class*=language-]{border-radius:.2em;padding:.1em;white-space:normal}pre[class*=language-]{overflow:auto;padding:1.25rem 1rem;position:relative}.language-css>code,.language-sass>code,.language-scss>code{color:#fd9170}[class*=language-] .namespace{opacity:.7}.token.atrule{color:#c792ea}.token.attr-name{color:#ffcb6b}.token.attr-value,.token.attribute{color:#a5e844}.token.boolean{color:#c792ea}.token.builtin{color:#ffcb6b}.token.cdata,.token.char{color:#80cbc4}.token.class{color:#ffcb6b}.token.class-name{color:#f2ff00}.token.comment{color:#616161}.token.constant{color:#c792ea}.token.deleted{color:#f66}.token.doctype{color:#616161}.token.entity{color:#f66}.token.function{color:#c792ea}.token.hexcode{color:#f2ff00}.token.id,.token.important{color:#c792ea;font-weight:700}.token.inserted{color:#80cbc4}.token.keyword{color:#c792ea}.token.number{color:#fd9170}.token.operator{color:#89ddff}.token.prolog{color:#616161}.token.property{color:#80cbc4}.token.pseudo-class,.token.pseudo-element{color:#a5e844}.token.punctuation{color:#89ddff}.token.regex{color:#f2ff00}.token.selector{color:#f66}.token.string{color:#a5e844}.token.symbol{color:#c792ea}.token.tag{color:#f66}.token.unit{color:#fd9170}.token.url,.token.variable{color:#f66} +/* stylelint-disable selector-no-qualifying-type */ + +code[class*='language-'], +pre[class*='language-'] { + font-family: var(--mono-typeface); + font-size: var(--small); + -webkit-hyphens: none; + hyphens: none; + hyphens: none; + hyphens: none; + hyphens: none; + line-height: 1.5; + color: #eee; + text-align: left; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + tab-size: 4; + tab-size: 4; + white-space: pre; + background: hsl(var(--primary-h) 10% 8%); + border-radius: var(--radius); +} + +code[class*='language-']::-moz-selection, pre[class*='language-']::-moz-selection, code[class*='language-'] ::-moz-selection, pre[class*='language-'] ::-moz-selection { + background: #363636; +} + +code[class*='language-']::selection, +pre[class*='language-']::selection, +code[class*='language-'] ::selection, +pre[class*='language-'] ::selection { + background: #363636; +} + +:not(pre) > code[class*='language-'] { + padding: 0.1em; + white-space: normal; + border-radius: 0.2em; +} + +pre[class*='language-'] { + position: relative; + padding: 1.25rem 1rem; + overflow: auto; +} + +.language-css > code, +.language-sass > code, +.language-scss > code { + color: #fd9170; +} + +[class*='language-'] .namespace { + opacity: 0.7; +} + +.token.atrule { + color: #c792ea; +} + +.token.attr-name { + color: #ffcb6b; +} + +.token.attr-value { + color: #a5e844; +} + +.token.attribute { + color: #a5e844; +} + +.token.boolean { + color: #c792ea; +} + +.token.builtin { + color: #ffcb6b; +} + +.token.cdata { + color: #80cbc4; +} + +.token.char { + color: #80cbc4; +} + +.token.class { + color: #ffcb6b; +} + +.token.class-name { + color: #f2ff00; +} + +.token.comment { + color: #616161; +} + +.token.constant { + color: #c792ea; +} + +.token.deleted { + color: #ff6666; +} + +.token.doctype { + color: #616161; +} + +.token.entity { + color: #ff6666; +} + +.token.function { + color: #c792ea; +} + +.token.hexcode { + color: #f2ff00; +} + +.token.id { + font-weight: 700; + color: #c792ea; +} + +.token.important { + font-weight: 700; + color: #c792ea; +} + +.token.inserted { + color: #80cbc4; +} + +.token.keyword { + color: #c792ea; +} + +.token.number { + color: #fd9170; +} + +.token.operator { + color: #89ddff; +} + +.token.prolog { + color: #616161; +} + +.token.property { + color: #80cbc4; +} + +.token.pseudo-class { + color: #a5e844; +} + +.token.pseudo-element { + color: #a5e844; +} + +.token.punctuation { + color: #89ddff; +} + +.token.regex { + color: #f2ff00; +} + +.token.selector { + color: #ff6666; +} + +.token.string { + color: #a5e844; +} + +.token.symbol { + color: #c792ea; +} + +.token.tag { + color: #ff6666; +} + +.token.unit { + color: #fd9170; +} + +.token.url { + color: #ff6666; +} + +.token.variable { + color: #ff6666; +} + /*# sourceMappingURL=syntax-highlighting.css.map */ \ No newline at end of file diff --git a/assets/built/syntax-highlighting.css.map b/assets/built/syntax-highlighting.css.map index acfaa6bb..19cccc26 100644 --- a/assets/built/syntax-highlighting.css.map +++ b/assets/built/syntax-highlighting.css.map @@ -1 +1 @@ -{"version":3,"sources":["syntax-highlighting.css"],"names":[],"mappings":"AAEA,6CAaE,gBAAiB,CAKjB,uCAAwC,CACxC,2BAA4B,CAV5B,UAAW,CAPX,gCAAiC,CACjC,sBAAuB,CACvB,oBAAa,CAGb,YAAa,CACb,eAAgB,CAMhB,eAAW,CAAX,aAAW,CAEX,UAAW,CANX,eAAgB,CAOhB,eAAgB,CANhB,iBAAkB,CAClB,mBAQF,CAEA,4JAIE,kBACF,CALA,wIAIE,kBACF,CAEA,iCAGE,kBAAoB,CAFpB,YAAc,CACd,kBAEF,CAEA,sBAGE,aAAc,CADd,oBAAqB,CADrB,iBAGF,CAEA,2DAGE,aACF,CAEA,8BACE,UACF,CAEA,cACE,aACF,CAEA,iBACE,aACF,CAMA,mCACE,aACF,CAEA,eACE,aACF,CAEA,eACE,aACF,CAMA,yBACE,aACF,CAEA,aACE,aACF,CAEA,kBACE,aACF,CAEA,eACE,aACF,CAEA,gBACE,aACF,CAEA,eACE,UACF,CAEA,eACE,aACF,CAEA,cACE,UACF,CAEA,gBACE,aACF,CAEA,eACE,aACF,CAOA,2BAEE,aAAc,CADd,eAEF,CAEA,gBACE,aACF,CAEA,eACE,aACF,CAEA,cACE,aACF,CAEA,gBACE,aACF,CAEA,cACE,aACF,CAEA,gBACE,aACF,CAMA,0CACE,aACF,CAEA,mBACE,aACF,CAEA,aACE,aACF,CAEA,gBACE,UACF,CAEA,cACE,aACF,CAEA,cACE,aACF,CAEA,WACE,UACF,CAEA,YACE,aACF,CAMA,2BACE,UACF","file":"syntax-highlighting.css","sourcesContent":["/* stylelint-disable selector-no-qualifying-type */\n\ncode[class*='language-'],\npre[class*='language-'] {\n font-family: var(--mono-typeface);\n font-size: var(--small);\n hyphens: none;\n hyphens: none;\n hyphens: none;\n hyphens: none;\n line-height: 1.5;\n color: #eee;\n text-align: left;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n tab-size: 4;\n tab-size: 4;\n tab-size: 4;\n white-space: pre;\n background: hsl(var(--primary-h) 10% 8%);\n border-radius: var(--radius);\n}\n\ncode[class*='language-']::selection,\npre[class*='language-']::selection,\ncode[class*='language-'] ::selection,\npre[class*='language-'] ::selection {\n background: #363636;\n}\n\n:not(pre) > code[class*='language-'] {\n padding: 0.1em;\n white-space: normal;\n border-radius: 0.2em;\n}\n\npre[class*='language-'] {\n position: relative;\n padding: 1.25rem 1rem;\n overflow: auto;\n}\n\n.language-css > code,\n.language-sass > code,\n.language-scss > code {\n color: #fd9170;\n}\n\n[class*='language-'] .namespace {\n opacity: 0.7;\n}\n\n.token.atrule {\n color: #c792ea;\n}\n\n.token.attr-name {\n color: #ffcb6b;\n}\n\n.token.attr-value {\n color: #a5e844;\n}\n\n.token.attribute {\n color: #a5e844;\n}\n\n.token.boolean {\n color: #c792ea;\n}\n\n.token.builtin {\n color: #ffcb6b;\n}\n\n.token.cdata {\n color: #80cbc4;\n}\n\n.token.char {\n color: #80cbc4;\n}\n\n.token.class {\n color: #ffcb6b;\n}\n\n.token.class-name {\n color: #f2ff00;\n}\n\n.token.comment {\n color: #616161;\n}\n\n.token.constant {\n color: #c792ea;\n}\n\n.token.deleted {\n color: #ff6666;\n}\n\n.token.doctype {\n color: #616161;\n}\n\n.token.entity {\n color: #ff6666;\n}\n\n.token.function {\n color: #c792ea;\n}\n\n.token.hexcode {\n color: #f2ff00;\n}\n\n.token.id {\n font-weight: 700;\n color: #c792ea;\n}\n\n.token.important {\n font-weight: 700;\n color: #c792ea;\n}\n\n.token.inserted {\n color: #80cbc4;\n}\n\n.token.keyword {\n color: #c792ea;\n}\n\n.token.number {\n color: #fd9170;\n}\n\n.token.operator {\n color: #89ddff;\n}\n\n.token.prolog {\n color: #616161;\n}\n\n.token.property {\n color: #80cbc4;\n}\n\n.token.pseudo-class {\n color: #a5e844;\n}\n\n.token.pseudo-element {\n color: #a5e844;\n}\n\n.token.punctuation {\n color: #89ddff;\n}\n\n.token.regex {\n color: #f2ff00;\n}\n\n.token.selector {\n color: #ff6666;\n}\n\n.token.string {\n color: #a5e844;\n}\n\n.token.symbol {\n color: #c792ea;\n}\n\n.token.tag {\n color: #ff6666;\n}\n\n.token.unit {\n color: #fd9170;\n}\n\n.token.url {\n color: #ff6666;\n}\n\n.token.variable {\n color: #ff6666;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["syntax-highlighting.css"],"names":[],"mappings":"AAAA,kDAAkD;;AAElD;;EAEE,iCAAiC;EACjC,uBAAuB;EACvB,qBAAa;UAAb,aAAa;EACb,aAAa;EACb,aAAa;EACb,aAAa;EACb,gBAAgB;EAChB,WAAW;EACX,gBAAgB;EAChB,kBAAkB;EAClB,oBAAoB;EACpB,iBAAiB;EACjB,gBAAW;IAAX,cAAW;OAAX,WAAW;EACX,WAAW;EACX,WAAW;EACX,gBAAgB;EAChB,wCAAwC;EACxC,4BAA4B;AAC9B;;AAEA;EAIE,mBAAmB;AACrB;;AALA;;;;EAIE,mBAAmB;AACrB;;AAEA;EACE,cAAc;EACd,mBAAmB;EACnB,oBAAoB;AACtB;;AAEA;EACE,kBAAkB;EAClB,qBAAqB;EACrB,cAAc;AAChB;;AAEA;;;EAGE,cAAc;AAChB;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,gBAAgB;EAChB,cAAc;AAChB;;AAEA;EACE,gBAAgB;EAChB,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;AAChB","file":"syntax-highlighting.css","sourcesContent":["/* stylelint-disable selector-no-qualifying-type */\n\ncode[class*='language-'],\npre[class*='language-'] {\n font-family: var(--mono-typeface);\n font-size: var(--small);\n hyphens: none;\n hyphens: none;\n hyphens: none;\n hyphens: none;\n line-height: 1.5;\n color: #eee;\n text-align: left;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n tab-size: 4;\n tab-size: 4;\n tab-size: 4;\n white-space: pre;\n background: hsl(var(--primary-h) 10% 8%);\n border-radius: var(--radius);\n}\n\ncode[class*='language-']::selection,\npre[class*='language-']::selection,\ncode[class*='language-'] ::selection,\npre[class*='language-'] ::selection {\n background: #363636;\n}\n\n:not(pre) > code[class*='language-'] {\n padding: 0.1em;\n white-space: normal;\n border-radius: 0.2em;\n}\n\npre[class*='language-'] {\n position: relative;\n padding: 1.25rem 1rem;\n overflow: auto;\n}\n\n.language-css > code,\n.language-sass > code,\n.language-scss > code {\n color: #fd9170;\n}\n\n[class*='language-'] .namespace {\n opacity: 0.7;\n}\n\n.token.atrule {\n color: #c792ea;\n}\n\n.token.attr-name {\n color: #ffcb6b;\n}\n\n.token.attr-value {\n color: #a5e844;\n}\n\n.token.attribute {\n color: #a5e844;\n}\n\n.token.boolean {\n color: #c792ea;\n}\n\n.token.builtin {\n color: #ffcb6b;\n}\n\n.token.cdata {\n color: #80cbc4;\n}\n\n.token.char {\n color: #80cbc4;\n}\n\n.token.class {\n color: #ffcb6b;\n}\n\n.token.class-name {\n color: #f2ff00;\n}\n\n.token.comment {\n color: #616161;\n}\n\n.token.constant {\n color: #c792ea;\n}\n\n.token.deleted {\n color: #ff6666;\n}\n\n.token.doctype {\n color: #616161;\n}\n\n.token.entity {\n color: #ff6666;\n}\n\n.token.function {\n color: #c792ea;\n}\n\n.token.hexcode {\n color: #f2ff00;\n}\n\n.token.id {\n font-weight: 700;\n color: #c792ea;\n}\n\n.token.important {\n font-weight: 700;\n color: #c792ea;\n}\n\n.token.inserted {\n color: #80cbc4;\n}\n\n.token.keyword {\n color: #c792ea;\n}\n\n.token.number {\n color: #fd9170;\n}\n\n.token.operator {\n color: #89ddff;\n}\n\n.token.prolog {\n color: #616161;\n}\n\n.token.property {\n color: #80cbc4;\n}\n\n.token.pseudo-class {\n color: #a5e844;\n}\n\n.token.pseudo-element {\n color: #a5e844;\n}\n\n.token.punctuation {\n color: #89ddff;\n}\n\n.token.regex {\n color: #f2ff00;\n}\n\n.token.selector {\n color: #ff6666;\n}\n\n.token.string {\n color: #a5e844;\n}\n\n.token.symbol {\n color: #c792ea;\n}\n\n.token.tag {\n color: #ff6666;\n}\n\n.token.unit {\n color: #fd9170;\n}\n\n.token.url {\n color: #ff6666;\n}\n\n.token.variable {\n color: #ff6666;\n}\n"]} \ No newline at end of file diff --git a/assets/built/syntax-highlighting.js b/assets/built/syntax-highlighting.js index e238fe84..3974e8ec 100644 --- a/assets/built/syntax-highlighting.js +++ b/assets/built/syntax-highlighting.js @@ -1,10 +1,2493 @@ -!function(){"use strict";var e=function(e){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,a=0,n={},r={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof s?new s(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=p.reach);w+=F.value.length,F=F.next){var A=F.value;if(t.length>e.length)return;if(!(A instanceof s)){var j,$=1;if(v){if(!(j=i(x,w,e,k))||j.index>=e.length)break;var E=j.index,S=j.index+j[0].length,_=w;for(_+=F.value.length;E>=_;)_+=(F=F.next).value.length;if(w=_-=F.value.length,F.value instanceof s)continue;for(var q=F;q!==t.tail&&(_p.reach&&(p.reach=L);var O=F.prev;if(P&&(O=u(t,O,P),w+=P.length),c(t,O,$),F=u(t,O,new s(g,f?r.tokenize(C,f):C,b,C)),z&&u(t,F,z),$>1){var T={cause:g+","+m,reach:L};l(e,t,a,F.prev,w,T),p&&T.reach>p.reach&&(p.reach=T.reach)}}}}}}function o(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function u(e,t,a){var n=t.next,r={value:a,prev:t,next:n};return t.next=r,n.prev=r,e.length++,r}function c(e,t,a){for(var n=t.next,r=0;r"+s.content+""},!e.document)return e.addEventListener?(r.disableWorkerMessageHandler||e.addEventListener("message",(function(t){var a=JSON.parse(t.data),n=a.language,s=a.code,i=a.immediateClose;e.postMessage(r.highlight(s,r.languages[n],n)),i&&e.close()}),!1),r):r;var p=r.util.currentScript();function g(){r.manual||r.highlightAll()}if(p&&(r.filename=p.src,p.hasAttribute("data-manual")&&(r.manual=!0)),!r.manual){var d=document.readyState;"loading"===d||"interactive"===d&&p&&p.defer?document.addEventListener("DOMContentLoaded",g):window.requestAnimationFrame?window.requestAnimationFrame(g):window.setTimeout(g,16)}return r}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{}); -/** +(function () { + 'use strict'; + + /* ********************************************** + Begin prism-core.js + ********************************************** */ + + /// + + var _self = (typeof window !== 'undefined') + ? window // if in browser + : ( + (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) + ? self // if in worker + : {} // if in node js + ); + + /** * Prism: Lightweight, robust, elegant syntax highlighting * * @license MIT * @author Lea Verou * @namespace * @public - */"undefined"!=typeof module&&module.exports&&(module.exports=e),"undefined"!=typeof global&&(global.Prism=e),e.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},e.languages.markup.tag.inside["attr-value"].inside.entity=e.languages.markup.entity,e.languages.markup.doctype.inside["internal-subset"].inside=e.languages.markup,e.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(e.languages.markup.tag,"addInlined",{value:function(t,a){var n={};n["language-"+a]={pattern:/(^$)/i,lookbehind:!0,inside:e.languages[a]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+a]={pattern:/[\s\S]+/,inside:e.languages[a]};var s={};s[t]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return t})),"i"),lookbehind:!0,greedy:!0,inside:r},e.languages.insertBefore("markup","cdata",s)}}),Object.defineProperty(e.languages.markup.tag,"addAttribute",{value:function(t,a){e.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+t+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[a,"language-"+a],inside:e.languages[a]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),e.languages.html=e.languages.markup,e.languages.mathml=e.languages.markup,e.languages.svg=e.languages.markup,e.languages.xml=e.languages.extend("markup",{}),e.languages.ssml=e.languages.xml,e.languages.atom=e.languages.xml,e.languages.rss=e.languages.xml,function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var a=e.languages.markup;a&&(a.tag.addInlined("style","css"),a.tag.addAttribute("style","css"))}(e),e.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},e.languages.javascript=e.languages.extend("clike",{"class-name":[e.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),e.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,e.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:e.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:e.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:e.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:e.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:e.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),e.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:e.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),e.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),e.languages.markup&&(e.languages.markup.tag.addInlined("script","javascript"),e.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),e.languages.js=e.languages.javascript,function(){if(void 0!==e&&"undefined"!=typeof document){Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var t={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},a="data-src-status",n="loading",r="loaded",s="pre[data-src]:not(["+a+'="'+r+'"]):not(['+a+'="'+n+'"])';e.hooks.add("before-highlightall",(function(e){e.selector+=", "+s})),e.hooks.add("before-sanity-check",(function(i){var l=i.element;if(l.matches(s)){i.code="",l.setAttribute(a,n);var o=l.appendChild(document.createElement("CODE"));o.textContent="Loading…";var u=l.getAttribute("data-src"),c=i.language;if("none"===c){var p=(/\.(\w+)$/.exec(u)||[,"none"])[1];c=t[p]||p}e.util.setLanguage(o,c),e.util.setLanguage(l,c);var g=e.plugins.autoloader;g&&g.loadLanguages(c),function(e,t,a){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){4==n.readyState&&(n.status<400&&n.responseText?t(n.responseText):n.status>=400?a("✖ Error "+n.status+" while fetching file: "+n.statusText):a("✖ Error: File does not exist or is empty"))},n.send(null)}(u,(function(t){l.setAttribute(a,r);var n=function(e){var t=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(e||"");if(t){var a=Number(t[1]),n=t[2],r=t[3];return n?r?[a,Number(r)]:[a,void 0]:[a,a]}}(l.getAttribute("data-range"));if(n){var s=t.split(/\r\n?|\n/g),i=n[0],u=null==n[1]?s.length:n[1];i<0&&(i+=s.length),i=Math.max(0,Math.min(i-1,s.length)),u<0&&(u+=s.length),u=Math.max(0,Math.min(u,s.length)),t=s.slice(i,u).join("\n"),l.hasAttribute("data-start")||l.setAttribute("data-start",String(i+1))}o.textContent=t,e.highlightElement(o)}),(function(e){l.setAttribute(a,"failed"),o.textContent=e}))}})),e.plugins.fileHighlight={highlight:function(t){for(var a,n=(t||document).querySelectorAll(s),r=0;a=n[r++];)e.highlightElement(a)}};var i=!1;e.fileHighlight=function(){i||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),i=!0),e.plugins.fileHighlight.highlight.apply(this,arguments)}}}(),function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var e={javascript:"clike",actionscript:"javascript",apex:["clike","sql"],arduino:"cpp",aspnet:["markup","csharp"],birb:"clike",bison:"c",c:"clike",csharp:"clike",cpp:"c",cfscript:"clike",chaiscript:["clike","cpp"],cilkc:"c",cilkcpp:"cpp",coffeescript:"javascript",crystal:"ruby","css-extras":"css",d:"clike",dart:"clike",django:"markup-templating",ejs:["javascript","markup-templating"],etlua:["lua","markup-templating"],erb:["ruby","markup-templating"],fsharp:"clike","firestore-security-rules":"clike",flow:"javascript",ftl:"markup-templating",gml:"clike",glsl:"c",go:"clike",gradle:"clike",groovy:"clike",haml:"ruby",handlebars:"markup-templating",haxe:"clike",hlsl:"c",idris:"haskell",java:"clike",javadoc:["markup","java","javadoclike"],jolie:"clike",jsdoc:["javascript","javadoclike","typescript"],"js-extras":"javascript",json5:"json",jsonp:"json","js-templates":"javascript",kotlin:"clike",latte:["clike","markup-templating","php"],less:"css",lilypond:"scheme",liquid:"markup-templating",markdown:"markup","markup-templating":"markup",mongodb:"javascript",n4js:"javascript",objectivec:"c",opencl:"c",parser:"markup",php:"markup-templating",phpdoc:["php","javadoclike"],"php-extras":"php",plsql:"sql",processing:"clike",protobuf:"clike",pug:["markup","javascript"],purebasic:"clike",purescript:"haskell",qsharp:"clike",qml:"javascript",qore:"clike",racket:"scheme",cshtml:["markup","csharp"],jsx:["markup","javascript"],tsx:["jsx","typescript"],reason:"clike",ruby:"clike",sass:"css",scss:"css",scala:"java","shell-session":"bash",smarty:"markup-templating",solidity:"clike",soy:"markup-templating",sparql:"turtle",sqf:"clike",squirrel:"clike",stata:["mata","java","python"],"t4-cs":["t4-templating","csharp"],"t4-vb":["t4-templating","vbnet"],tap:"yaml",tt2:["clike","markup-templating"],textile:"markup",twig:"markup-templating",typescript:"javascript",v:"clike",vala:"clike",vbnet:"basic",velocity:"markup",wiki:"markup",xeora:"markup","xml-doc":"markup",xquery:"markup"},t={html:"markup",xml:"markup",svg:"markup",mathml:"markup",ssml:"markup",atom:"markup",rss:"markup",js:"javascript",g4:"antlr4",ino:"arduino","arm-asm":"armasm",art:"arturo",adoc:"asciidoc",avs:"avisynth",avdl:"avro-idl",gawk:"awk",sh:"bash",shell:"bash",shortcode:"bbcode",rbnf:"bnf",oscript:"bsl",cs:"csharp",dotnet:"csharp",cfc:"cfscript","cilk-c":"cilkc","cilk-cpp":"cilkcpp",cilk:"cilkcpp",coffee:"coffeescript",conc:"concurnas",jinja2:"django","dns-zone":"dns-zone-file",dockerfile:"docker",gv:"dot",eta:"ejs",xlsx:"excel-formula",xls:"excel-formula",gamemakerlanguage:"gml",po:"gettext",gni:"gn",ld:"linker-script","go-mod":"go-module",hbs:"handlebars",mustache:"handlebars",hs:"haskell",idr:"idris",gitignore:"ignore",hgignore:"ignore",npmignore:"ignore",webmanifest:"json",kt:"kotlin",kts:"kotlin",kum:"kumir",tex:"latex",context:"latex",ly:"lilypond",emacs:"lisp",elisp:"lisp","emacs-lisp":"lisp",md:"markdown",moon:"moonscript",n4jsd:"n4js",nani:"naniscript",objc:"objectivec",qasm:"openqasm",objectpascal:"pascal",px:"pcaxis",pcode:"peoplecode",plantuml:"plant-uml",pq:"powerquery",mscript:"powerquery",pbfasm:"purebasic",purs:"purescript",py:"python",qs:"qsharp",rkt:"racket",razor:"cshtml",rpy:"renpy",res:"rescript",robot:"robotframework",rb:"ruby","sh-session":"shell-session",shellsession:"shell-session",smlnj:"sml",sol:"solidity",sln:"solution-file",rq:"sparql",sclang:"supercollider",t4:"t4-cs",trickle:"tremor",troy:"tremor",trig:"turtle",ts:"typescript",tsconfig:"typoscript",uscript:"unrealscript",uc:"unrealscript",url:"uri",vb:"visual-basic",vba:"visual-basic",webidl:"web-idl",mathematica:"wolfram",nb:"wolfram",wl:"wolfram",xeoracube:"xeora",yml:"yaml"},a={},n="components/",r=Prism.util.currentScript();if(r){var s=/\bplugins\/autoloader\/prism-autoloader\.(?:min\.)?js(?:\?[^\r\n/]*)?$/i,i=/(^|\/)[\w-]+\.(?:min\.)?js(?:\?[^\r\n/]*)?$/i,l=r.getAttribute("data-autoloader-path");if(null!=l)n=l.trim().replace(/\/?$/,"/");else{var o=r.src;s.test(o)?n=o.replace(s,"components/"):i.test(o)&&(n=o.replace(i,"$1components/"))}}var u=Prism.plugins.autoloader={languages_path:n,use_minified:!0,loadLanguages:p};Prism.hooks.add("complete",(function(e){var t=e.element,a=e.language;if(t&&a&&"none"!==a){var n=function(e){var t=(e.getAttribute("data-dependencies")||"").trim();if(!t){var a=e.parentElement;a&&"pre"===a.tagName.toLowerCase()&&(t=(a.getAttribute("data-dependencies")||"").trim())}return t?t.split(/\s*,\s*/g):[]}(t);/^diff-./i.test(a)?(n.push("diff"),n.push(a.substr("diff-".length))):n.push(a),n.every(c)||p(n,(function(){Prism.highlightElement(t)}))}}))}function c(e){if(e.indexOf("!")>=0)return!1;if((e=t[e]||e)in Prism.languages)return!0;var n=a[e];return n&&!n.error&&!1===n.loading}function p(n,r,s){"string"==typeof n&&(n=[n]);var i=n.length,l=0,o=!1;function d(){o||++l===i&&r&&r(n)}0!==i?n.forEach((function(n){!function(n,r,s){var i=n.indexOf("!")>=0;function l(){var e=a[n];e||(e=a[n]={callbacks:[]}),e.callbacks.push({success:r,error:s}),!i&&c(n)?g(n,"success"):!i&&e.error?g(n,"error"):!i&&e.loading||(e.loading=!0,e.error=!1,function(e,t,a){var n=document.createElement("script");n.src=e,n.async=!0,n.onload=function(){document.body.removeChild(n),t&&t()},n.onerror=function(){document.body.removeChild(n),a&&a()},document.body.appendChild(n)}(function(e){return u.languages_path+"prism-"+e+(u.use_minified?".min":"")+".js"}(n),(function(){e.loading=!1,g(n,"success")}),(function(){e.loading=!1,e.error=!0,g(n,"error")})))}n=n.replace("!",""),n=t[n]||n;var o=e[n];o&&o.length?p(o,l,s):l()}(n,d,(function(){o||(o=!0,s&&s(n))}))})):r&&setTimeout(r,0)}function g(e,t){if(a[e]){for(var n=a[e].callbacks,r=0,s=n.length;r to load Prism's script + * ``` + * + * @default false + * @type {boolean} + * @memberof Prism + * @public + */ + manual: _self.Prism && _self.Prism.manual, + /** + * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses + * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your + * own worker, you don't want it to do this. + * + * By setting this value to `true`, Prism will not add its own listeners to the worker. + * + * You obviously have to change this value before Prism executes. To do this, you can add an + * empty Prism object into the global scope before loading the Prism script like this: + * + * ```js + * window.Prism = window.Prism || {}; + * Prism.disableWorkerMessageHandler = true; + * // Load Prism's script + * ``` + * + * @default false + * @type {boolean} + * @memberof Prism + * @public + */ + disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler, + + /** + * A namespace for utility methods. + * + * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may + * change or disappear at any time. + * + * @namespace + * @memberof Prism + */ + util: { + encode: function encode(tokens) { + if (tokens instanceof Token) { + return new Token(tokens.type, encode(tokens.content), tokens.alias); + } else if (Array.isArray(tokens)) { + return tokens.map(encode); + } else { + return tokens.replace(/&/g, '&').replace(/} [visited] + * @returns {T} + * @template T + */ + clone: function deepClone(o, visited) { + visited = visited || {}; + + var clone; var id; + switch (_.util.type(o)) { + case 'Object': + id = _.util.objId(o); + if (visited[id]) { + return visited[id]; + } + clone = /** @type {Record} */ ({}); + visited[id] = clone; + + for (var key in o) { + if (o.hasOwnProperty(key)) { + clone[key] = deepClone(o[key], visited); + } + } + + return /** @type {any} */ (clone); + + case 'Array': + id = _.util.objId(o); + if (visited[id]) { + return visited[id]; + } + clone = []; + visited[id] = clone; + + (/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) { + clone[i] = deepClone(v, visited); + }); + + return /** @type {any} */ (clone); + + default: + return o; + } + }, + + /** + * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class. + * + * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned. + * + * @param {Element} element + * @returns {string} + */ + getLanguage: function (element) { + while (element) { + var m = lang.exec(element.className); + if (m) { + return m[1].toLowerCase(); + } + element = element.parentElement; + } + return 'none'; + }, + + /** + * Sets the Prism `language-xxxx` class of the given element. + * + * @param {Element} element + * @param {string} language + * @returns {void} + */ + setLanguage: function (element, language) { + // remove all `language-xxxx` classes + // (this might leave behind a leading space) + element.className = element.className.replace(RegExp(lang, 'gi'), ''); + + // add the new `language-xxxx` class + // (using `classList` will automatically clean up spaces for us) + element.classList.add('language-' + language); + }, + + /** + * Returns the script element that is currently executing. + * + * This does __not__ work for line script element. + * + * @returns {HTMLScriptElement | null} + */ + currentScript: function () { + if (typeof document === 'undefined') { + return null; + } + if ('currentScript' in document && 1 < 2 /* hack to trip TS' flow analysis */) { + return /** @type {any} */ (document.currentScript); + } + + // IE11 workaround + // we'll get the src of the current script by parsing IE11's error stack trace + // this will not work for inline scripts + + try { + throw new Error(); + } catch (err) { + // Get file src url from stack. Specifically works with the format of stack traces in IE. + // A stack will look like this: + // + // Error + // at _.util.currentScript (http://localhost/components/prism-core.js:119:5) + // at Global code (http://localhost/components/prism-core.js:606:1) + + var src = (/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(err.stack) || [])[1]; + if (src) { + var scripts = document.getElementsByTagName('script'); + for (var i in scripts) { + if (scripts[i].src == src) { + return scripts[i]; + } + } + } + return null; + } + }, + + /** + * Returns whether a given class is active for `element`. + * + * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated + * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the + * given class is just the given class with a `no-` prefix. + * + * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is + * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its + * ancestors have the given class or the negated version of it, then the default activation will be returned. + * + * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated + * version of it, the class is considered active. + * + * @param {Element} element + * @param {string} className + * @param {boolean} [defaultActivation=false] + * @returns {boolean} + */ + isActive: function (element, className, defaultActivation) { + var no = 'no-' + className; + + while (element) { + var classList = element.classList; + if (classList.contains(className)) { + return true; + } + if (classList.contains(no)) { + return false; + } + element = element.parentElement; + } + return !!defaultActivation; + } + }, + + /** + * This namespace contains all currently loaded languages and the some helper functions to create and modify languages. + * + * @namespace + * @memberof Prism + * @public + */ + languages: { + /** + * The grammar for plain, unformatted text. + */ + plain: plainTextGrammar, + plaintext: plainTextGrammar, + text: plainTextGrammar, + txt: plainTextGrammar, + + /** + * Creates a deep copy of the language with the given id and appends the given tokens. + * + * If a token in `redef` also appears in the copied language, then the existing token in the copied language + * will be overwritten at its original position. + * + * ## Best practices + * + * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language) + * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to + * understand the language definition because, normally, the order of tokens matters in Prism grammars. + * + * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens. + * Furthermore, all non-overwriting tokens should be placed after the overwriting ones. + * + * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`. + * @param {Grammar} redef The new tokens to append. + * @returns {Grammar} The new language created. + * @public + * @example + * Prism.languages['css-with-colors'] = Prism.languages.extend('css', { + * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token + * // at its original position + * 'comment': { ... }, + * // CSS doesn't have a 'color' token, so this token will be appended + * 'color': /\b(?:red|green|blue)\b/ + * }); + */ + extend: function (id, redef) { + var lang = _.util.clone(_.languages[id]); + + for (var key in redef) { + lang[key] = redef[key]; + } + + return lang; + }, + + /** + * Inserts tokens _before_ another token in a language definition or any other grammar. + * + * ## Usage + * + * This helper method makes it easy to modify existing languages. For example, the CSS language definition + * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded + * in HTML through `