:root{--gal-color-paper:#fff;--gal-color-ink:#000;--gal-color-panel:#111;--gal-color-panel-text:#f5f5f5;--gal-color-error:#c00;--gal-paper-rgb:255,255,255;--gal-ink-rgb:0,0,0;--gal-font-ui:"JetBrains Mono",monospace;--gal-tracking-ui:0.02em;--gal-text-display:clamp(0.625rem,2vw,1.25rem);--gal-text-title:1rem;--gal-text-card-title:0.75rem;--gal-text-card-body:0.7rem;--gal-text-body:0.8rem;--gal-text-info:0.65rem;--gal-text-message:0.9rem;--gal-space-4:0.25rem;--gal-space-8:0.5rem;--gal-space-16:1rem;--gal-space-24:1.5rem;--gal-space-32:2rem;--gal-space-40:2.5rem;--gal-space-64:4rem;--gal-radius-sm:4px;--gal-transition-base:0.2s ease}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;overflow:hidden}body,html{height:100%}body{background:#fff;color:#111;font-family:JetBrains Mono,monospace;line-height:1.5;margin:0;overflow-x:hidden;overflow:hidden}#root{height:100%}::selection{background:#111;color:#fff}::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-track{background:#f0f0f0}::-webkit-scrollbar-thumb{background:#999;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#666}.app{display:flex;flex-direction:column;height:100%}.app,.ascii-viewport{background:#fff;overflow:hidden;position:relative}.ascii-viewport{cursor:grab;flex:1 1;touch-action:none;-webkit-user-select:none;user-select:none;width:100%}.ascii-viewport:active{cursor:grabbing}.pan-debug{background:#ffffffd9;color:#e10600;font-family:JetBrains Mono,monospace;font-size:.6rem;left:.5rem;letter-spacing:.02em;padding:.2rem .4rem;pointer-events:none;position:absolute;top:.5rem;z-index:50}.ascii-canvas{left:0;position:absolute;top:0;transform-origin:0 0;will-change:transform}.ascii-field{display:block;width:-webkit-max-content;width:max-content}.cards-layer{inset:0;pointer-events:none;position:absolute}.cards-layer>*{pointer-events:auto}.cards-layer-projects-hidden .project-card{visibility:hidden}.app-status-floating{background:#ffffffd9;border-radius:4px;left:50%;padding:.25rem .75rem;position:absolute;top:1rem;transform:translateX(-50%);z-index:50}.banner{background:#111;flex-shrink:0;gap:1rem;justify-content:space-between;padding:.75rem 1.5rem;position:relative;width:100%;z-index:11}.banner,.banner-brand{align-items:center;display:flex}.banner-brand{gap:0;min-width:0}.banner-logo-divider,.header-logo-divider{align-self:center;background:currentColor;display:block;flex-shrink:0;opacity:.35;width:1px}.banner-logo{display:block;width:auto}.banner-title{color:#fff;font-family:JetBrains Mono,monospace;font-size:clamp(.625rem,2vw,1.25rem);font-weight:500;letter-spacing:.02em;line-height:1.2;margin:0}.banner-nav{align-items:center;display:flex;gap:1rem}.banner-nav-item{background:none;border:none;color:#ffffffd9;cursor:pointer;font-family:JetBrains Mono,monospace;font-size:clamp(.5rem,1.5vw,.9rem);font-weight:400;letter-spacing:.02em;line-height:1.2;padding:.25rem .5rem}.banner-nav-item:hover{color:#fff}.banner-nav-wrap{position:relative}.banner-nav-caret{font-size:.7em;opacity:.7}.banner-dropdown{background:#1a1a1a;border:1px solid #ffffff26;border-radius:6px;box-shadow:0 8px 24px #0006;left:0;list-style:none;margin:.25rem 0 0;max-height:60vh;min-width:180px;overflow-y:auto;padding:.25rem;position:absolute;top:100%;z-index:50}.banner-dropdown--projects{min-width:240px}.banner-dropdown-row{align-items:center;border-radius:4px;display:flex;gap:.2rem;padding:.1rem .15rem}.banner-dropdown-row:hover{background:#ffffff0f}.banner-explore-check{cursor:pointer;display:grid;flex:0 0 auto;height:1.35rem;margin:0;place-items:center;width:1.35rem}.banner-explore-check input{accent-color:#fff;cursor:pointer;height:.85rem;margin:0;width:.85rem}.banner-dropdown-item{background:none;border:none;border-radius:4px;color:#ffffffd9;cursor:pointer;display:block;font-family:JetBrains Mono,monospace;font-size:.8rem;overflow:hidden;padding:.4rem .6rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.banner-dropdown-item--grow{flex:1 1;min-width:0;padding-left:.25rem;padding-right:.25rem}.banner-dropdown-item:hover{background:#ffffff1a;color:#fff}.banner-dropdown-row .banner-dropdown-item:hover{background:#0000}.banner-center-dot{background:#ffffff73;border:0;border-radius:50%;cursor:pointer;flex:0 0 auto;height:.55rem;margin:0 .35rem;padding:0;width:.55rem}.banner-center-dot:focus-visible,.banner-center-dot:hover{background:#fff;box-shadow:0 0 0 3px #fff3;outline:none}.background-sequence-track{left:0;pointer-events:none;position:absolute;right:0;top:0;width:100%;z-index:0}.background-sequence-section{background-position:50%;background-repeat:no-repeat;width:100%}.p5-background{contain:layout paint;height:100%;left:0;pointer-events:none;position:absolute;right:0;top:0;width:100%;will-change:transform;z-index:0}.p5-background *{pointer-events:none!important}.app-content{box-sizing:border-box;min-height:100vh;padding:2rem 1.5rem 4rem;pointer-events:none;position:relative;width:100%;z-index:10}.app-content>*{pointer-events:auto}.app-status{color:#555;font-family:JetBrains Mono,monospace;font-size:.9rem}.app-status-error{color:#c00}.main-scroll{isolation:isolate;min-height:280vh;position:relative;width:100%;z-index:1}.main-scroll,.project-card{box-sizing:border-box;pointer-events:auto}.project-card{background:#111;border-radius:0;box-shadow:0 8px 32px #0000001f;color:#f5f5f5;cursor:grab;display:flex;flex-direction:column;overflow:hidden;padding:.5rem;position:absolute;transition:box-shadow .2s ease;z-index:2}.project-card-bleed{padding:0}.project-card-bleed-image{display:block;height:100%;inset:0;object-fit:cover;pointer-events:none;position:absolute;width:100%}.project-card-bleed .project-card-info{background:linear-gradient(0deg,#000000d1 0,#00000073 55%,#0000);bottom:0;left:0;position:absolute;right:0;z-index:1}.project-card-hover-title .project-card-info{opacity:0;transition:opacity .2s ease}.project-card-hover-title:focus-within .project-card-info,.project-card-hover-title:hover .project-card-info{opacity:1}.project-card:active{cursor:grabbing}.project-card:hover{box-shadow:0 12px 40px #0000002e}.project-card-procedural{background:#0000;box-shadow:none;display:block;overflow:visible;padding:0}.project-card-procedural.project-card-procedural-shadow,.project-card-procedural:hover{box-shadow:none}.project-card-procedural-shadow .gen-card-panel,.project-card-procedural-shadow .gen-card-photo{box-shadow:0 4px 16px #0000001a;transition:box-shadow .2s ease}.project-card-procedural-shadow:hover .gen-card-panel,.project-card-procedural-shadow:hover .gen-card-photo{box-shadow:0 6px 20px #00000026}.project-card-thumbnail-wrap{align-items:center;display:flex;flex:1 1;justify-content:center;min-height:0;padding:.25rem 0;width:100%}.project-card-thumbnail-square{aspect-ratio:1;background:#222;flex-shrink:0;max-width:100%;overflow:hidden;width:100%}.project-card-thumbnail{display:block;height:100%;object-fit:cover;object-position:center;width:100%}.project-card-info{flex-shrink:0;padding:.5rem .75rem .6rem}.project-card-title{font-family:JetBrains Mono,monospace;font-size:.75rem;font-weight:500;letter-spacing:.02em;line-height:1.2;margin-bottom:.2rem;overflow-wrap:break-word;word-break:break-word}.project-card-title-line{display:block}.project-card-meta-line{color:#ffffffb3;font-family:JetBrains Mono,monospace;font-size:.6rem}.project-card-medium,.project-card-year{font-weight:400}.project-card-meta-sep{color:#ffffff80}.project-card-desc{-webkit-line-clamp:4;-webkit-box-orient:vertical;color:#ffffffd9;display:-webkit-box;flex:1 1;font-family:JetBrains Mono,monospace;font-size:.7rem;font-weight:400;line-height:1.4;overflow:hidden}.project-card-meta{color:#fff9;font-family:JetBrains Mono,monospace;font-size:.65rem;margin-top:.5rem}.project-card-debug{bottom:.25rem;color:#e10600;font-family:JetBrains Mono,monospace;font-size:.6rem;left:.5rem;pointer-events:none;position:absolute}.gen-card{--font-card-display:"Artex",Georgia,"Times New Roman",serif;--font-card-text:"Programme","Helvetica Neue",Arial,sans-serif;font-family:var(--font-card-text);pointer-events:none;position:relative}.gen-card-panel{background:#111;background:var(--gen-card-panel,#111);overflow:hidden;position:absolute}.gen-card-panel--b{z-index:1}.gen-card-photo{background:#333;display:block;object-fit:cover;position:absolute;z-index:2}.gen-card-text{color:#f5f5f5;color:var(--gen-card-ink,#f5f5f5);display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden;padding:.5em .6em .55em;position:absolute;z-index:1}.gen-card-title{-webkit-box-orient:vertical;-webkit-line-clamp:3;display:-webkit-box;flex-shrink:0;font-family:var(--font-card-display);font-size:1em;font-weight:400;letter-spacing:.005em;line-height:1.15;margin:0;overflow:hidden}.gen-card-meta{flex-shrink:0;font-family:var(--font-card-text);font-size:.6em;font-weight:300;letter-spacing:.04em;margin:.32em 0 0}.gen-card-desc{box-sizing:border-box;color:#f5f5f5;color:var(--gen-card-ink,#f5f5f5);display:flex;padding:.5em .6em;position:absolute}.gen-card-desc p{flex:1 1;margin:0;min-height:0;overflow-y:auto;scrollbar-color:rgba(var(--gal-paper-rgb),.3) #0000;scrollbar-width:thin}.gen-card-nav{align-items:center;display:flex;position:absolute}.gen-card-nav-item{background:var(--gal-color-panel-text);border:none;box-shadow:0 0 0 1px rgba(var(--gal-ink-rgb),.2);cursor:pointer;flex:0 0 auto;padding:0;pointer-events:auto}.gen-card-nav-count{font-family:var(--font-card-text);text-shadow:0 1px 2px rgba(var(--gal-ink-rgb),.55);white-space:nowrap}.gen-card-nav-arrow,.gen-card-nav-count{color:var(--gal-color-panel-text);line-height:1}.gen-card-nav-arrow{align-items:center;background:rgba(var(--gal-ink-rgb),.55);border:none;border-radius:50%;cursor:pointer;display:flex;justify-content:center;padding:0 0 .08em;pointer-events:auto;position:absolute;transition:background var(--gal-transition-base)}.gen-card-nav-arrow:hover{background:rgba(var(--gal-ink-rgb),.85)}.project-expanded-overlay-procedural:focus{outline:none}.project-expanded-card{position:fixed;z-index:1}.project-expanded-card .gen-card-desc,.project-expanded-card .gen-card-panel,.project-expanded-card .gen-card-photo,.project-expanded-card .gen-card-text{pointer-events:auto}.project-expanded-card .gen-card-panel,.project-expanded-card .gen-card-photo{box-shadow:0 8px 28px rgba(var(--gal-ink-rgb),.18)}.project-expanded-card-close{align-items:center;background:none;border:none;bottom:100%;color:rgba(var(--gal-paper-rgb),.8);cursor:pointer;display:flex;font-size:1.5rem;height:var(--gal-space-32);justify-content:center;line-height:1;padding:0;position:absolute;right:0;transition:color var(--gal-transition-base);width:var(--gal-space-32)}.project-expanded-card-close:focus-visible,.project-expanded-card-close:hover{color:var(--gal-color-paper)}.project-expanded-overlay{align-items:center;box-sizing:border-box;display:flex;inset:0;justify-content:center;padding:2rem;position:fixed;z-index:100}.project-expanded-backdrop{background:#0009;cursor:pointer;inset:0;position:absolute}.project-expanded-panel{background:#111;border-radius:0;box-shadow:0 20px 60px #00000080;color:#f5f5f5;display:flex;flex-direction:column;max-height:90vh;max-width:90vw;overflow-x:hidden;overflow-y:auto;position:relative;z-index:1}.project-expanded-main{display:flex;flex:1 1;flex-direction:row;gap:1.5rem;min-height:0;padding:2.5rem 1.25rem 1rem}.project-expanded-left{display:flex;flex:1 1;flex-direction:column;gap:.5rem;min-width:0}.project-expanded-right{display:flex;flex:0 0 auto;flex-direction:column;min-width:0}.project-expanded-close{align-items:center;background:none;border:none;color:#fffc;cursor:pointer;display:flex;font-size:1.5rem;height:2rem;justify-content:center;line-height:1;padding:0;position:absolute;right:.75rem;top:.75rem;width:2rem;z-index:2}.project-expanded-close:hover{color:#fff}.project-expanded-header{flex-shrink:0;padding:0 1.5rem 0 1.25rem}.project-expanded-title{font-family:JetBrains Mono,monospace;font-size:1rem;font-weight:500;letter-spacing:.02em;line-height:1.2;margin:0 0 .25rem;padding-right:2rem}.project-expanded-meta{color:#ffffffb3;font-family:JetBrains Mono,monospace;font-size:.75rem}.project-expanded-meta-sep{color:#ffffff80}.team-panel{box-sizing:border-box;padding:var(--gal-space-40) var(--gal-space-24) var(--gal-space-24);width:min(960px,calc(100vw - 2rem))}.team-title{margin-bottom:var(--gal-space-16)}.team-list{display:flex;flex-direction:column;gap:var(--gal-space-32);list-style:none;margin:0;padding:0}.team-member{align-items:flex-start;display:flex;gap:var(--gal-space-24)}.team-member-photo{border-radius:0;display:block;flex:0 0 auto;height:8rem;object-fit:cover;width:8rem}.team-member-photo-empty{align-items:center;background:rgba(var(--gal-paper-rgb),.1);color:rgba(var(--gal-paper-rgb),.6);display:flex;font-family:var(--gal-font-ui);font-size:var(--gal-text-title);justify-content:center;letter-spacing:var(--gal-tracking-ui)}.team-member-info{display:flex;flex:1 1;flex-direction:column;gap:var(--gal-space-4);min-width:0}.team-member-name{font-family:JetBrains Mono,monospace;font-size:var(--gal-text-title);font-weight:500;letter-spacing:.02em;line-height:1.2}.team-member .project-expanded-meta,.team-member-bio{font-size:var(--gal-text-body)}.team-member-bio{font-family:JetBrains Mono,monospace;line-height:1.4;margin:0}.team-member-links{display:flex;gap:var(--gal-space-16)}.team-member-links a{color:inherit;transition:color var(--gal-transition-base)}.project-expanded-carousel-btn{align-items:center;background:#ffffff1a;border:none;color:#ffffffe6;cursor:pointer;display:flex;flex-shrink:0;font-size:1.5rem;height:2.5rem;justify-content:center;line-height:1;width:2.5rem}.project-expanded-carousel-btn:hover{background:#fff3;color:#fff}.project-expanded-carousel{align-items:center;box-sizing:border-box;display:flex;gap:.5rem;justify-content:center;position:relative}.project-expanded-carousel-16x9{max-width:56vh;min-width:280px;width:100%}.project-expanded-carousel-frame{align-items:center;background:#222;display:flex;flex:1 1;justify-content:center;min-height:200px;min-width:0}.project-expanded-carousel-frame-16x9{aspect-ratio:16/9;flex:1 1;min-height:0;overflow:hidden}.project-expanded-carousel-img{display:block;height:100%;object-fit:cover;object-position:center;width:100%}.project-expanded-carousel-dots{bottom:.25rem;display:flex;flex-wrap:wrap;gap:.35rem;justify-content:center;left:50%;position:absolute;transform:translateX(-50%)}.project-expanded-carousel-dot{background:#fff6;border:none;border-radius:50%;cursor:pointer;height:.5rem;padding:0;width:.5rem}.project-expanded-carousel-dot:hover{background:#fff9}.project-expanded-carousel-dot.active{background:#fff}.project-expanded-videos{display:flex;flex-direction:column;gap:.5rem;gap:var(--gal-space-8,.5rem);width:100%}.project-expanded-video-frame{aspect-ratio:16/9;background:#222;overflow:hidden}.project-expanded-video-iframe{border:none;display:block;height:100%;width:100%}.project-expanded-body{flex-shrink:0;overflow-y:auto;padding:0 1.5rem 1rem 1.25rem}.project-expanded-description{color:#ffffffe6;font-family:JetBrains Mono,monospace;font-size:.8rem;font-weight:400;line-height:1.6;margin:0;white-space:pre-wrap}@media (max-width:720px){.project-expanded-main{flex-direction:column}.project-expanded-right{order:-1}.project-expanded-carousel-16x9{max-width:100%}}.research-card{background:#f5f5f5;border-radius:0;box-shadow:0 4px 16px #0000001a;box-sizing:border-box;color:#111;cursor:grab;display:flex;flex-direction:column;overflow:hidden;padding:0;pointer-events:auto;position:absolute;transition:box-shadow .2s ease;z-index:2}.research-card:active{cursor:grabbing}.research-card:hover{box-shadow:0 6px 20px #00000026}.research-card-text-wrap{display:flex;flex:1 1;flex-direction:column;gap:.6rem;min-height:0;min-width:0;padding:.9rem 1rem}.research-card-highlight{flex-shrink:0;font-family:JetBrains Mono,monospace;font-weight:500;line-height:1.3}.research-card-main{cursor:auto;flex:1 1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.research-card-main::-webkit-scrollbar{width:6px}.research-card-main::-webkit-scrollbar-thumb{background:#0003;border-radius:3px}.research-card-main-text{font-family:JetBrains Mono,monospace;font-size:.8rem;line-height:1.6;margin:0;white-space:pre-wrap}.research-highlight{background:#000;border-radius:2px;box-decoration-break:clone;-webkit-box-decoration-break:clone;color:#fff;padding:.02em .18em}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.research-card-debug{bottom:.2rem;color:#e10600;font-family:JetBrains Mono,monospace;font-size:.5rem;left:.4rem;pointer-events:none;position:absolute}.research-expanded-overlay{align-items:center;box-sizing:border-box;display:flex;inset:0;justify-content:center;padding:2rem;position:fixed;z-index:100}.research-expanded-backdrop{background:#00000080;cursor:pointer;inset:0;position:absolute}.research-expanded-panel{background:#f5f5f5;border-radius:0;box-shadow:0 20px 60px #00000040;color:#111;display:flex;flex-direction:column;max-height:90vh;max-width:90vw;overflow-x:hidden;overflow-y:auto;position:relative;z-index:1}.research-expanded-close{align-items:center;background:none;border:none;color:#0009;cursor:pointer;display:flex;font-size:1.5rem;height:2rem;justify-content:center;line-height:1;padding:0;position:absolute;right:.75rem;top:.75rem;width:2rem;z-index:2}.research-expanded-close:hover{color:#111}.research-expanded-main{display:flex;flex:1 1;flex-direction:column;gap:1rem;min-height:0;padding:2.5rem 1.5rem 1.5rem}.research-expanded-highlight{flex-shrink:0;font-family:JetBrains Mono,monospace;font-weight:500;line-height:1.3;padding-right:2rem}.research-expanded-body{flex:1 1;min-height:0;overflow-y:auto}.research-expanded-main-text{font-family:JetBrains Mono,monospace;font-size:.9rem;font-weight:400;line-height:1.7;margin:0;white-space:pre-wrap}@media (max-width:640px){.app-content{padding:1.25rem 1rem 3rem}.banner-title{font-size:clamp(.4375rem,2.5vw,.75rem)}.main-scroll{min-height:240vh}}
/*# sourceMappingURL=main.5da10845.css.map*/