");background-size:auto 100%;background-position:0 0;background-repeat:no-repeat;z-index:-1;margin-left:-100px;margin-bottom:3.54rem;overflow:hidden}.navigation--contextual .navigation__item{margin-bottom:1rem;line-height:1.3;display:flex}.navigation--contextual .navigation__item a,.navigation--contextual .navigation__item del{font-size:1.33rem}.navigation--contextual .navigation__item a{text-decoration-style:wavy;line-height:1}@media (min-width:37em){.navigation--contextual{padding-top:6.3rem;padding-bottom:6.3rem}.navigation--contextual .navigation__item{font-size:1.33rem}.navigation--contextual .navigation__item a,.navigation--contextual .navigation__item del{font-size:1.77rem}}.navigation__item-separator{display:inline-block;margin-left:.42rem}.notice{--flow-space:3.15rem;margin-bottom:3.15rem;background-color:#d4efe3;padding:1.77rem}.notice::before{content:"";display:block;width:4.2rem;height:5px;background:#000;margin-top:-1.77rem;margin-left:-1.77rem;margin-bottom:1.77rem}.notice>*{max-width:calc(50rem - 1.77rem)}.notice__title{font-size:1.33rem;font-weight:700}.page-header{padding-bottom:1.77rem}.page-header__category{font-size:1.77rem}.page-header__title{font-size:2.36rem}@media (min-width:37em){.page-header__title{font-size:3.15rem}}.page-header__subtitle{--flow-space:0.42rem;font-size:1.33rem;line-height:inherit}@media (min-width:37em){.page-header__subtitle{font-size:2.36rem;line-height:1.3}}.home .page-header__description{max-width:28em}.page-header::after{content:"";display:block;width:4.2rem;height:5px;background:#000;margin-top:2.36rem}.pagination{padding-top:2.43rem}.pagination [data-direction=forwards]{margin-inline-start:auto}.posts{margin-top:1.77rem!important}.posts__item:not(:last-child)::after{content:"";display:block;width:4.2rem;height:2px;background:#000;margin-top:3.15rem;margin-bottom:3.15rem}.preview__image{border:1px solid}.preview__title{font-size:1.77rem;font-family:Quando,Georgia,serif;letter-spacing:-.075rem}@media (min-width:37em){.preview__title{font-size:2.36rem}}.preview__subtitle{margin-top:.42rem}.preview__meta{font-size:1rem;margin-top:.56rem!important;margin-bottom:.56rem!important}.preview__meta a{font-size:1.1rem;font-weight:700}.preview__image-link-container{display:block}.preview__inner{--auto-grid-gap:0 2.36rem;--auto-grid-min-size:24rem}.preview--featured{background-color:#add8e6;padding-top:3.15rem;padding-bottom:3.15rem}.preview+.preview{margin-top:3.15rem}@media (min-width:62em){.preview__inner{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--auto-grid-gap,1.33rem)}.preview__inner .preview__image-link-container{--flow-space:0;grid-column:3/2;grid-row:1/3}.preview__inner .preview__description{grid-row:2;align-self:end}.preview+.preview--with-image{margin-top:6.3rem}.preview+.preview--with-image:nth-of-type(2n+2) .preview__image-link-container{grid-column:1/2}.preview+.preview--with-image:nth-of-type(2n+2) .preview__description{grid-column:3/2;grid-row:2}}.section{padding-top:1.77rem;padding-bottom:1.77rem}.section__title{font-size:2.36rem}@media (min-width:37em){.section__title{font-size:3.15rem}}.skip-link{position:absolute;top:1rem;left:1rem;z-index:99;background:#333;color:#fff;padding:.75rem}.site-article{padding-top:4.2rem;padding-bottom:4.2rem}table:not([class=unstyled]){table-layout:fixed}table:not([class=unstyled]) tfoot td,table:not([class=unstyled]) thead th{text-align:center}table:not([class=unstyled]) td,table:not([class=unstyled]) th{padding:.75rem 1.33rem}table:not([class=unstyled]) tfoot td,table:not([class=unstyled]) th{color:#fff;background:#1ea970}table:not([class=unstyled]) td{background:#d4efe3}table:not([class=unstyled]) ul{font-size:1.1rem;list-style:none;padding:0}table:not([class=unstyled]) ul li:not(:last-child){padding-bottom:5px;margin-bottom:5px;border-bottom:1px solid #ccc}table:not([class=unstyled]).styled-scroll{display:block;overflow-x:auto}table:not([class=unstyled]).styled-scroll--wide td,table:not([class=unstyled]).styled-scroll--wide th{min-width:calc(5rem + 50vw)}.auto-flex{display:flex;justify-content:space-between;flex-wrap:wrap}.auto-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--auto-grid-min-size,16rem),1fr));grid-gap:var(--auto-grid-gap,1.33rem)}.flow>*+*{margin-top:var(--flow-space,1.77rem)}.anchor-link,.section-link,.section__link{display:inline-block;text-decoration-style:wavy;line-height:1;font-weight:700}.anchor-link:focus,.anchor-link:hover,.section-link:focus,.section-link:hover,.section__link:focus,.section__link:hover{text-decoration-color:#5fb6d2}.site-wrap{overflow-x:hidden;position:relative}.site-main{background-color:#f7f6f4}.styled-scroll::-webkit-scrollbar{height:1rem}.styled-scroll::-webkit-scrollbar-track{background-color:#add8e6;border:1px solid #5fb6d2;border-radius:.23rem}.styled-scroll::-webkit-scrollbar-thumb{background-color:#5fb6d2;border-radius:.23rem}.wrapper{padding-left:1.33rem;padding-right:1.33rem;margin-left:auto;margin-right:auto;position:relative;max-width:70rem}.wrapper__breakout{margin-left:-100%;margin-right:-100%;padding-left:100%;padding-right:100%}.skip-link:not(:focus),.visually-hidden{border:0;clip:rect(0 0 0 0);height:auto;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.image-group__caption{font-size:1rem;font-style:italic;color:#555;padding:.56rem .56rem .56rem 0}@supports (display:grid){.image-group{--auto-grid-gap:2px}.image-group img{width:100%;object-fit:cover;align-self:stretch}.image-group--row .image-group__row-1{grid-template-columns:repeat(2,1fr)}.image-group--row .image-group__caption,.image-group--row .image-group__image-1{grid-column:1/3}.image-group--half{display:block}.image-group--half .image-group__image-1{margin-bottom:2px}@media (min-width:37em){.image-group--row .image-group__row-1{grid-template-columns:repeat(3,1fr)}.image-group--row .image-group__image-1{grid-column:1/2}.image-group--half{display:grid;grid-template-columns:repeat(2,1fr)}.image-group--half .image-group__image-1{margin-bottom:0}.image-group--half .image-group__caption{grid-column:1/3}}@media (min-width:44em){.image-group--half .image-group__image-1{grid-row:1/3}.image-group--half .image-group__caption{grid-column:2/3;padding-left:.75rem;padding-right:1.33rem}}.image-group--thirds .image-group__row-1{margin-bottom:2px}.image-group--thirds .image-group__row-2{grid-template-columns:repeat(12,1fr)}.image-group--thirds .image-group__image-2{grid-column:1/7}.image-group--thirds .image-group__image-3{grid-column:7/13}.image-group--thirds .image-group__caption{grid-column:1/13}@media (min-width:44em){.image-group--thirds .image-group__row-1{width:calc(50vw + 50%)}.image-group--thirds .image-group__row-2{grid-template-rows:74% auto 8rem}.image-group--thirds .image-group__image-2{grid-row:1/4}.image-group--thirds .image-group__image-3{grid-row:1/2}.image-group--thirds .image-group__caption{grid-column:7/13;grid-row:3/4;padding-left:.75rem;padding-right:1.33rem;align-self:flex-end;background:#fff;margin-top:-2px}}}@supports not (display:grid){.image-group{font-size:0}.image-group .image-group__caption{font-size:1rem}.image-group img{width:100%;display:inline-flex;vertical-align:top}@media (min-width:37em){.image-group .image-group__row-2 img,.image-group.image-group--half img{max-width:50%}.image-group.image-group--row img{max-width:33.333%}}}.metrics{font-size:.8rem;line-height:1.3}.metrics .metrics__table{text-align:center}.metrics .metrics__table td,.metrics .metrics__table th{padding-left:.5em;padding-right:.5em}.metrics__value-huge{font-size:4.2em;line-height:1}.metrics__value-large{font-size:2em}.metrics__value-small{font-size:.6em}.metrics__disclaimer{font-size:1rem}@media (min-width:44em){table:not([class=unstyled]).styled-scroll{display:table;overflow-x:initial}table:not([class=unstyled]).styled-scroll--wide td,table:not([class=unstyled]).styled-scroll--wide th{min-width:0}.metrics{font-size:inherit}}@keyframes wave{0%,100%{transform:rotate(0)}50%{transform:rotate(15deg)}}@keyframes hi5{0%,100%{transform:scale(1)}50%{transform:scale(1.2)}}.wave{animation-name:wave;animation-duration:.3s;animation-delay:.5s;animation-iteration-count:3;transform-origin:65% 65%;display:inline-block;margin-left:.75rem}.wave:hover{animation-name:hi5;animation-duration:.3s;animation-iteration-count:1;display:inline-block;cursor:grab}.wave::selection{background:0 0}.screenshots{--auto-grid-min-size:16rem;--auto-grid-gap:3.15rem;--flow-space:3.15rem;padding-bottom:4.2rem;background-color:#e3e3e3}.screenshots__title{font-size:1.77rem}.screenshots__title::before{content:"";display:block;width:6rem;height:5px;background:#000;margin-bottom:2.36rem}.screenshots__image{border-radius:8px;box-shadow:0 4px 12px #555;margin-left:auto;margin-right:auto;display:block}.feedback{margin-top:4.2rem}.feedback::before{content:"";display:block;width:6rem;height:5px;background:#000;margin-bottom:3.15rem}del+ins{font-size:1rem;text-decoration:none;background:#ff0;padding:2px 8px;font-weight:700}em>strong{background-color:#d4efe3;text-decoration:none;padding-left:.4rem;padding-right:.4rem;padding-bottom:.2rem}.feature-list.auto-grid{padding-top:1.77rem;--auto-grid-min-size:14rem}.feature-list__item-title{margin-bottom:1rem}.feature-list ul{list-style:disc;padding-left:1.77rem}
Skip to content Posts filed under 'all' A non-exhaustive list of technology I use day-to-day, along with some notes on how this site is built
I offer a range of web development, design and consultation services, working with you to provide a service that is personal yet flexible. Have a look below and <a title="Contact me" href="/contact/">get in touch</a> if you'd like to discuss further.
Here you'll find a semi-regularly updated stream of work and personal notes, along with longer form articles, tutorials and resources.
Please have a look at some of the things my clients have been saying about what it's like working with me…
Here's some answers to common questions I get asked.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
<strike>Please have a look around and <a href="/contact/">get in touch</a> to see if I can help build a better web for you and your users.</strike><p class="notice">Please note, as I am working on a large project just now, unfortunately I am not currently taking on new work. Please still feel free to <a href="/contact/">get in touch</a>.</p>
A responsive WordPress website and design system for an international marketing and analytics platform provider.
A cross-platform mobile app and responsive WordPress website for the 'Open Studios Weekend' and 'Art Cycle' events.
An update on my upcoming projects as work begins to slowly pick up, with WordPress, Eleventy and Expression Engine work featuring.
I've updated my site, moving from WordPress to a much simpler (and quicker) Eleventy static site, deployed on Netlify.
A cross-platform app allowing participants to navigate and discover 8 historical bandstands across Edinburgh and Musselburgh. In collaboration with the Arty Walk Porty project with soundscapes by composer Ross Whyte.
A responsive WordPress website for a Glasgow based marketing services partner working across web, digital and creative.
A tasty website for Italy's No.1 cheese brand, built using WordPress and featuring a recipe finder, with exclusive recipes from chefs and food bloggers.
The Pet Business is a retailer, wholesaler and distributor of high quality pet products with a focus on quality, ethical, innovative products. Most products are sourced from American and Canadian companies.
A bold, modern and mobile-responsive design for a print and design company based in Paisley, near Glasgow. Built using Wordpress and WooCommerce.
A contemporary online design store, based near Edinburgh. The site showcases a mutual love of beautiful product design, interiors and architecture.