.paper-footer[data-astro-cid-nns7i3if]{--footer-tear-height:max(22px, 1.45833vw);--footer-tear-width:max(100%, 1508.57px);--footer-tear-drop:calc(var(--footer-tear-height) - 2px);--footer-surface:linear-gradient(#faf7efeb, #faf7efeb), url(/_astro/crumpled-paper.CPMhMi07.webp);z-index:3;isolation:isolate;width:100%;max-width:none;min-height:0;padding:28px var(--gutter) 20px;color:#28231e;filter:drop-shadow(0 -4px 5px #25190e1f);background:0 0;border:0;margin:0;display:block;position:relative}.paper-footer[data-astro-cid-nns7i3if]:before{content:"";z-index:-1;inset:calc(-1 * var(--footer-tear-drop)) 0 0;background:var(--footer-surface) 0 0 / 640px auto repeat;mask:linear-gradient(#000 0 0) top / 100% calc(100% - var(--footer-tear-height) + 1px) no-repeat, url(/_astro/paper-edge.ARCvtDrk.svg) bottom center / var(--footer-tear-width) var(--footer-tear-height) no-repeat;pointer-events:none;position:absolute;transform:scaleY(-1)}.paper-footer[data-astro-cid-nns7i3if]:after{content:"";inset:calc(-1 * var(--footer-tear-drop)) 0 auto;height:var(--footer-tear-height);background:url(/_astro/paper-edge-fibres.Cj_SwBiv.svg) bottom center / var(--footer-tear-width) var(--footer-tear-height) no-repeat;pointer-events:none;position:absolute;transform:scaleY(-1)}.paper-footer__inner[data-astro-cid-nns7i3if]{grid-template-columns:auto 1fr;align-items:center;gap:12px 40px;width:100%;max-width:1504px;margin-inline:auto;display:grid}.paper-footer__brand[data-astro-cid-nns7i3if]{width:fit-content}.paper-footer[data-astro-cid-nns7i3if] nav[data-astro-cid-nns7i3if]{justify-content:flex-end;gap:4px 24px;width:auto}.paper-footer[data-astro-cid-nns7i3if] nav[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]{color:#28231e;font:400 1rem/1.4 var(--font-ui);gap:4px}.paper-footer[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]:focus-visible{outline-offset:4px;box-shadow:none;outline:2px solid #008a83}.paper-footer__copyright[data-astro-cid-nns7i3if]{font:400 .8125rem/1.4 var(--font-ui);color:#5f574b;grid-column:1/-1}@media (width<=700px){.paper-footer[data-astro-cid-nns7i3if]{padding-top:24px}.paper-footer__inner[data-astro-cid-nns7i3if]{grid-template-columns:1fr;gap:12px}.paper-footer[data-astro-cid-nns7i3if] nav[data-astro-cid-nns7i3if]{justify-content:flex-start;gap:4px 24px}}.contact-envelope[data-astro-cid-4tzifgbl]{color:#28231e;width:min(520px,100vw - 32px);max-width:none;max-height:calc(100svh - 24px);box-shadow:none;background:0 0;border:0;margin:auto;padding:0;overflow:auto}.contact-envelope[data-astro-cid-4tzifgbl]::backdrop{backdrop-filter:blur(3px);background:#1c18137a}.contact-envelope__close[data-astro-cid-4tzifgbl]{z-index:10;color:#28231e;cursor:pointer;background:#faf7ef;border:1px solid #28231e33;border-radius:50%;place-items:center;width:44px;height:44px;display:grid;position:absolute;top:6px;right:6px}.contact-envelope__close[data-astro-cid-4tzifgbl] svg[data-astro-cid-4tzifgbl]{width:20px;height:20px}.contact-envelope__close[data-astro-cid-4tzifgbl] path[data-astro-cid-4tzifgbl]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round}.contact-envelope__scene[data-astro-cid-4tzifgbl]{perspective:1000px;width:100%;height:min(420px,100svh - 40px);min-height:240px;position:relative}.contact-envelope__body[data-astro-cid-4tzifgbl]{aspect-ratio:2;filter:drop-shadow(3px 12px 12px #140f0a3b);width:min(440px,92%,100svh - 64px);position:absolute;bottom:20px;left:50%;transform:translate(-50%)rotate(-2deg)}.contact-envelope__back[data-astro-cid-4tzifgbl],.contact-envelope__front[data-astro-cid-4tzifgbl],.contact-envelope__flap[data-astro-cid-4tzifgbl]{background:linear-gradient(#ddd1b8e0,#ddd1b8e0),url(/_astro/crumpled-paper.CPMhMi07.webp) 50%/440px;position:absolute;inset:0}.contact-envelope__back[data-astro-cid-4tzifgbl]{z-index:0;border:1px solid #b7a88c;border-radius:3px}.contact-envelope__flap[data-astro-cid-4tzifgbl]{z-index:4;clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;background:linear-gradient(#e4d8bfe0,#e4d8bfe0),url(/_astro/crumpled-paper.CPMhMi07.webp) 50%/440px;height:68%;transition:transform .42s cubic-bezier(.2,.7,.25,1),z-index 0s .21s;bottom:auto;transform:rotateX(0)}.contact-envelope__front[data-astro-cid-4tzifgbl]{z-index:3;clip-path:polygon(0 0,50% 56%,100% 0,100% 100%,0 100%);pointer-events:none;background:linear-gradient(27deg,#bfae8d52 49.8%,#0000 50.2%),linear-gradient(-27deg,#f7eed761 49.8%,#0000 50.2%),linear-gradient(#ddd1b8e0,#ddd1b8e0),url(/_astro/crumpled-paper.CPMhMi07.webp) 50%/440px;border-radius:0 0 3px 3px;box-shadow:inset 0 -1px #5d4c2e33}.contact-envelope__letter-pocket[data-astro-cid-4tzifgbl]{z-index:2;clip-path:inset(-300% -2% 0);position:absolute;inset:0}.contact-envelope__letter[data-astro-cid-4tzifgbl]{z-index:2;text-align:center;background:linear-gradient(#fffdf7f2,#fffdf7f2),url(/_astro/crumpled-paper.CPMhMi07.webp) 50%/400px;width:90%;height:clamp(170px,44svh,232px);padding:28px 20px;transition:transform .55s cubic-bezier(.16,1,.3,1) .26s;position:absolute;top:8%;left:5%;transform:translateY(0);box-shadow:0 0 5px #3b2d1729}.contact-envelope__letter[data-astro-cid-4tzifgbl] h2[data-astro-cid-4tzifgbl]{font:500 clamp(1.5rem, 5vw, 2rem)/1.15 var(--font-display);margin:0 0 16px}.contact-envelope__letter[data-astro-cid-4tzifgbl] a[data-astro-cid-4tzifgbl]{color:#006e69;min-height:44px;font:400 1rem/1.4 var(--font-ui);text-underline-offset:4px;align-items:center;gap:8px;text-decoration:underline;display:inline-flex}.contact-envelope__letter[data-astro-cid-4tzifgbl] a[data-astro-cid-4tzifgbl]:hover{text-decoration-thickness:2px}.contact-envelope[data-astro-cid-4tzifgbl] [data-astro-cid-4tzifgbl]:focus-visible{outline-offset:4px;box-shadow:none;outline:2px solid #008a83}.contact-envelope[data-astro-cid-4tzifgbl][data-envelope-open] .contact-envelope__flap[data-astro-cid-4tzifgbl]{z-index:1;transform:rotateX(180deg)}.contact-envelope[data-astro-cid-4tzifgbl][data-envelope-open] .contact-envelope__letter[data-astro-cid-4tzifgbl]{transform:translateY(-57%)}@media (width<=380px),(height<=420px){.contact-envelope__letter[data-astro-cid-4tzifgbl]{padding:20px 12px}.contact-envelope__letter[data-astro-cid-4tzifgbl] h2[data-astro-cid-4tzifgbl]{margin-bottom:12px}.contact-envelope__letter[data-astro-cid-4tzifgbl] a[data-astro-cid-4tzifgbl]{font-size:.9375rem}}@media (prefers-reduced-motion:reduce){.contact-envelope__flap[data-astro-cid-4tzifgbl],.contact-envelope__letter[data-astro-cid-4tzifgbl]{transition:none}.contact-envelope[data-astro-cid-4tzifgbl][open] .contact-envelope__flap[data-astro-cid-4tzifgbl]{z-index:1;transform:rotateX(180deg)}.contact-envelope[data-astro-cid-4tzifgbl][open] .contact-envelope__letter[data-astro-cid-4tzifgbl]{transform:translateY(-57%)}}@font-face{font-family:Caveat;src:url(/_astro/caveat-brand-600.flPyxD2I.ttf)format("truetype");font-style:normal;font-weight:600;font-display:swap}@font-face{font-family:Newspaper Date;src:url(/_astro/roboto-condensed-date-900.umNBvuaW.ttf)format("truetype");font-style:normal;font-weight:900;font-display:swap}:root{color-scheme:light;font-family:var(--font-ui);color:var(--ink);background:var(--paper);font-synthesis:none;text-rendering:optimizelegibility;--ink:#171717;--paper:#f4f0e6;--card:var(--paper);--muted:color-mix(in srgb, var(--ink) 72%, var(--paper));--line:color-mix(in srgb, var(--ink) 18%, var(--paper));--accent:#00b8b0;--highlight:#f4d84a;--surface-muted:color-mix(in srgb, var(--paper) 94%, var(--ink));--ink-overlay:color-mix(in srgb, var(--ink) 82%, transparent);--font-ui:Arial, Helvetica, sans-serif;--font-display:Georgia, "Times New Roman", serif;--font-artifact:"Courier New", monospace;--radius-card:8px;--radius-media:4px;--radius-pill:999px;--shadow-paper:0 4px 12px #17171718;--header-height:0px;--header-clearance:calc(var(--header-height) + 14px);--header-min-height:3.75rem;--gutter:48px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-clearance) + 16px)}body{overflow-wrap:anywhere;margin:0;font-size:1rem;line-height:1.5}h1{font-size:2.25rem;font-weight:700;line-height:1.1}h2{font-size:2rem;font-weight:600;line-height:1.15}h3{font-size:1.5rem;font-weight:600;line-height:1.2}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button{font:inherit}:focus-visible{outline:3px solid var(--ink);outline-offset:3px;box-shadow:0 0 0 3px var(--paper)}::selection{background:var(--highlight);color:var(--ink)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:0;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:10030;min-height:44px;color:var(--paper);background:var(--ink);padding:12px 16px;position:fixed;top:-4rem;left:1rem}.skip-link:focus{top:1rem}.site-header{--header-paper:#faf7ef;--header-tear-height:max(18px, 1.45833vw);--header-tear-drop:14px;--header-tear-width:max(100%, 1234.29px);--header-ink:#28231e;--header-marker:#008a83;--header-highlight:#f1e85b;--header-paper-surface:linear-gradient(#faf7efeb, #faf7efeb), url(/_astro/crumpled-paper.CPMhMi07.webp);z-index:10020;min-height:var(--header-min-height);padding:12px var(--gutter);isolation:isolate;color:var(--header-ink);filter:drop-shadow(0 5px 5px #25190e3d);background:0 0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 24px;display:flex;position:sticky;inset:0 0 auto}.site-header:before{content:"";z-index:-1;inset:0 0 calc(-1 * var(--header-tear-drop));background:var(--header-paper-surface) 0 0 / 640px auto repeat;mask:linear-gradient(#000 0 0) top / 100% calc(100% - var(--header-tear-height) + 1px) no-repeat, url(/_astro/paper-edge.ARCvtDrk.svg) bottom center / var(--header-tear-width) var(--header-tear-height) no-repeat;pointer-events:none;position:absolute}.site-header:after{content:"";z-index:-1;inset:auto 0 calc(-1 * var(--header-tear-drop));height:var(--header-tear-height);background:url(/_astro/paper-edge-fibres.Cj_SwBiv.svg) bottom center / var(--header-tear-width) 100% no-repeat;pointer-events:none;position:absolute}.site-header[data-menu-ready]{position:fixed}.site-brand{letter-spacing:-.015em;white-space:nowrap;flex:0 auto;align-items:center;min-width:0;min-height:44px;padding-block:4px;font:600 2rem/1.1 Caveat,cursive;display:inline-flex;transform:rotate(-2deg)}.site-header nav{font:400 1rem/1.4 var(--font-ui);flex-wrap:wrap;align-items:center;gap:8px 28px;display:flex}.site-header nav a{min-height:44px;color:var(--header-ink);align-items:center;padding-inline:4px;display:inline-flex}.site-header nav a:hover{text-decoration:none}.site-nav__label{isolation:isolate;white-space:nowrap;padding-block:8px;position:relative}.site-nav__highlight{z-index:-1;width:calc(100% + 16px);height:27px;fill:var(--header-highlight);opacity:0;pointer-events:none;transition:opacity .16s;position:absolute;top:50%;left:-8px;transform:translateY(-50%)rotate(-1deg)}.site-nav__marker-grain{fill:none;stroke:var(--header-paper);stroke-width:.7px;opacity:.55}.site-header nav a[aria-current] .site-nav__highlight{opacity:1}.site-nav__doodle{pointer-events:none;width:calc(100% + 20px);height:calc(100% + 8px);position:absolute;inset:-4px -10px;overflow:visible}.site-nav__doodle path{fill:none;stroke:var(--header-marker);stroke-width:1.7px;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1px;opacity:0;transition:stroke-dashoffset .28s cubic-bezier(.16,1,.3,1),opacity .12s}.site-nav__doodle g{fill:var(--header-marker);opacity:0;transition:opacity .16s 80ms}.site-header nav a:focus-visible .site-nav__doodle path{stroke-dashoffset:0;opacity:1}.site-header nav a:focus-visible .site-nav__doodle g{opacity:1}@media (hover:hover){.site-header nav a:hover .site-nav__doodle path{stroke-dashoffset:0;opacity:1}.site-header nav a:hover .site-nav__doodle g{opacity:1}}.site-header :focus-visible{outline:2px solid var(--header-marker);outline-offset:4px;box-shadow:none}.menu-toggle{flex:none;display:none}.menu-toggle[hidden]{display:none}.site-footer{border-top:1px solid var(--line);max-width:1600px;min-height:88px;padding:16px var(--gutter);justify-content:space-between;align-items:center;gap:24px;margin-inline:auto;display:flex}.site-footer-brand{letter-spacing:-.025em;font-size:.9375rem;font-weight:600}.site-footer nav{flex-wrap:wrap;gap:24px;display:flex}.site-footer nav a{min-height:44px;color:var(--muted);align-items:center;font-size:.875rem;display:inline-flex}.site-footer nav a:hover{color:var(--ink);text-decoration:underline var(--accent) 2px;text-underline-offset:4px}.site-shell{max-width:1600px;padding-inline:var(--gutter);margin-inline:auto}.hero{border-bottom:1px solid var(--line);background:#8d6a49 50%/cover no-repeat;place-items:center;width:100vw;min-height:100svh;padding:0;display:grid;position:relative;left:50%;transform:translate(-50%)}.hero-desk{pointer-events:none;position:absolute;inset:0;overflow:hidden}.hero-desk__image{object-fit:cover;filter:blur(1px);width:100%;height:100%;display:block;transform:scale(1.008)}.hero[data-hero-loading=desk] .hero-item,.hero[data-hero-loading=objects] .hero-item:not(.hero-item--newspaper),.hero[data-hero-loading] .hero-reset{visibility:hidden;opacity:0}.hero-stage{isolation:isolate;width:100%;height:100svh;min-height:32rem;position:relative}.hero-reset{z-index:10;border:1px solid var(--ink);border-radius:var(--radius-pill);background:var(--paper);min-height:44px;color:var(--ink);cursor:pointer;padding:8px 16px;font-size:.875rem;transition:color .24s,background .24s;position:absolute;bottom:24px;right:24px}.hero-reset[hidden]{display:none}.hero-reset:hover{background:var(--ink);color:var(--paper)}.hero-item{--x:50%;--y:50%;--size:20vw;--angle:0deg;--hover-angle:2deg;z-index:var(--layer,1);left:var(--x);top:calc(var(--y) + var(--desk-header-offset,0px));width:var(--size);height:auto;color:inherit;cursor:grab;touch-action:none;user-select:none;transform:translate(-50%, -50%) rotate(var(--angle));transform-origin:50%;background:0 0;border:0;margin:0;padding:0;transition:transform .32s cubic-bezier(.2,.75,.25,1),filter .32s,opacity .24s;display:block;position:absolute}.hero-item:active{cursor:grabbing}.hero-item:focus-within{z-index:8999!important}.hero-item:focus-visible{outline:2px solid var(--ink);outline-offset:8px;box-shadow:none;z-index:8999!important}.hero-item:hover{z-index:9999!important}.hero-item:hover,.hero-item:focus-visible{transform:translate(-50%, -50%) rotate(calc(var(--angle) + var(--hover-angle))) scale(1.045)}.hero-item img{pointer-events:none;width:100%;height:auto;display:block}.hero-item--newspaper{--x:41%;--y:48%;--size:calc(var(--desk-unit) * 30);--angle:-8deg;--hover-angle:2deg;--layer:2}.hero-item--computer{--x:min(82%, calc(100% - var(--size) * .66));--y:49%;--size:calc(var(--desk-unit) * 34);--angle:10deg}.hero-item--photostrip{--x:65%;--y:32%;--size:calc(var(--desk-unit) * 5);--angle:13deg;--layer:4}.hero-item--paint{--x:min(92%, calc(100% - var(--size) * .5 - 16px));--y:75%;--size:min(20.7vw, 279px, 30.6svh);--angle:0deg;--hover-angle:0deg;--layer:3}.hero-item--phone{--x:9%;--y:29%;--size:calc(var(--desk-unit) * 7.5);--angle:13deg}.hero-item--holo{--x:22%;--y:38%;--size:calc(var(--desk-unit) * 16);--angle:-7deg;--layer:3}.hero-item--gallery{--x:53%;--y:67%;--size:calc(var(--desk-unit) * 21);--angle:-9deg;--layer:4}.hero-item--gallery img,.hero-item--holo>img{filter:drop-shadow(0 8px 8px #1717173d)}.hero-holo__glare{pointer-events:none;position:absolute;inset:0;overflow:hidden;mask-size:100% 100%;mask-repeat:no-repeat}.hero-holo__glare:after{content:"";mix-blend-mode:screen;opacity:0;background:linear-gradient(112deg,#0000 36%,#ffffff14 43%,#ffffffa6 49%,#ffffff26 54%,#0000 62%);position:absolute;inset:-60% -100%;transform:translate(-65%)}.hero-item--holo:is(:hover,:focus-visible) .hero-holo__glare:after{animation:.85s cubic-bezier(.22,.61,.36,1) both desk-holo-glare}@keyframes desk-holo-glare{0%{opacity:0;transform:translate(-65%)}15%{opacity:1}85%{opacity:1}to{opacity:0;transform:translate(65%)}}@media (prefers-reduced-motion:reduce){.hero-item--holo:is(:hover,:focus-visible) .hero-holo__glare:after{opacity:.28;animation:none;transform:none}}.hero-item--skills{--angle:-10deg;--hover-angle:0deg;--x:max(13%, calc(var(--size) * .6));--y:calc(100% - var(--bottle-width) * .93 - var(--puddle-width) * .985 - 74px);--size:200px;--layer:5;width:var(--size);pointer-events:none;height:220px;overflow:visible}.hero-item--skills:hover,.hero-item--skills:focus-visible{transform:translate(-50%, -50%) rotate(var(--angle))}.hero-item--skills[data-auto-position]{transition:left .2s,top .2s,transform .32s cubic-bezier(.2,.75,.25,1)}.hero-item--skills .skills-folder-float{pointer-events:auto;transform:translate(-50%, -50%) scale(var(--folder-scale,1));position:absolute;top:50%;left:50%}.hero-item--skills .folder-float__trigger:focus-visible{outline:2px solid var(--ink);outline-offset:4px}.hero-item--newspaper img,.hero-item--computer img,.hero-item--photostrip img,.hero-item--phone img{filter:drop-shadow(0 12px 12px #17171738)}.hero-item--paint,.hero-item--paint:is(:hover,:focus-visible,:active){aspect-ratio:1012/951;transform:translate(-50%,-50%)}.hero-item--paint:disabled{opacity:1;cursor:default}.hero-item--paint img{box-shadow:none}.hero-item--paint .hero-paint__frame{object-fit:fill;filter:drop-shadow(0 10px 10px #17171738);width:100%;height:100%}.hero-paint__canvas{pointer-events:none;place-items:center;width:79.3%;height:65.2%;display:grid;position:absolute;top:11.4%;left:15.3%}.hero-item--paint .hero-paint__cat{aspect-ratio:1;object-fit:contain;filter:none;width:66.6667%;height:auto}.hero-item--photostrip img{filter:grayscale()drop-shadow(0 12px 12px #17171738);transition:filter .36s}.hero-item--photostrip:hover img,.hero-item--photostrip:focus-visible img{filter:grayscale(0)drop-shadow(0 16px 16px #17171742)}.hero-item__hover{opacity:0;transition:opacity .32s;position:absolute;inset:0}.hero-item:hover .hero-item__hover,.hero-item:focus-visible .hero-item__hover{opacity:1}.hero-tooltip{z-index:10000;left:var(--tooltip-x,50%);top:var(--tooltip-y,50%);border:1px solid var(--ink);background:var(--paper);width:max-content;max-width:min(280px,100% - 16px);color:var(--ink);font:.875rem/1.35 var(--font-ui);text-align:center;opacity:0;pointer-events:none;border-radius:4px;padding:8px 12px;transition:opacity .18s;position:absolute;transform:translate(-50%,calc(-100% - 12px))}.hero-tooltip[data-visible=true]{opacity:1}.hero-tooltip[hidden]{display:none}.hero-newspaper__date{pointer-events:none;width:100%;height:100%;display:block;position:absolute;inset:0;overflow:visible}.hero-newspaper__date text{fill:#565656;letter-spacing:.12em;font:900 43px/1 Newspaper Date,Arial Narrow,sans-serif}.skills-fallback{z-index:10;pointer-events:auto;touch-action:auto;gap:8px;width:min(18rem,100% - 32px);margin:0;display:grid;position:absolute;bottom:16px;left:16px}.skills-fallback a{background:var(--paper);border:1px solid var(--ink);border-radius:var(--radius-pill);align-items:center;min-height:44px;padding:8px 12px;font-size:1rem;display:flex}.contact-dialog{border:1px solid var(--ink);border-radius:var(--radius-card);background:var(--paper);width:min(420px,100vw - 48px);color:var(--ink);box-shadow:var(--shadow-paper);padding:32px}.contact-dialog::backdrop{background:#17171761}.contact-dialog form{position:relative}.contact-dialog h2{margin:0 32px 16px 0;font-size:1.5rem;line-height:1.2}.contact-dialog p{color:var(--muted);margin:0}.contact-dialog__close{width:44px;height:44px;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;font-size:1.75rem;display:grid;position:absolute;top:-12px;right:-12px}.about-page,.gallery-page,.project-listing,.not-found{padding-block:calc(var(--header-height) + 48px) 48px;margin-top:0}.about-page h1,.gallery-page h1{margin:8px 0 24px;font-size:2.25rem;line-height:1.1}.gallery-page .section-heading p{max-width:70ch;color:var(--muted);margin:12px 0 0}.page-section{scroll-margin-top:calc(var(--header-height) + 16px)}.projects-section{padding-block:48px 32px}.section-heading{margin-bottom:32px}.section-heading h2,.about-section h2,.contact-section h2{letter-spacing:-.055em;text-wrap:balance;margin:0;font-size:clamp(1.5rem,1.25rem + 1vw,2rem);font-weight:600;line-height:1.15}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:24px;display:grid}.project-card{--project-tint:var(--surface-muted);border:1px solid var(--line);border-radius:var(--radius-card);background:var(--card);flex-direction:column;min-width:0;transition:transform .18s,box-shadow .18s,border-color .18s;display:flex;position:relative;overflow:hidden}.project-card:focus-within{outline:3px solid var(--ink);outline-offset:3px}.project-card-main:focus-visible{outline-offset:-4px}.project-card:hover{border-color:var(--accent);box-shadow:var(--shadow-paper);transform:translateY(-2px)}.project-card-main{width:100%;color:inherit;flex-direction:column;flex:1;display:flex}.project-cover{aspect-ratio:16/9;background:var(--project-tint);position:relative;overflow:hidden}.project-cover>img:first-child{object-fit:cover;width:100%;height:100%}.project-cover-placeholder{background:color-mix(in srgb, var(--project-tint), var(--paper) 24%);place-items:center;width:100%;height:100%;display:grid}.project-cover-placeholder span{border:1px solid color-mix(in srgb, var(--ink), transparent 55%);color:var(--ink);font:.875rem/1.4 var(--font-artifact);letter-spacing:.025em;text-transform:uppercase;padding:8px 12px}.project-logo-overlay{z-index:1;pointer-events:none;place-items:center;padding:24px;transition:opacity .18s;display:grid;position:absolute;inset:0}.project-logo{object-fit:contain;width:70%;max-width:70%;height:76%;max-height:76%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.project-card-preview{z-index:2;object-fit:cover;opacity:0;pointer-events:none;width:100%;height:100%;transition:opacity .18s;position:absolute;inset:0}.project-card[data-preview-playing] .project-card-preview{opacity:1}.project-card[data-preview-playing] .project-logo-overlay{opacity:0}.project-card-main:after{content:"";z-index:1;position:absolute;inset:0}.project-card-company{align-items:center;min-height:32px;display:inline-flex}.project-card-company[href]{z-index:3;min-height:44px;position:relative}.project-card-company .company-logo{width:auto;max-width:112px;height:auto;max-height:32px;display:block}.project-card .skill-list a{z-index:3;position:relative}@media (prefers-reduced-motion:reduce){.project-logo-overlay,.project-card-preview{transition:none}}.project-card-content{flex-direction:column;flex:1;padding:24px;display:flex}.project-card-meta{min-height:32px;color:var(--muted);font:.875rem/1.45 var(--font-artifact);letter-spacing:.025em;text-transform:uppercase;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;display:grid}.project-card-meta>span:last-child{text-align:right;overflow-wrap:anywhere}.project-card-client{align-items:center;min-width:0;display:flex}.project-card-client>span{overflow-wrap:anywhere}.project-card-content :is(h2,h3){letter-spacing:-.035em;text-wrap:balance;overflow-wrap:anywhere;margin:16px 0 8px;font-size:clamp(1.25rem,1.125rem + .5vw,1.5rem);font-weight:500;line-height:1.05}.project-summary{max-width:70ch;color:var(--muted);margin:0;font-size:1rem;line-height:1.5}.company-logo{object-fit:contain;object-position:left center;width:auto;max-width:112px;max-height:30px}.skill-list{flex-wrap:wrap;gap:8px;margin:auto 0 0;padding:0 24px 24px;list-style:none;display:flex}.skill-list li{border:0;padding:0}.skill-list a{border:1px solid var(--line);border-radius:var(--radius-pill);min-height:44px;color:var(--muted);align-items:center;padding:8px 12px;font-size:.875rem;line-height:1.25;transition:color .18s,background .18s,border-color .18s;display:inline-flex}.skill-list a:hover,.skill-list a:focus-visible{border-color:var(--ink);background:var(--ink);color:var(--paper)}.all-projects-link{border-bottom:1px solid;align-items:center;gap:12px;min-height:44px;margin-top:24px;padding-bottom:4px;font-size:.9375rem;display:inline-flex}.all-projects-link span{transition:transform .2s}.all-projects-link:hover span{transform:translate(3px,-3px)}.project-listing-heading{margin-bottom:32px}.project-listing-heading h1{font:700 2.25rem/1.1 var(--font-display);letter-spacing:-.035em;overflow-wrap:anywhere;margin:16px 0 0}.project-filters{border:0;flex-wrap:wrap;gap:8px;min-width:0;margin:0 0 16px;padding:0;display:flex}.filter-help{max-width:70ch;margin:0 0 12px;font-size:.875rem}.filter-clear{min-height:44px;color:var(--muted);text-underline-offset:4px;align-items:center;padding-inline:8px;font-size:.875rem;text-decoration:underline;display:inline-flex}.project-filters[hidden],[data-project-card][hidden],[data-filter-empty][hidden]{display:none}.filter-result{min-height:1.5em;color:var(--muted);font:.875rem/1.5 var(--font-artifact);margin:0 0 24px}.gallery-section{border-block:1px solid var(--line);padding-block:48px}.about-section{grid-template-columns:minmax(0,1.35fr) minmax(12ch,.65fr);align-items:end;gap:48px;padding-block:48px;display:grid}.about-section>div{max-width:70ch}.about-section h2{margin-bottom:24px}.about-section>div>p{max-width:70ch;color:var(--muted);font-size:1rem;line-height:1.5}.contact-section{border-top:1px solid var(--line);padding-block:48px}.contact-section .content-prompt{margin:24px 0 0;font-size:1rem}.eyebrow{color:var(--muted);font:.875rem/1.5 var(--font-artifact);letter-spacing:.03em}.period{color:var(--ink);text-decoration:underline var(--accent) 2px;text-underline-offset:4px}.content-prompt{max-width:70ch;color:var(--muted);font-size:1rem;font-style:italic}.not-found{min-height:72svh}.not-found h1{max-width:70ch;font:700 2.25rem/1.1 var(--font-display);letter-spacing:-.035em;margin:24px 0 16px}.not-found>p:not(.eyebrow){color:var(--muted)}.not-found-links{flex-wrap:wrap;gap:12px 24px;display:flex}@media (width<=1050px){:root{--gutter:32px}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.site-header{flex-wrap:wrap;gap:8px;padding-block:12px}.site-header[data-menu-open=true]:before{bottom:0;mask:none}.site-header[data-menu-open=true]:after{display:none}.site-header nav{flex-wrap:wrap;gap:8px 16px;width:100%}.site-header[data-menu-ready]{flex-wrap:nowrap}.menu-toggle{width:44px;height:44px;color:var(--header-ink);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid}.menu-toggle[hidden]{display:none}.menu-toggle__icon,.menu-toggle__icon:before,.menu-toggle__icon:after{background:currentColor;width:20px;height:2px;transition:transform .22s,opacity .18s;display:block;position:absolute}.menu-toggle__icon{position:relative}.menu-toggle__icon:before,.menu-toggle__icon:after{content:"";left:0}.menu-toggle__icon:before{transform:translateY(-6px)}.menu-toggle__icon:after{transform:translateY(6px)}.site-header[data-menu-open=true] .menu-toggle__icon{background:0 0}.site-header[data-menu-open=true] .menu-toggle__icon:before{transform:rotate(45deg)}.site-header[data-menu-open=true] .menu-toggle__icon:after{transform:rotate(-45deg)}.site-header[data-menu-ready] nav{width:100%;padding:12px var(--gutter) 24px;isolation:isolate;background:0 0;border:0;flex-direction:column;align-items:stretch;gap:4px;display:none;position:absolute;top:100%;left:0;right:0}.site-header[data-menu-ready] nav:after{content:"";z-index:-1;background:var(--header-paper-surface) 0 0 / 640px auto repeat;mask:linear-gradient(#000 0 0) top / 100% calc(100% - var(--header-tear-height) + 1px) no-repeat, url(/_astro/paper-edge.ARCvtDrk.svg) bottom center / var(--header-tear-width) var(--header-tear-height) no-repeat;pointer-events:none;position:absolute;inset:0}.site-header[data-menu-ready] nav:before{content:"";z-index:0;height:var(--header-tear-height);background:url(/_astro/paper-edge-fibres.Cj_SwBiv.svg) bottom center / var(--header-tear-width) 100% no-repeat;pointer-events:none;position:absolute;inset:auto 0 0}.site-header[data-menu-ready][data-menu-open=true] nav{display:flex}.site-header[data-menu-ready] .menu-toggle{display:grid}.site-header nav a{padding-inline:8px}.site-header[data-menu-ready] nav{max-height:calc(100svh - var(--header-height) - 24px);overflow-y:auto}.site-header[data-menu-ready] nav a{width:100%;min-height:48px;padding-inline:0}}@media (width<=620px){:root{--gutter:24px}.site-footer{flex-wrap:wrap;min-height:80px;padding-block:12px}.site-footer nav{justify-content:space-between;gap:12px;width:100%}.hero-item--newspaper{--x:45%;--y:51%;--angle:-7deg}.hero-item--computer{--x:min(76%, calc(100% - var(--size) * .66));--y:33%;--angle:9deg}.hero-item--photostrip{--x:18%;--y:60%;--angle:12deg}.hero-item--paint{--x:79%;--y:83%;--size:min(32.4vw, 140.4px, 19.8svh);display:none}.hero-item--holo{--x:22%;--y:28%;--angle:7deg}.hero-item--gallery{--x:min(82%, calc(100% - var(--size) * .62 - 8px));--y:62%;--angle:-9deg}.hero-item--phone{--x:16%;--y:42%;--angle:13deg}.hero-item--phone:before,.hero-item--photostrip:before{content:"";width:max(100%,44px);height:100%;position:absolute;top:0;left:50%;transform:translate(-50%)}.hero-item--skills{--x:max(24%, calc(var(--size) / 2 + 32px));--y:calc(100% - var(--bottle-width) * .93 - var(--puddle-width) * 1.105 - 92px)}.hero-reset{bottom:16px;right:16px}.projects-section{padding-block:48px 24px}.project-grid{grid-template-columns:minmax(0,1fr);gap:16px}.project-card-content{padding:16px}.skill-list{padding-inline:16px;padding-bottom:16px}.gallery-section{padding-block:32px 48px}.about-section{grid-template-columns:1fr;gap:12px;padding-block:48px}.about-section h2{margin-bottom:16px}.contact-section{padding-block:48px}}@media (width<=620px) and (orientation:landscape){.hero-item--newspaper{--x:43%;--y:55%}.hero-item--computer{--x:min(75%, calc(100% - var(--size) * .66));--y:37%}.hero-item--photostrip{--x:58%;--y:70%}.hero-item--paint{--x:83%;--y:77%;--size:min(20.7vw, 30.6svh)}.hero-item--phone{--x:14%;--y:37%}.hero-item--skills{--x:max(15%, calc(var(--size) / 2 + 32px))}}@media (width<=380px){.hero-item--skills{--size:170px;--folder-scale:.85;--ff-hit-pad:9px}:root{--gutter:16px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}body:not(.theme-laserhawk):not([data-soda-cursor-page]){cursor:url(/cursors/xp/larrow.png) 0 0,auto}body:not(.theme-laserhawk):not([data-soda-cursor-page]) :is(a[href],button,summary,select,[role=button],input[type=button],input[type=submit]){cursor:url(/cursors/xp/llink.png) 0 0,pointer}body:not(.theme-laserhawk):not([data-soda-cursor-page]) :is(input[type=text],input[type=search],input[type=email],input[type=url],input[type=tel],input[type=password],input[type=number],[contenteditable=true],[role=textbox]){cursor:url(/cursors/xp/libeam.png) 16 16,text}body:not(.theme-laserhawk):not([data-soda-cursor-page]) :is([aria-busy=true],[data-cursor-wait]){cursor:url(/cursors/xp/lwait.png) 16 16,progress}body:not(.theme-laserhawk):not([data-soda-cursor-page]) [data-draggable]{cursor:url(/cursors/xp/lmove.png) 16 16,move}body{flex-direction:column;min-height:100svh;display:flex}.site-shell[data-astro-cid-z4jru4n3]{flex:1 0 auto;width:100%}
