:root{--font-family-heading:{{ .Site.Params.fontFamilyHeading | default "'Poppins', sans-serif" }};--font-family-paragraph:{{ .Site.Params.fontFamilyParagraph | default "'Helvetica', sans-serif" }};--font-family-monospace:{{ .Site.Params.fontFamilyMonospace | default "monospace" }};--base-color:{{ .Site.Params.baseColor | default "#ffffff" }};--base-offset-color:{{ .Site.Params.baseOffsetColor | default "#eaeaea" }};--highlight-color:{{ .Site.Params.highlightColor | default "#7b16ff" }};--heading-color:{{ .Site.Params.headingColor | default "#1c1b1d" }};--text-color:{{ .Site.Params.textColor | default "#4e5157" }};--dot-color:{{ .Site.Params.dotColor | default "#7b16ff" }}}body,html{margin:0;padding:0}ol,ul{margin:0;padding:0;list-style:none}ol li,ul li{list-style:none}h1,h2,h3{margin-top:20px;margin-bottom:20px}.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;font-size:16px}@media(min-width:767px){.header{padding-bottom:5px;margin-bottom:40px}}.header a.header-logo{font-weight:700;text-transform:uppercase;margin-right:30px}.hamburger-trigger{height:30px;display:flex;align-items:center}@media(min-width:992px){.hamburger-trigger{display:none}}.hamburger{border:none;cursor:pointer;outline:none;position:relative;display:block;width:30px;height:20px;background:0 0;border-top:2px solid;border-bottom:2px solid;font-size:0;transition:all .25s ease-in-out;color:var(--highlight-color)}.hamburger:before,.hamburger:after{content:'';display:block;width:100%;height:2px;position:absolute;top:50%;left:50%;background:currentColor;transform:translate(-50%,-50%);transition:transform .25s ease-in-out}.hamburger:hover{opacity:.7}.hamburger.is-active{border-color:transparent;z-index:100;color:var(--base-color)}.hamburger.is-active:hover{opacity:1}.hamburger.is-active:before{transform:translate(-50%,-50%)rotate(45deg)}.hamburger.is-active:after{transform:translate(-50%,-50%)rotate(-45deg)}.footer{margin-top:30px}@media(min-width:767px){.footer{padding-top:40px}}.social-icon{margin-right:10px}.social-icon a{text-decoration:none}.social-icon a:hover{text-decoration:none}.social-icon a:hover img{opacity:.7}a{color:var(--highlight-color);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{margin-top:20px;margin-bottom:20px;color:var(--heading-color);font-family:var(--font-family-heading)}p{color:var(--text-color);font-family:var(--font-family-paragraph);font-size:18px;line-height:24px}ol,ul{margin:0;padding:0;list-style:none}ol li,ul li{list-style:none}.content{font-size:18px}.content p{font-size:18px;line-height:1.6;margin:0;padding:0;margin-bottom:20px}.content h1{font-size:40px;line-height:1.6;font-weight:700;margin-top:30px;margin-bottom:20px}.content h1:first-of-type{margin-top:0}.content h2{font-size:28px;line-height:1.4;font-weight:700;margin-top:30px;margin-bottom:20px}.content h2:first-of-type{margin-top:0}@media(min-width:767px){.content h2{font-size:30px;line-height:1.4}}.content h3{font-size:22px;line-height:1.4;font-weight:700;margin-top:30px;margin-bottom:20px}.content ul{list-style:disc}.content ul li{list-style:disc}.content ol{list-style:decimal}.content ol li{list-style:decimal}.content ul,.content ol{margin-left:0;margin-top:10px;margin-bottom:20px}.content ul li,.content ol li{font-size:18px;line-height:20px;margin-bottom:10px;margin-left:0}@media(min-width:767px){.content ul li,.content ol li{margin-left:20px}}@media(min-width:767px){.content ul,.content ol{margin-left:20px}}.content a{text-decoration:underline}.content blockquote{border-left:5px solid var(--highlight-color);margin:30px 0;padding:20px}.content blockquote p{font-size:20px;display:inline;color:var(--color-base-text)}.content img{margin:40px 0;max-width:100%;height:auto}.content figure{margin:2.6rem 0 1.18rem}.content figure img{margin:0}.content figure figcaption{margin-top:10px}.content figure figcaption h4{margin:0;font-size:1rem;font-weight:700}.content figure figcaption p{margin:0}.content code,.content pre{font-family:var(--font-family-monospace)}.content .highlight pre{border-radius:3px;font-size:14px;line-height:18px;padding:30px;overflow:auto;font-family:var(--font-family-monospace)}.dot{color:var(--dot-color)}.footnotes ol{list-style:decimal}.footnotes ol li{list-style:decimal}.intro{margin-bottom:60px}.intro h1{font-size:48px;line-height:56px;margin-top:0;margin-bottom:30px}@media(min-width:767px){.intro h1{width:80%;font-size:88px;line-height:94px;margin-bottom:50px}}.intro h1 strong{color:var(--highlight-color)}.intro h2{font-size:50px;line-height:56px}@media(min-width:767px){.intro h2{width:80%}}.intro p{font-size:20px;line-height:26px}@media(min-width:767px){.intro p{width:80%;font-size:22px;line-height:32px}}.intro .read-more{font-size:20px;line-height:26px;font-weight:700}@media(min-width:767px){.intro .read-more{font-size:22px;line-height:32px}}.intro img{max-width:100%}.summary{margin-bottom:50px;font-size:18px;line-height:24px}@media(min-width:767px){.summary{margin-bottom:80px;font-size:18px;line-height:26px}}.summary .summary-date{font-weight:700;color:var(--heading-color)}.summary .summary-title{margin:16px 0;width:80%;font-size:34px;line-height:38px}@media(min-width:767px){.summary .summary-title{width:80%;font-size:52px;line-height:58px}}.summary .summary-description{width:80%;line-height:1.5}.author{margin-top:30px;margin-bottom:30px;color:var(--heading-color)}.author img{width:30px;height:30px;border-radius:50%;display:inline-block;vertical-align:middle;border:2px solid var(--heading-color)}.author .author-name{display:inline-block;vertical-align:middle;font-weight:700;margin-left:5px}.author .author-date{display:inline-block;vertical-align:middle}.author-large{font-size:20px}.author-large img{width:50px;height:50px}.author-large .author-name{display:inline-block;vertical-align:middle;font-weight:700;margin-left:5px}.author-large .author-title{display:inline-block;vertical-align:middle}ul.pagination{display:flex;justify-content:center;list-style:none;margin:20px 0;padding:0}ul.pagination li{list-style:none;text-decoration:none;border:2px solid var(--highlight-color);border-right:none;text-align:center;vertical-align:middle}ul.pagination li:hover{border-color:var(--highlight-color);background-color:var(--highlight-color);color:#fff}ul.pagination li:hover a{color:#fff}ul.pagination li.pagination-item-current{border-color:var(--highlight-color);background-color:var(--highlight-color);color:#fff}ul.pagination li.pagination-item-current a{color:#fff}ul.pagination li a{padding:9px 13px;display:block;color:var(--highlight-color);text-decoration:none}ul.pagination li:last-of-type{border-right:2px solid var(--highlight-color);border-top-right-radius:3px;border-bottom-right-radius:3px}ul.pagination li:last-of-type:hover{border-color:var(--highlight-color)}ul.pagination li:last-of-type.active{border-color:var(--highlight-color)}ul.pagination li:first-of-type{border-top-left-radius:3px;border-bottom-left-radius:3px}ul.pagination li svg{width:8px;line-height:10px;margin-bottom:2px;vertical-align:middle}.view-more{font-size:18px;font-weight:700}.menu-main{display:none;flex:0}@media(min-width:992px){.menu-main{display:block}}.menu-main>ul{display:flex;align-items:center;justify-content:flex-start}.menu-main>ul>li{margin-right:10px}.menu-main>ul>li>a{display:inline-block;text-decoration:none}.menu-main>ul>li>a:hover{text-decoration:underline}.menu-main>ul>li.active>a{display:inline-block;font-weight:700}.menu-main>ul>li:last-of-type{margin-right:0}.menu-main-mobile{position:fixed;background:var(--highlight-color);top:0;left:0;width:100%;height:100vh;opacity:0;visibility:hidden;transition:opacity .35s,visibility .35s,height .35s;overflow:hidden;display:none;justify-content:center;flex-direction:column}.menu-main-mobile.open{opacity:1;visibility:visible;height:100%;z-index:10;display:flex}.menu-main-mobile.open li{animation:fadeInTop .5s ease forwards;animation-delay:.1s}.menu-main-mobile.open li:nth-of-type(2){animation-delay:.15s}.menu-main-mobile.open li:nth-of-type(3){animation-delay:.2s}.menu-main-mobile.open li:nth-of-type(4){animation-delay:.25s}.menu-main-mobile.open li:nth-of-type(5){animation-delay:.3s}.menu-main-mobile.open li:nth-of-type(6){animation-delay:.35s}.menu-main-mobile ul{font-size:2rem;font-family:var(--font-family-heading);text-align:center;list-style:none;margin:0;flex:0}.menu-main-mobile ul li{display:block;position:relative;opacity:0}.menu-main-mobile ul li a{display:block;position:relative;color:var(--base-color);text-decoration:none}.menu-main-mobile ul li a:hover{opacity:.7}.menu-main-mobile ul li ul.sub-menu{font-size:1.2rem}.hamburger-trigger{height:30px;display:flex;align-items:center}@media(min-width:992px){.hamburger-trigger{display:none}}.hamburger{border:none;cursor:pointer;outline:none;position:relative;display:block;width:30px;height:20px;background:0 0;border-top:2px solid;border-bottom:2px solid;font-size:0;transition:all .25s ease-in-out;color:var(--highlight-color)}.hamburger:before,.hamburger:after{content:'';display:block;width:100%;height:2px;position:absolute;top:50%;left:50%;background:currentColor;transform:translate(-50%,-50%);transition:transform .25s ease-in-out}.hamburger:hover{opacity:.7}.hamburger.is-active{border-color:transparent;z-index:100;color:var(--base-color)}.hamburger.is-active:hover{opacity:1}.hamburger.is-active:before{transform:translate(-50%,-50%)rotate(45deg)}.hamburger.is-active:after{transform:translate(-50%,-50%)rotate(-45deg)}@keyframes fadeInTop{0%{opacity:0;top:20%}100%{opacity:1;top:0}}.highlight{background:#f5f5f5}.highlight .hll{background-color:#ffc}.highlight .c{color:#998;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{color:#000;font-weight:700}.highlight .o{color:#000;font-weight:700}.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:700;font-style:italic}.highlight .c1{color:#998;font-style:italic}.highlight .cs{color:#999;font-weight:700;font-style:italic}.highlight .gd{color:#000;background-color:#fdd}.highlight .ge{color:#000;font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:700}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc{color:#000;font-weight:700}.highlight .kd{color:#000;font-weight:700}.highlight .kn{color:#000;font-weight:700}.highlight .kp{color:#000;font-weight:700}.highlight .kr{color:#000;font-weight:700}.highlight .kt{color:#458;font-weight:700}.highlight .m{color:#099}.highlight .s{color:#d01040}.highlight .na{color:teal}.highlight .nb{color:#0086b3}.highlight .nc{color:#458;font-weight:700}.highlight .no{color:teal}.highlight .nd{color:#3c5d5d;font-weight:700}.highlight .ni{color:purple}.highlight .ne{color:#900;font-weight:700}.highlight .nf{color:#900;font-weight:700}.highlight .nl{color:#900;font-weight:700}.highlight .nn{color:#555}.highlight .nt{color:navy}.highlight .nv{color:teal}.highlight .ow{color:#000;font-weight:700}.highlight .w{color:#bbb}.highlight .mf{color:#099}.highlight .mh{color:#099}.highlight .mi{color:#099}.highlight .mo{color:#099}.highlight .sb{color:#d01040}.highlight .sc{color:#d01040}.highlight .sd{color:#d01040}.highlight .s2{color:#d01040}.highlight .se{color:#d01040}.highlight .sh{color:#d01040}.highlight .si{color:#d01040}.highlight .sx{color:#d01040}.highlight .sr{color:#009926}.highlight .s1{color:#d01040}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc{color:teal}.highlight .vg{color:teal}.highlight .vi{color:teal}.highlight .il{color:#099}html,body{box-sizing:border-box}body{background:var(--base-color);font-family:var(--font-family-paragraph);color:var(--text-color);margin:0;padding:20px;overflow-x:hidden}@media(min-width:767px){body{padding:50px}}body.frame{min-height:100vh;border:18px solid var(--highlight-color)}.wrapper{max-width:1000px;margin:0 auto}.header{padding:20px 0;display:flex;justify-content:space-between;align-items:center}.header .header-left-content{display:flex;align-items:center;gap:15px}.header .author-image-wrapper{width:50px;height:50px;overflow:hidden;border-radius:50%;flex-shrink:0}.header .author-image-wrapper img{width:100%;height:100%;object-fit:cover}.header .header-logo{font-size:1.2rem;text-decoration:none;color:var(--heading-color)}.header .menu-main ul{display:flex;align-items:center;margin:0;padding:0;list-style:none;height:50px}.header .menu-main ul li{margin-left:20px;display:flex;align-items:center;height:100%}.header .menu-main ul li a{display:flex;align-items:center;height:100%;text-decoration:none;color:var(--text-color)}.header .menu-main ul li a:hover{color:var(--highlight-color)}.header .menu-main ul li a i{margin-right:5px}.header .menu-main ul li.active a{color:var(--highlight-color);font-weight:700}.homepage-content{margin-bottom:2rem}.homepage-content .two-column-container{display:flex;flex-wrap:wrap;gap:2rem}.homepage-content .two-column-container .left-column{flex:1;min-width:300px}.homepage-content .two-column-container .right-column{flex:1;min-width:300px}.featured-projects{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--base-offset-color)}.featured-projects h2{font-size:1.5rem;margin-bottom:1.5rem;color:var(--heading-color)}.featured-projects .projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;margin-bottom:1.5rem}.featured-projects .project-card{background:var(--base-color);border:1px solid var(--base-offset-color);border-radius:5px;padding:1.5rem;transition:transform .2s,box-shadow .2s}.featured-projects .project-card:hover{transform:translateY(-3px)}.featured-projects .project-card h3{margin-top:0;margin-bottom:.75rem;font-size:1.2rem}.featured-projects .project-card h3 a{color:var(--heading-color);text-decoration:none}.featured-projects .project-card h3 a:hover{color:var(--highlight-color)}.featured-projects .project-card .project-meta{display:flex;flex-wrap:wrap;justify-content:space-between;margin-bottom:.75rem;font-size:.9rem;color:var(--text-color);opacity:.8}.featured-projects .project-card .project-tech{display:flex;flex-wrap:wrap;gap:.5rem}.featured-projects .project-card .project-tech .tech-tag{background:var(--base-offset-color);padding:2px 8px;border-radius:3px;font-size:.8rem}.featured-projects .project-card p{margin-bottom:1rem;font-size:.95rem;line-height:1.5}.featured-projects .project-card .read-more{display:inline-block;color:var(--highlight-color);font-weight:500;text-decoration:none}.featured-projects .project-card .read-more:hover{text-decoration:underline}.featured-projects .view-all{display:inline-block;margin-top:.5rem;color:var(--highlight-color);font-weight:500;text-decoration:none}.featured-projects .view-all:hover{text-decoration:underline}.yorkshire-tea-button-container{display:flex;justify-content:center;margin-top:20px}.yorkshire-tea-button{display:inline-flex;align-items:center;padding:3px 8px;background:linear-gradient(to bottom,#f5f5f5,#c0c0c0);border:2px outset #999;border-radius:3px;box-shadow:3px 3px 5px rgba(0,0,0,.4);text-decoration:none;font-family:verdana,arial,sans-serif;font-size:10px;font-weight:700;color:#333;text-shadow:1px 1px 0 #fff;transition:all .1s;margin-bottom:15px}.yorkshire-tea-button:hover{background:linear-gradient(to bottom,#e8e8e8,#b0b0b0);text-decoration:none}.yorkshire-tea-button:active{border-style:inset;box-shadow:1px 1px 2px rgba(0,0,0,.3);transform:translateY(1px)}.yorkshire-tea-button .yorkshire-tea-logo{width:24px;height:16px;margin-right:5px;object-fit:contain}.yorkshire-tea-button span{white-space:nowrap;letter-spacing:-.5px}@media(max-width:768px){.header .header-left-content{gap:10px}.header .author-image-wrapper{width:40px;height:40px}.header .menu-main{display:none}.featured-projects .projects-grid{grid-template-columns:1fr}}