@import "https://fonts.googleapis.com/css2?family=Merriweather:wght@700;900&family=Work+Sans:wght@400;500;600&display=swap";:root{--color-text:#141414;--color-background:#fff6e5;--color-primary:#e8452c;--color-secondary:#2451d6;--color-accent:#ffc93c;--color-danger:#e8452c;--font-display:"Merriweather", Georgia, serif;--font-body:"Work Sans", system-ui, sans-serif;--border:2px solid var(--color-text);--radius:6px;--shadow:5px 5px 0 var(--color-text);--shadow-lg:8px 8px 0 var(--color-text);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:72px;--container:1120px}*{box-sizing:border-box}body{background:var(--color-background);color:var(--color-text);font:400 16px/1.55 var(--font-body);margin:0}img{max-width:100%;display:block}a{color:var(--color-text);text-decoration:none}a:hover{color:var(--color-primary)}:focus-visible{outline:3px solid var(--color-secondary);outline-offset:2px}h1,h2,h3,h4{font-family:var(--font-display);text-wrap:pretty;margin:0;font-weight:900;line-height:1.15}p{text-wrap:pretty;margin:0}.container{max-width:var(--container);padding:0 var(--space-5);margin:0 auto}.section{padding:var(--space-8) 0;border-top:var(--border)}.section--background{background:var(--color-background)}.section--accent{background:var(--color-accent)}.section--secondary{background:var(--color-secondary)}.section--secondary .section-title{color:var(--color-background)}.section--text{background:var(--color-text);color:var(--color-background)}.section-title{margin-bottom:var(--space-6);font-size:clamp(28px,4vw,40px)}.btn{align-items:center;gap:var(--space-2);font:600 14px/1 var(--font-body);border:var(--border);border-radius:var(--radius);background:var(--color-background);color:var(--color-text);cursor:pointer;padding:12px 20px;transition:transform .12s,box-shadow .12s;display:inline-flex}.btn:hover{box-shadow:3px 3px 0 var(--color-text);color:var(--color-text);transform:translate(-2px,-2px)}.btn:active{box-shadow:none;transform:translate(1px,1px)}.btn--accent{background:var(--color-accent)}.btn--primary{background:var(--color-primary);color:var(--color-background)}.btn--primary:hover{color:var(--color-background)}.btn--secondary{background:var(--color-secondary);color:var(--color-background)}.btn--secondary:hover{color:var(--color-background)}.btn--sm{padding:8px 14px;font-size:13px}.btn:disabled{opacity:.45;pointer-events:none}.icon-btn{width:40px;height:40px;color:inherit;cursor:pointer;background:0 0;border:2px solid;border-radius:50%;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--color-accent);color:var(--color-text);border-color:var(--color-accent)}.icon-btn svg{width:18px;height:18px}.tag{font:600 11px/1 var(--font-body);letter-spacing:.02em;border:1.5px solid var(--color-text);border-radius:var(--radius);background:var(--color-background);color:var(--color-text);align-self:flex-start;padding:5px 8px;display:inline-block}.tag--primary{background:var(--color-primary);color:var(--color-background)}.tag--secondary{background:var(--color-secondary);color:var(--color-background)}.tag--accent{background:var(--color-accent)}.tag-link{white-space:nowrap;cursor:pointer;min-height:36px;font-size:12px;font-family:var(--font-body);border-width:2px;border-radius:0;flex:none;align-items:center;gap:6px;padding:8px 12px;transition:transform .12s,box-shadow .12s,background .12s;display:inline-flex}.tag-link:hover{background:var(--color-accent);color:var(--color-text);box-shadow:3px 3px 0 var(--color-text);transform:translate(-2px,-2px)}.tag-link:active{box-shadow:none;transform:none}.tabs{gap:var(--space-1);border-bottom:var(--border);flex-wrap:wrap;display:flex}.tab{font:500 14px/1 var(--font-body);color:var(--color-text);cursor:pointer;background:0 0;border:0;border-bottom:4px solid #0000;margin-bottom:-2px;padding:12px 16px}.tab:hover{border-bottom-color:var(--color-accent)}.tab[aria-selected=true]{border-bottom-color:var(--color-primary);font-weight:600}.search{align-items:center;gap:var(--space-2);border:var(--border);border-radius:var(--radius);background:var(--color-background);min-width:240px;padding:0 12px;display:flex}.search svg{flex:none;width:16px;height:16px}.search input{font:400 14px var(--font-body);color:var(--color-text);background:0 0;border:0;outline:none;flex:1;padding:11px 0}.search:focus-within{box-shadow:3px 3px 0 var(--color-secondary)}.ph{background:repeating-linear-gradient(135deg, color-mix(in srgb, var(--color-text) 10%, transparent) 0 2px, transparent 2px 12px), var(--color-background);border:var(--border);border-radius:var(--radius);aspect-ratio:16/10;width:100%;font:500 11px var(--font-body);color:var(--color-text);justify-content:center;align-items:center;display:flex}.ph img{object-fit:cover;border-radius:calc(var(--radius) - 2px);width:100%;height:100%}.card{background:var(--color-background);border:var(--border);border-radius:var(--radius);padding:var(--space-4);gap:var(--space-3);flex-direction:column;transition:transform .15s,box-shadow .15s;display:flex}a.card:hover,.card.is-raised{box-shadow:var(--shadow);color:var(--color-text);transform:translate(-3px,-3px)}.card-title{font:700 17px/1.35 var(--font-display)}.card-excerpt{color:color-mix(in srgb, var(--color-text) 80%, var(--color-background));font-size:14px}.clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.card--feature .card-title{font-size:22px}.card--feature .ph{aspect-ratio:16/9.5}.card-row{gap:var(--space-4);grid-template-columns:42% 1fr;align-items:start;display:grid}.card-row .ph{aspect-ratio:3/2}.card-row>div{gap:var(--space-2);flex-direction:column;display:flex}.card-mini{gap:var(--space-3);grid-template-columns:72px 1fr;align-items:center;display:grid}.card-mini .ph{aspect-ratio:1}.card-mini .card-title{font-size:14px}.card-row.no-image,.card-mini.no-image{grid-template-columns:1fr}.card-mini>div{gap:var(--space-1);flex-direction:column;align-items:start;display:flex}.grid-3{gap:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.carousel{gap:var(--space-5);scroll-snap-type:x mandatory;grid-auto-columns:minmax(260px,31%);grid-auto-flow:column;padding:6px 8px 14px 0;display:grid;overflow-x:auto}.carousel>*{scroll-snap-align:start}.carousel{scrollbar-gutter:stable}.carousel::-webkit-scrollbar{height:14px}.carousel::-webkit-scrollbar-track{background:var(--color-background);border:var(--border);border-radius:var(--radius)}.carousel::-webkit-scrollbar-thumb{background:var(--color-text);border:3px solid var(--color-background);border-radius:var(--radius)}.carousel::-webkit-scrollbar-thumb:hover{background:var(--color-primary)}@supports not selector(::-webkit-scrollbar){.carousel{scrollbar-color:var(--color-text) var(--color-background);scrollbar-width:thin}}.nav{justify-content:space-between;align-items:center;gap:var(--space-5);padding:var(--space-5) 0;flex-wrap:wrap;display:flex}.nav-brand{align-items:center;gap:var(--space-2);font:900 18px var(--font-display);display:flex}.nav-brand-dot{background:var(--color-primary);border:var(--border);border-radius:50%;width:22px;height:22px}.nav-links{gap:var(--space-5);font-size:14px;font-weight:500;display:flex}.nav-links a[aria-current=page]{-webkit-text-decoration:underline 3px var(--color-accent);text-decoration:underline 3px var(--color-accent);text-underline-offset:6px}.cta{background:var(--color-primary);color:var(--color-background);border:var(--border);border-radius:var(--radius);box-shadow:10px 10px 0 var(--color-accent);padding:var(--space-8) var(--space-6);text-align:center;align-items:center;gap:var(--space-4);flex-direction:column;display:flex;position:relative}.cta h2{height:auto;margin:0;font-size:clamp(28px,4.5vw,48px);line-height:1.15}.cta p{max-width:460px}.footer{background:var(--color-text);color:var(--color-background);padding:var(--space-8) 0 var(--space-5);text-align:center}.footer a{color:var(--color-background)}.footer a:hover{color:var(--color-accent)}.footer-inner{align-items:center;gap:var(--space-5);flex-direction:column;display:flex}.footer .nav-brand-dot{border-color:var(--color-background)}.footer-links,.footer-social{gap:var(--space-5);flex-wrap:wrap;justify-content:center;font-size:14px;display:flex}.footer-social{gap:var(--space-3)}.footer-copy{border-top:1px solid color-mix(in srgb, var(--color-background) 25%, transparent);padding-top:var(--space-5);width:100%;font-size:13px}.hidden{display:none!important}.tag-go{cursor:pointer;z-index:1;transition:background .12s;position:relative}.tag-go:hover{background:var(--color-accent);color:var(--color-text)}@media (width<=760px){.container{padding:0 var(--space-4)}}.menu-btn[data-v-8305bbcd]{display:none}.nav-pinned[data-v-8305bbcd]{text-overflow:ellipsis;white-space:nowrap;max-width:150px;overflow:hidden}@media (width>=761px){.nav-links[data-v-8305bbcd]{justify-content:center;row-gap:var(--space-1);flex-wrap:wrap;flex:1 1 0;min-width:0}.nav-links.has-pins[data-v-8305bbcd]{column-gap:var(--space-4)}.nav-links.has-pins .nav-pinned[data-v-8305bbcd]{max-width:130px}}.user-btn[data-v-8305bbcd]{text-overflow:ellipsis;white-space:nowrap;max-width:160px;display:inline-block;overflow:hidden}@media (width<=760px){.menu-btn[data-v-8305bbcd]{display:inline-grid}.nav[data-v-8305bbcd]{padding:var(--space-4) 0}.nav-links[data-v-8305bbcd]{border-top:var(--border);flex-direction:column;gap:0;width:100%;display:none}.nav-links a[data-v-8305bbcd]{border-bottom:var(--border);font:900 22px var(--font-display);padding:14px 0}.nav-links.is-open[data-v-8305bbcd]{display:flex}}.hero{gap:var(--space-6);padding:var(--space-7) 0 var(--space-6);grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:end;display:grid}.hero h1{font-size:clamp(36px,6vw,60px)}.toolbar{gap:var(--space-6);margin-bottom:var(--space-6);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:end;display:grid}.toolbar .search{width:100%;min-width:0}.toolbar .tabs{scrollbar-width:none;flex-wrap:nowrap;overflow-x:auto}.toolbar .tabs::-webkit-scrollbar{display:none}.toolbar .tab{white-space:nowrap;flex:none}.tabs-wrap{min-width:0;position:relative}.tabs-edge{cursor:w-resize;z-index:1;background:0 0;width:56px;position:absolute;top:0;bottom:2px}.tabs-edge[data-dir="-1"]{left:0}.tabs-edge[data-dir="1"]{cursor:e-resize;right:0}.tabs-edge.is-off{display:none}@media (hover:none){.tabs-edge{display:none}}.split{gap:var(--space-6);grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}.stack{gap:var(--space-5);flex-direction:column;display:flex}.project{gap:var(--space-5);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;display:grid}.project-image{aspect-ratio:4/3}.project-body{gap:var(--space-3);flex-direction:column;align-items:flex-start;display:flex}.project-body .card-title{font-size:24px}.tag-cloud{gap:var(--space-3);flex-wrap:wrap;display:flex}.head-row{margin-bottom:var(--space-6);justify-content:space-between;align-items:center;display:flex}.head-row .section-title{margin:0}.arrows{gap:var(--space-2);display:flex}.rail,.sheet{display:none}@media (width<=760px){body.has-rail{padding-bottom:58px}.hero,.split{gap:var(--space-4);grid-template-columns:1fr}.hero{padding:var(--space-5) 0}.hero h1{font-size:42px}.toolbar{display:none}.section{padding:0 0 var(--space-7)}.section-title,.head-row{z-index:2;background:var(--c,var(--color-background));margin:0 calc(var(--space-4) * -1) var(--space-5);padding:var(--space-4);border-bottom:var(--border);position:sticky;top:0}.section>.container>.section-title,.head-row .section-title{font-size:28px}.head-row .section-title{border:0;margin:0;padding:0;position:static}.section--accent,.section--secondary{background:var(--c)}.section--accent{--c:var(--color-accent)}.section--secondary{--c:var(--color-secondary)}.section--background{--c:var(--color-background)}.section--text{--c:var(--color-text)}main>section:first-child{--c:var(--page,var(--color-background))}.carousel{margin-right:calc(var(--space-4) * -1);grid-auto-columns:82%}#featured-side{counter-reset:n;gap:0}#featured-side .card-row{counter-increment:n;padding:var(--space-4) 0;border-top:var(--border);grid-template-columns:44px 1fr}#featured-side .card-row:before{content:counter(n, decimal-leading-zero);font:900 28px/1 var(--font-display);color:var(--accent,var(--color-primary));-webkit-text-stroke:1px var(--color-text)}.nav-brand-dot,.cta{background:var(--accent,var(--color-primary));transition:background .3s}.cta{color:var(--accent-ink,var(--color-text))}main>section:first-child a:not(.card),#featured-side .card-excerpt{color:inherit}#featured-main .card{box-shadow:5px 5px 0 var(--accent,var(--color-text))}#featured-side .card-row .ph,#featured-side .card-excerpt{display:none}#featured-side .card-row.is-open .ph,#featured-side .card-row.is-open .card-excerpt{display:flex}#featured-side .card-row.is-open .card-excerpt{display:-webkit-box}#featured-side .card-row.is-open .card-title{-webkit-line-clamp:unset}#featured-side .card-row.is-open:before{color:var(--color-text)}main>section+section{box-shadow:0 -6px 0 var(--color-text);position:relative}main>section:first-child{background:var(--page,var(--color-background));color:var(--page-ink,var(--color-text));transition:background .3s,color .3s}.project{gap:var(--space-4);grid-template-columns:1fr}.cta{padding:var(--space-7) var(--space-5);text-align:left;box-shadow:6px 6px 0 var(--color-accent);align-items:flex-start}.rail{z-index:10;background:var(--color-text);border-top:var(--border);box-shadow:none;border-radius:0;align-items:center;gap:4px;padding:6px;display:flex;position:fixed;bottom:0;left:0;right:0}.rail-tabs{scrollbar-width:none;flex:1;gap:4px;display:flex;overflow-x:auto}.rail .tab{color:var(--color-background);white-space:nowrap;border:0;border-radius:0;flex:none;min-height:44px;margin:0;padding:0 16px}.rail .tab[aria-selected=true]{background:var(--accent,var(--color-accent));color:var(--color-text)}.rail .icon-btn{width:44px;height:44px;color:var(--color-text);background:var(--color-accent);border-color:var(--color-accent);border-radius:0;flex:none}.sheet.is-open{gap:var(--space-4);z-index:20;background:var(--color-background);padding:var(--space-4);flex-direction:column;display:flex;position:fixed;inset:0;overflow-y:auto}.sheet .search{min-width:0}.sheet .search input{padding:14px 0;font-size:18px}#search-results{gap:var(--space-4);flex-direction:column;display:flex}}html:has(body.has-room){background:var(--color-background)}body.has-room{background:0 0;position:relative}.room{--dx:40px;--dy:40px;--skew:-4deg;--stretch:1;--blur:3px;--soft:14px;--op:.18;--wash-x:60%;--warm:.1;--dim:0;--left-shade:.08;--ceil:5vh;--cx:5vw;--wall:color-mix(in srgb, var(--color-background) 82%, #d9cfc0);z-index:-1;pointer-events:none;background:var(--wall);height:100vh;position:absolute;top:0;left:0;right:0;overflow:hidden}.room-ceiling{height:var(--ceil);background:linear-gradient(to bottom, color-mix(in srgb, var(--wall) 70%, #fff), color-mix(in srgb, var(--wall) 92%, #fff));position:absolute;inset:0 0 auto}.room-left{width:var(--cx);clip-path:polygon(0 0, 100% var(--ceil), 100% calc(100% - 2vh), 0 100%);background:linear-gradient(to right, color-mix(in srgb, var(--wall) 94%, var(--color-text)), color-mix(in srgb, var(--wall) 97%, var(--color-text)));position:absolute;top:0;bottom:0;left:0;overflow:hidden}.room-left:after{content:"";background:var(--color-text);opacity:calc(var(--left-shade) * .5);position:absolute;inset:0}.room-back{left:var(--cx);right:0;top:var(--ceil);position:absolute;bottom:0;overflow:hidden}.room-light{background:radial-gradient(120% 90% at var(--wash-x) 0%, rgb(255 236 200/var(--warm)), transparent 70%), linear-gradient(to bottom, transparent 60%, #0000000d);position:absolute;inset:0}.room-back:after,.room-left .room-light:after{content:"";opacity:var(--dim);background:#1b2233;position:absolute;inset:0}.room-base{background:color-mix(in srgb, var(--wall) 85%, #fff);border-top:1px solid #0000000f;height:2.2vh;position:absolute;bottom:0;left:0;right:0}.room-corner{left:var(--cx);top:var(--ceil);background:linear-gradient(#0000001f,#0000000d);width:1px;position:absolute;bottom:0}.room:before{content:"";left:0;right:0;top:var(--ceil);height:1px;clip-path:inset(0 0 0 var(--cx));background:#00000014;position:absolute}.hang{height:70vh;position:absolute;top:0}.hang.h1{width:26px;left:6vw}.hang.h2{width:16px;height:62vh;left:14vw}.hang .wire{background:#3c37328c;width:1px;height:22vh;position:absolute;top:0;left:50%}.hang .obj{clip-path:polygon(10% 0,90% 2%,100% 18%,80% 34%,96% 52%,72% 70%,88% 86%,60% 100%,22% 98%,0 80%,18% 62%,4% 44%,20% 28%,0 12%);position:absolute;inset:22vh 0 0}.hang.h2 .obj{clip-path:polygon(0 0,100% 1%,96% 100%,6% 99%);top:20vh}.hang.real .obj{background:linear-gradient(to right, color-mix(in srgb, var(--wall) 60%, #fff), color-mix(in srgb, var(--wall) 92%, var(--color-text)));box-shadow:inset 0 0 0 1px #0000000d}.hang.real .obj:after{content:"";background:repeating-linear-gradient(170deg,#0000 0 9px,#0000000f 9px 10px);position:absolute;inset:0}.shade{position:absolute;inset:0}.room-back .shade{left:calc(var(--cx) * -1);top:calc(var(--ceil) * -1)}.shade .hang{transform-origin:50% var(--ceil);transform:translate(var(--dx), var(--dy)) skewX(var(--skew)) scaleY(var(--stretch))}.shade .wire,.shade .obj{background:var(--color-text)}.shade .obj{opacity:var(--op);filter:blur(var(--blur))}.shade .wire{opacity:calc(var(--op) * .4);filter:blur(2px)}.shade .obj:before{content:""}.shade .hang:after{content:"";background:var(--color-text);opacity:calc(var(--op) * .45);filter:blur(var(--soft));position:absolute;inset:20vh -24px -40px}.shade-left{transform-origin:100%;transform:perspective(600px)rotateY(28deg)}body.has-room .section--background{background:0 0}body.has-room .card{background:color-mix(in srgb, var(--color-background) 60%, transparent)}.hang.real.h1{transform-origin:50% 0;transform:rotate(var(--sway-1,0deg))}.hang.real.h2{transform-origin:50% 0;transform:rotate(var(--sway-2,0deg))}.shade .hang.h1{transform:translate(var(--dx), var(--dy)) skewX(var(--skew)) scaleY(var(--stretch)) rotate(var(--sway-1,0deg))}.shade .hang.h2{transform:translate(var(--dx), var(--dy)) skewX(var(--skew)) scaleY(var(--stretch)) rotate(var(--sway-2,0deg))}.room .hang,.room .shade .hang{will-change:transform}.hang.fig.h1,.hang.fig.h2{width:clamp(80px,9vw,160px);height:auto}.hang.fig .obj{clip-path:none;box-shadow:none;background:0 0;top:22vh;bottom:auto}.hang.fig .obj:after{display:none}.hang.fig .obj svg{width:100%;height:auto;display:block;overflow:visible}.hang.real.fig .obj svg :is(path,polygon,circle,ellipse,rect,g){fill:color-mix(in srgb, var(--wall) 60%, #fff);stroke:color-mix(in srgb, var(--color-text) 35%, transparent);stroke-width:.8px;stroke-linejoin:round}.shade .hang.fig .obj svg :is(path,polygon,circle,ellipse,rect,g){fill:var(--color-text);stroke:none}.shade .hang.fig:after{display:none}
