@import"https://fonts.googleapis.com/css2?family=Indie+Flower&family=Nunito:wght@300;600;800&family=Special+Elite&display=swap";@import"https://fonts.googleapis.com/css2?family=Fragment+Mono&display=swap";.cursor-glow{--glow-radius: 6rem;position:relative}.cursor-glow:after{content:"";position:absolute;inset:0;border-radius:inherit;opacity:var(--glow-strength, 0);pointer-events:none;transition:opacity .15s ease}.cursor-glow:after{z-index:1;padding:1.5px;background:radial-gradient(circle var(--glow-radius) at var(--glow-x, 50%) var(--glow-y, 50%),rgb(190 245 190),rgb(120 225 120 / .8) 50%,rgb(50 205 50 / .15));mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}@media(prefers-reduced-motion:reduce){.cursor-glow:after{transition:none}}@font-face{font-family:Special Elite Fallback;src:local("Courier New");size-adjust:88.67%;ascent-override:79.3%;descent-override:33.48%;line-gap-override:0%}:root{--font-family-primary: "Special Elite", "Special Elite Fallback", "Courier New", monospace;--color-text-primary: #4c4c4c;--color-background: #e6e6e6;--color-text-muted: rgba(0, 0, 0, .4);--color-surface-glass: rgba(255, 255, 255, .12);--color-surface-solid: #dcdcdc;--color-border-soft: rgba(255, 255, 255, .2);--color-accent: rgba(50, 205, 50, .25);--color-accent-strong: rgba(50, 205, 50, .35);--color-selection-highlight: rgba(50, 205, 50, .35);--space-xs: .25rem;--space-sm: .5rem;--space-md: .75rem;--space-lg: 1rem;--space-xl: 1.5rem;--radius-sm: .5rem;--font-size-sm: .9rem;--font-size-base: 1rem;--cursor-default: url(/assets/cursor-BoCdjgeu.svg) 0 0, default;--cursor-pointer: url(/assets/pointer-CPMFvUf0.svg) 10 0, pointer}html{cursor:var(--cursor-default)}a[href],button,summary,select,label[for]{cursor:var(--cursor-pointer)}html,body,#root{margin:0;padding:0;height:100%;background-color:var(--color-background);color:var(--color-text-primary);font-family:var(--font-family-primary);overflow:hidden}::selection{background:var(--color-selection-highlight);color:var(--color-text-primary)}:root{--grid-square: 84px;--grid-cell: calc(var(--grid-square) / 4);--grid-x: 0px;--home-surface-top: 3.5rem;--home-surface-side: .75rem;--home-background: #d6d6d6;--grid-pencil: #646361;--grid-major: color-mix(in srgb, var(--grid-pencil) 30%, transparent);--grid-minor: color-mix(in srgb, var(--grid-pencil) 8%, transparent)}.home-main{--grid-y: var(--cubes-scroll, 0px);width:100%;height:100dvh;overflow:hidden}.home-main,.project-cubes,.home-overlay__surface{background:linear-gradient(var(--grid-major) 1px,transparent 1px) var(--grid-x) var(--grid-y) / var(--grid-square) var(--grid-square),linear-gradient(90deg,var(--grid-major) 1px,transparent 1px) var(--grid-x) var(--grid-y) / var(--grid-square) var(--grid-square),linear-gradient(var(--grid-minor) 1px,transparent 1px) var(--grid-x) var(--grid-y) / var(--grid-cell) var(--grid-cell),linear-gradient(90deg,var(--grid-minor) 1px,transparent 1px) var(--grid-x) var(--grid-y) / var(--grid-cell) var(--grid-cell),var(--home-background)}.project-cubes,.home-overlay__surface{background-attachment:local}.project-cubes{--grid-y: 0px}.canvas-container{position:fixed;inset:0;width:100%;height:100%}.canvas-container--above-cubes{z-index:6}.canvas-container--above-cubes,.canvas-container--above-cubes *{pointer-events:none!important}button{cursor:var(--cursor-pointer);font-family:var(--font-family-primary);font-size:var(--font-size-base);border-radius:var(--radius-sm);padding:var(--space-md) var(--space-xl);transition:opacity .2s ease}button:focus-visible,a:focus-visible{outline:2px solid var(--color-text-primary);outline-offset:2px}.canvas-surface{width:100%;height:100%;touch-action:none;cursor:grab}.home-overlay,.home-overlay *{font-family:inherit;box-sizing:border-box}.home-overlay{--logo-overlap: .78;position:fixed;inset:0;z-index:10;color:var(--color-text-primary);pointer-events:none}.home-overlay__surface{--grid-y: calc(var(--home-surface-top) * -1);position:absolute;inset:var(--home-surface-top) 0 0;padding:0 var(--home-surface-side);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;pointer-events:auto}.home-overlay__logo-slot{position:relative;height:calc(100dvh - var(--home-surface-top))}.home-overlay__top-content{display:flow-root;min-height:calc((100dvh - var(--home-surface-top)) * var(--logo-overlap));padding-bottom:var(--space-xl)}.home-overlay__top-content~.home-overlay__logo-slot{margin-top:calc((100dvh - var(--home-surface-top)) * var(--logo-overlap) * -1)}.home-overlay__top-content~.home-overlay__logo-slot,.home-overlay__top-content~.home-overlay__logo-slot *{pointer-events:none!important}.home-overlay__logo-slot .canvas-container{position:absolute}.home-overlay__logo-slot .canvas-surface{touch-action:pan-y}.home-overlay__links{position:absolute;top:var(--space-lg);right:calc(100vw - round(down,100vw - var(--space-lg),var(--grid-cell)));display:flex;gap:var(--space-lg);align-items:center;justify-content:flex-end;font-family:Fragment Mono,monospace;pointer-events:auto}.home-overlay__links a{color:var(--color-text-primary);text-decoration:none}.home-overlay__links a:hover{text-decoration:underline}.home-overlay__heading{position:absolute;top:var(--space-lg);left:var(--space-lg);margin:0;color:var(--color-text-primary);font-family:Fragment Mono,monospace;font-size:1rem;font-weight:400;line-height:1.2}@media(max-width:743px){:root{--grid-x: calc(var(--grid-cell) * 2)}.home-overlay{--logo-overlap: .88}.project-cubes{background:none}}.tag{padding:4px 14px;border-radius:8px;background:#fff;color:var(--color-text-primary);font-family:var(--font-family-primary);font-size:1.3rem;font-weight:400;white-space:nowrap;filter:drop-shadow(0 2px 3px rgb(0 0 0 / .22))}.project-cubes{position:fixed;inset:0 0 auto;z-index:5;height:calc(var(--logo-top, 85dvh) - var(--space-lg));overflow-x:hidden;overflow-y:auto;scrollbar-width:none;pointer-events:none}.project-cubes::-webkit-scrollbar{display:none}.project-cubes__end{position:absolute;top:calc(var(--grid-square) * var(--cubes-end-row) + var(--grid-cell));width:1px;height:1px}.project-cube{--cube-accent: #fe4e42;--cube-squares: 2;--cube-squares-wide: var(--cube-desktop-squares-wide, 2);--cube-open-squares-wide: 10;--cube-open-squares-tall: 6;--cube-logo-height: calc(48px * var(--cube-logo-scale, 1));--cube-logo-inset: .42;--cube-height: calc(var(--grid-square) * var(--cube-squares));--cube-width: calc(var(--grid-square) * var(--cube-squares-wide));--cube-col: var(--cube-column, 4);--cube-x: calc(var(--grid-square) * var(--cube-col));--cube-room: round( down, 100vw - var(--cube-x) - var(--grid-cell) * 2, var(--grid-cell) * 2 );--cube-open-width: min( calc(var(--grid-square) * var(--cube-open-squares-wide)), var(--cube-room) );--cube-open-height: round( up, max( var(--grid-square) * var(--cube-open-squares-tall), var(--cube-spec-bottom, 0px) + var(--space-xl) ), var(--grid-cell) );--heading-gap: 8px;position:absolute;font-family:Fragment Mono,monospace;top:calc(var(--grid-square) * var(--cube-row, 2));left:var(--cube-x);z-index:5;width:var(--cube-width);height:var(--cube-height);pointer-events:auto;transition:translate .3s .3s ease-in-out,opacity .3s .3s ease-in-out}.project-cube--right{--cube-x: calc( round(down, 100vw, var(--grid-cell) * 2) - var(--grid-square) * var(--cube-col) - var(--cube-width) );--cube-room: round( down, var(--cube-x) + var(--cube-width) - var(--grid-cell) * 2, var(--grid-cell) * 2 )}.project-cube--center{--cube-x: round( calc((round(down, 100vw, var(--grid-square)) - var(--cube-width)) / 2), var(--grid-square) )}.project-cube--open{z-index:6}.project-cube--hidden{opacity:0;pointer-events:none}.project-cube--pushed{transition:translate .3s ease-in-out,opacity .3s ease-in-out}.project-cube--open.project-cube--pushed{transition:translate .3s .3s ease-in-out}.project-cube__sizer-clip{position:absolute;top:0;left:0;width:0;height:0;overflow:hidden}.project-cube__sizer{position:absolute;top:0;left:0;width:var(--cube-open-width);height:var(--cube-open-height);visibility:hidden;pointer-events:none}.project-cube--right .project-cube__sizer{right:0;left:auto}.project-cube__box{position:absolute;top:0;left:0;display:flex;align-items:flex-start;width:var(--cube-width);height:var(--cube-height);z-index:1;overflow:hidden;background:var(--cube-background, var(--color-surface-glass));text-decoration:none;animation:project-cube-appear 0s var(--cube-delay, 0ms) both;transition:width .3s .3s ease-in-out,height .3s ease-in-out}.project-cube--right .project-cube__box{right:0;left:auto;justify-content:flex-end}.project-cube__box--open{width:var(--cube-open-width);height:var(--cube-open-height);transition:width .3s ease-in-out,height .3s .3s ease-in-out}.project-cube__heading{position:absolute;z-index:0;color:var(--cube-heading, var(--cube-accent));font-family:Fragment Mono,monospace;font-size:1.25rem;line-height:1;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity 0s,translate 0s}.project-cube__box--open~.project-cube__heading{opacity:1;translate:0 0;transition:opacity 0s .6s,translate .35s .6s cubic-bezier(.22,1,.36,1)}.project-cube__heading--top{bottom:calc(100% + var(--heading-gap));left:0;translate:0 calc(100% + var(--heading-gap))}.project-cube--right .project-cube__heading--top{left:calc(var(--cube-width) - var(--cube-open-width))}.project-cube__heading--date{top:var(--heading-gap);left:calc(var(--cube-open-width) + var(--heading-gap));writing-mode:vertical-rl;translate:calc(-100% - var(--heading-gap)) 0}.project-cube--right .project-cube__heading--date{left:calc(100% + var(--heading-gap))}.project-cube__heading--id{right:calc(100% + var(--heading-gap));bottom:var(--heading-gap);writing-mode:vertical-rl;rotate:180deg;opacity:1;animation:project-cube-id-reveal .45s calc(1.3s + var(--cube-delay, 0ms)) cubic-bezier(.22,1,.36,1) both;transition:bottom .3s ease-in-out}.project-cube__box--open~.project-cube__heading--id{bottom:calc(var(--cube-height) - var(--cube-open-height) + var(--heading-gap));transition:bottom .3s .3s ease-in-out}.project-cube--right .project-cube__heading--id{transition:bottom .3s ease-in-out,right .3s .3s ease-in-out}.project-cube--right .project-cube__box--open~.project-cube__heading--id{right:calc(var(--cube-open-width) + var(--heading-gap));transition:bottom .3s .3s ease-in-out,right .3s ease-in-out}.project-cube__box:before{content:"";position:absolute;inset:0;z-index:1;background:var(--cube-flicker, var(--cube-accent));opacity:0;animation:led-flicker 1s var(--cube-delay, 0ms);pointer-events:none}.project-cube__box:after{content:"";position:absolute;inset:0;z-index:3;padding:2px;background:var(--cube-rim, var(--cube-flicker, var(--cube-accent)));mask:radial-gradient(circle 16rem at var(--glow-x, 50%) var(--glow-y, 50%),#000,rgb(0 0 0 / .15)) intersect,linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);opacity:0;pointer-events:none;transition:opacity .15s ease}.project-cube__box--open:after{opacity:var(--glow-strength, 0)}.project-cube__content{display:contents}.project-cube--right .project-cube__content{display:flex;flex:none;flex-direction:column;align-items:flex-start;width:var(--cube-open-width)}.project-cube__logo{display:block;flex:none}.project-cube__logo img{display:block;flex:none;height:var(--cube-logo-height);margin:calc((var(--cube-height) - var(--cube-logo-height)) / 2) 0 0 calc(var(--cube-width) * var(--cube-logo-inset));animation:project-cube-appear 0s calc(1s + var(--cube-delay, 0ms)) both}.project-cube__media{display:flex;flex:none;align-items:center;justify-content:center;width:var(--cube-width);height:var(--cube-height);animation:project-cube-appear 0s calc(1s + var(--cube-delay, 0ms)) both}.project-cube--right .project-cube__logo,.project-cube--right .project-cube__media{align-self:flex-end}.project-cube__spec{position:absolute;top:calc(var(--cube-height) - var(--space-xl));left:var(--space-lg);width:calc(var(--cube-open-width) - var(--space-lg) * 2);display:grid;grid-template-columns:max-content minmax(0,40rem);column-gap:var(--space-lg);row-gap:var(--space-xs);align-items:baseline;color:var(--cube-text, var(--color-text-primary));font-size:.875rem;line-height:1.3}.project-cube__label,.project-cube__tags,.generated-char{opacity:0;transition:opacity 0s}.project-cube__label{grid-column:1;justify-self:end;font-family:Fragment Mono,monospace;font-size:.75rem}.project-cube__value{grid-column:2}.project-cube__value--mono{font-family:Fragment Mono,monospace}.project-cube__tags{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.project-cube__spec .tag{padding:2px 10px;font-family:inherit;font-size:.95rem}.project-cube--filled .project-cube__spec .tag{background:var(--color-text-primary);color:#fff}.project-cube__links{position:absolute;top:56px;left:calc(var(--cube-width) + var(--grid-cell) * 10);display:flex;flex-direction:column;gap:var(--space-xs);opacity:0;transition:opacity 0s}.project-cube--right .project-cube__links{left:calc(var(--space-lg) + var(--cube-label-column, 0px))}.project-cube__links a{display:flex;align-items:center;gap:var(--space-sm);color:var(--cube-accent);font-size:1.25rem;text-decoration:none}.project-cube__links--small a{font-size:1.05rem}.project-cube__links a:hover{text-decoration:underline}.project-cube__arrow{flex:none;fill:none;stroke:currentColor;stroke-width:1.25}.project-cube__box--open .project-cube__links{opacity:1;transition:opacity .25s .85s ease}.project-cube__spec a{color:inherit;text-decoration:underline}.project-cube__spec a:hover{color:var(--cube-accent)}.project-cube__gap{margin-top:1.25em}.project-cube__gap-sm{margin-top:.75em}.project-cube__box--open .project-cube__label{opacity:1;transition:opacity .2s .6s ease}.project-cube__box--open .project-cube__tags{opacity:1;transition:opacity .25s .85s ease}.project-cube__box--open .generated-char{opacity:1;transition:opacity 0s calc(.85s + var(--char) * 8ms)}@keyframes led-flicker{0%,to{opacity:1;filter:brightness(1.2)}23%{opacity:.3}25%{opacity:.8}35%{opacity:.1}42%{opacity:1}56%{opacity:.4}65%{opacity:.9}72%{opacity:.2}81%{opacity:1}}@keyframes project-cube-id-reveal{0%{opacity:0;translate:calc(100% + var(--heading-gap)) 0}1%{opacity:1;translate:calc(100% + var(--heading-gap)) 0}}@keyframes project-cube-appear{0%{opacity:0}}@media(min-width:744px)and (pointer:coarse)and (max-height:500px){.project-cubes{clip-path:inset(var(--home-surface-top) 0 0)}}@media(prefers-reduced-motion:reduce){.project-cube__box:before{display:none}.project-cube__box:after{transition:none}.project-cube__box,.project-cube__logo img,.project-cube__media,.project-cube__heading--id{animation:none}.project-cube,.project-cube--pushed,.project-cube__box,.project-cube__box--open,.project-cube__heading,.project-cube__box--open~.project-cube__heading,.project-cube__box--open~.project-cube__heading--id,.project-cube--right .project-cube__heading--id,.project-cube--right .project-cube__box--open~.project-cube__heading--id,.project-cube__label,.project-cube__tags,.generated-char,.project-cube__box--open .project-cube__label,.project-cube__box--open .project-cube__tags,.project-cube__box--open .generated-char,.project-cube__links,.project-cube__box--open .project-cube__links{transition:none}}@media(min-width:744px)and (max-width:1427px),(min-width:744px)and (max-width:1366px)and (pointer:coarse){.project-cube{--cube-squares-wide: var(--cube-ipad-squares-wide, 2);--cube-col: calc(var(--cube-column, 4) - 2);--cube-open-height: round( up, max(var(--cube-height), var(--cube-content-height, var(--cube-height))), var(--grid-cell) )}.project-cube__content{display:flex;flex:none;flex-direction:column;align-items:flex-start;width:var(--cube-open-width)}.project-cube--left .project-cube__links{right:var(--space-lg);left:auto}.project-cube__spec{position:static;margin:var(--space-md) var(--space-lg) 2rem}}@media(min-width:744px)and (max-width:1007px){.project-cube{--cube-squares-wide: 2;--cube-col: calc(var(--cube-column, 4) - 3)}.project-cube--dropped{top:calc(var(--grid-square) * (var(--cube-row, 2) + 3))}.project-cubes__end{top:calc(var(--grid-square) * (var(--cubes-end-row) + 3) + var(--grid-cell))}}@media(max-width:743px){.project-cubes{position:static;height:auto;overflow:visible;pointer-events:auto}.project-cubes__end{display:none}.project-cube{--cube-open-width: round( down, 100vw - var(--grid-cell) * 4, var(--grid-cell) * 2 );--cube-squares-wide: 3;--cube-gap-squares: 1;--cube-width: min( calc(var(--grid-square) * var(--cube-squares-wide)), var(--cube-open-width) );--cube-logo-height: calc(40px * var(--cube-logo-scale, 1));--cube-logo-inset: .25;--cube-open-height: round( up, max(var(--cube-height), var(--cube-content-height, var(--cube-height))), var(--grid-square) );position:relative;top:auto;left:auto;height:auto;margin:calc(var(--grid-square) - var(--home-surface-top)) 0 0 calc(var(--grid-x) - var(--home-surface-side))}.project-cube--right{display:flex;justify-content:flex-end;margin-right:0;margin-left:calc(var(--grid-x) - var(--home-surface-side) + var(--cube-open-width) - var(--cube-width))}.project-cube+.project-cube{margin-top:calc(var(--grid-square) * var(--cube-gap-squares))}.project-cube__box,.project-cube--right .project-cube__box{position:relative;flex:none}.project-cube__content{display:flex;flex:none;flex-direction:column;align-items:flex-start;width:var(--cube-open-width)}.project-cube__heading--id,.project-cube__box--open~.project-cube__heading--id{bottom:var(--heading-gap)}.project-cube__logo--centre-phone{width:var(--cube-width)}.project-cube__logo--centre-phone img{margin-right:auto;margin-left:auto}.project-cube__links{position:static;margin:var(--space-xl) var(--space-lg) 0}.project-cube__spec{position:static;grid-template-columns:minmax(0,1fr);row-gap:var(--space-sm);margin:var(--space-lg)}.project-cube__label{justify-self:start;margin-top:1.25em}.project-cube__value{grid-column:1}.project-cube__value.project-cube__gap,.project-cube__value.project-cube__gap-sm{margin-top:0}}@media(max-width:399px){.project-cube{--cube-open-width: round( down, 100vw - var(--grid-cell) * 4, var(--grid-cell) )}}.gift-cube-focus.focus-animation{--focus-display-scale: .12;margin:0}.project-cube--filled .project-cube__box{--filled-grid-major: color-mix(in srgb, #d6d6d6 35%, transparent);--filled-grid-minor: color-mix(in srgb, #d6d6d6 12%, transparent);--filled-grid-origin: calc(var(--grid-x) + var(--cube-grid-x, 0px)) var(--cube-grid-y, 0px);background:linear-gradient(var(--filled-grid-major) 1px,transparent 1px) var(--filled-grid-origin) / var(--grid-square) var(--grid-square),linear-gradient(90deg,var(--filled-grid-major) 1px,transparent 1px) var(--filled-grid-origin) / var(--grid-square) var(--grid-square),linear-gradient(var(--filled-grid-minor) 1px,transparent 1px) var(--filled-grid-origin) / var(--grid-cell) var(--grid-cell),linear-gradient(90deg,var(--filled-grid-minor) 1px,transparent 1px) var(--filled-grid-origin) / var(--grid-cell) var(--grid-cell),var(--cube-background)}.focus-animation{--focus-stack-size: 1155px;--focus-display-scale: .18;display:flex;justify-content:center;margin-block-start:var(--space-margin-sm);pointer-events:none;width:100%}.focus-animation__layout-wrap{align-items:center;display:flex;height:calc(var(--focus-stack-size) * var(--focus-display-scale));justify-content:center;width:calc(var(--focus-stack-size) * var(--focus-display-scale))}.focus-animation__viewport{flex-shrink:0;height:var(--focus-stack-size);position:relative;transform:scale(var(--focus-display-scale));transform-origin:center center;width:var(--focus-stack-size)}.focus-animation__stack{height:100%;inset:0;position:absolute;width:100%}.focus-animation__layer{display:block;left:50%;position:absolute;top:50%}.focus-animation__layer--outer{animation:focus-rotate-outer 28s linear infinite;height:1155px;transform:translate(-50%,-50%);width:1155px}.focus-animation__layer--inner{animation:focus-rotate-inner 22s linear infinite;height:733px;transform:translate(-50%,-50%);width:733px}.focus-animation__layer--focus{height:1012px;transform:translate(-50%,-50%);width:1013px}@keyframes focus-rotate-outer{0%{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}@keyframes focus-rotate-inner{0%{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(-360deg)}}@media(prefers-reduced-motion:reduce){.focus-animation__layer--outer,.focus-animation__layer--inner{animation:none}}.wake-sun{width:75%;overflow:visible;translate:0 12%}.wake-sun__ripple{animation:wake-sun-ripple 2.4s steps(1,end) var(--ripple-delay, 0ms) infinite}.wake-sun__sparkle{animation:wake-sun-sparkle 4.8s steps(1,end) var(--ripple-delay, 0ms) infinite}@keyframes wake-sun-ripple{0%,50%,to{transform:none}25%{transform:translate(4px)}75%{transform:translate(-4px)}}@keyframes wake-sun-sparkle{0%,to{opacity:0}10%,25%{opacity:1}35%{opacity:0}}@media(prefers-reduced-motion:reduce){.wake-sun__ripple,.wake-sun__sparkle{animation:none}}
