.physicsDiv:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:inherit;background-size:inherit;background-position:inherit;filter:url(#duotone-filter);transition:opacity .55s ease;pointer-events:none}.physicsDiv:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:inherit;background-size:inherit;background-position:inherit;filter:url(#duotone-warm);mix-blend-mode:multiply;transition:opacity .55s ease;pointer-events:none}@font-face{font-family:ABC Otto Unlicensed Trial;src:url(/fonts/ABCOtto-Regular-Trial.woff) format("woff");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:ABC Otto Unlicensed Trial;src:url(/fonts/ABCOtto-Light-Trial.woff) format("woff");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:ABC Social Unlicensed Trial;src:url(/fonts/ABCSocial-Regular-Trial.woff) format("woff");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:ABC Social Unlicensed Trial;src:url(/fonts/ABCSocial-RegularItalic-Trial.woff) format("woff");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Syndicat Grotesk TRIAL;src:url(/fonts/SyndicatGroteskTRIAL-Medium.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:EK Baumer Headline TRIAL;src:url(/fonts/EKBaumerGroteskHeadlineTRIAL-HeadlineMedium.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"26A1 Marund Trial";src:url(/fonts/26A1MarundTrial-7222Blurred.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}nav{position:sticky;top:0;z-index:103;margin:0;padding:0 1.5rem;width:100%;box-sizing:border-box;height:var(--nav-height);display:flex;align-items:center;background-color:#f9f9f6b8;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}nav ul{z-index:101;margin:0;padding:0;list-style:none;display:flex;justify-content:space-between;align-items:center;font-family:var(--font-heading);font-weight:300;width:100%}nav ul li{display:flex;align-items:center;justify-content:center}nav h2.title-item{font-size:1.5rem;font-weight:300;margin:0;letter-spacing:.01em}.about-icon{background:none;border:none;padding:.5rem .75rem;font-family:var(--font-heading);font-weight:300;font-size:1.5rem;letter-spacing:.01em;cursor:pointer;transition:opacity .2s ease}.about-icon:hover{text-decoration:underline;text-underline-offset:3px}@media(max-width:768px){nav{padding:0 1rem}nav h2.title-item{font-size:.85rem;white-space:nowrap}.about-icon{font-size:.85rem;padding:.4rem .5rem}.controls{padding:0;margin:0}.controls button{font-size:.85rem;padding:.4rem .5rem;letter-spacing:0}nav ul{padding:0;gap:.5rem}}.project-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg);z-index:1000;opacity:0;transition:opacity .25s ease}.project-overlay.is-open{opacity:1}.overlay-content{display:flex;flex-direction:column;width:100%;height:100%;overflow:hidden;transform:translateY(10px);transition:transform .28s ease}.project-overlay.is-open .overlay-content{transform:translateY(0)}.close-button{position:absolute;top:1rem;right:1.5rem;z-index:2000;background:none;border:none;font-family:var(--font-heading);font-size:1.4rem;line-height:1;cursor:pointer;color:var(--text-muted);padding:0;transition:color .2s ease}.close-button:hover{color:var(--text)}.gallery-header{flex:0 0 auto;padding:1rem 1.5rem 0}.gallery-title{font-family:var(--font-heading);font-weight:300;font-size:1.5rem;line-height:1.05;letter-spacing:.01em;margin:0 0 .3rem;color:var(--text);padding-right:3rem}.gallery-meta{font-family:var(--font-body);font-size:.68rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;font-style:normal;margin:0}.gallery-body{flex:0 0 auto;padding:.9rem 1.5rem 1.25rem}.gallery-description{font-family:var(--font-body);font-size:.875rem;line-height:1.25;color:var(--text-muted);max-width:60%;margin:0}.gallery-description--long{columns:2;column-gap:2.5rem;max-width:85%}@media(max-width:768px){.gallery-description--long{columns:1;max-width:100%}}.gallery-description a{color:var(--text);text-decoration-thickness:1px;text-underline-offset:3px;transition:color .15s ease}.gallery-description a:hover{color:var(--accent)}.gallery-strip{flex:1 1 auto;min-height:0;display:flex;flex-direction:row;align-items:stretch;overflow-x:auto;overflow-y:hidden;gap:3px;padding:.75rem 0;cursor:grab;scroll-snap-type:x proximity;touch-action:pan-x;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;-webkit-user-select:none;user-select:none}.gallery-strip::-webkit-scrollbar{display:none}@media(min-width:769px){.gallery-strip-item:first-child{margin-left:1.5rem}.gallery-strip-item:last-child{margin-right:1.5rem}.gallery-strip{scroll-padding-left:1.5rem;scroll-padding-right:1.5rem}}.gallery-strip-item{flex:0 0 auto;overflow:hidden;scroll-snap-align:start;cursor:pointer;transition:opacity .2s ease}.gallery-strip-item:hover{opacity:.85}.gallery-strip-item img{height:100%;width:auto;display:block;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.gallery-strip-item.is-video iframe{width:100%;height:100%;border:none;display:block;pointer-events:none}.gallery-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg);z-index:2000;display:none;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease}.gallery-lightbox.is-open{opacity:1}.lightbox-media{display:flex;align-items:center;justify-content:center;max-width:90vw;max-height:88vh}.lightbox-media img{display:block;max-width:90vw;max-height:88vh;width:auto;height:auto;object-fit:contain}.lightbox-media iframe{display:block;width:min(80vw,calc(88vh * (16/9)));height:min(88vh,45vw);border:none}.lightbox-close{position:absolute;top:1rem;right:1.5rem;z-index:1;background:none;border:none;font-family:var(--font-heading);font-size:1.4rem;line-height:1;cursor:pointer;color:var(--text-muted);padding:0;transition:color .2s ease}.lightbox-close:hover{color:var(--text)}.lightbox-counter{position:absolute;bottom:1.2rem;left:50%;transform:translate(-50%);font-family:var(--font-body);font-size:.68rem;color:var(--text-muted);letter-spacing:.1em;font-variant-numeric:tabular-nums;pointer-events:none;-webkit-user-select:none;user-select:none}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);background:none;border:none;font-family:var(--font-heading);font-size:1.3rem;cursor:pointer;color:var(--text-muted);padding:.8rem 1.2rem;opacity:0;transition:opacity .18s ease,color .18s ease;z-index:1}.gallery-lightbox:hover .lightbox-nav{opacity:.45}.lightbox-nav:hover{opacity:1!important;color:var(--text)}.lightbox-nav.prev{left:.4rem}.lightbox-nav.next{right:.4rem}@media(max-width:768px){.overlay-content{display:block;overflow-y:auto;overflow-x:hidden}.gallery-header{padding:1.5rem 1rem 0}.gallery-title{font-size:1.2rem;padding-right:2.5rem}.gallery-body{padding:.8rem 1rem 0}.gallery-description{font-size:.82rem;max-width:100%;line-height:1.5}.gallery-strip{flex:none;height:clamp(200px,48vh,420px);padding:.75rem 1rem 3rem}.close-button,.lightbox-close{top:.9rem;right:1rem}.lightbox-nav{padding:.6rem .8rem;font-size:1rem}}.project-info-section a{color:var(--text);text-decoration:none}.project-info-section a:hover{color:var(--accent);text-decoration:underline}:root{--font-heading: "26A1 Marund Trial", sans-serif;--font-body: "ABC Social Unlicensed Trial", sans-serif;--bg: #F9F9F6;--text: rgba(28, 37, 56, .87);--text-muted: rgba(28, 37, 56, .45);--accent: #4357AD;--border: rgba(28, 37, 56, .12);--tag-bg: transparent;--tag-text: rgba(22, 18, 12, .87);--radius: 3px;--nav-height: 3.2rem;--gap-sm: .5rem;--gap-md: 1.5rem;--gap-lg: 3rem;color:var(--text);background-color:var(--bg)}iframe{background-color:var(--bg)!important}h2{font-family:var(--font-heading);font-weight:800;cursor:pointer}p{font-family:var(--font-body)}html,body{margin:0;padding:0;height:100%;overflow-x:hidden}.ghost{position:relative;isolation:isolate}.ghost:before{content:attr(data-ghost-text);position:absolute;top:0;right:0;bottom:0;left:0;transform:scaleX(-1) translate(6px);color:currentColor;opacity:.16;pointer-events:none;z-index:-1;white-space:pre-wrap;font:inherit;letter-spacing:inherit}.title-item{cursor:pointer;color:var(--text)}#loader{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:200px;height:200px;z-index:9}.hidden{display:none}.controls{position:relative;z-index:100}.controls button{font-family:var(--font-heading);position:relative;cursor:pointer;padding:.5rem .75rem;background-color:transparent;border:none;font-size:1rem;letter-spacing:.03em;white-space:nowrap;transition:opacity .2s ease}.controls button:hover{text-decoration:underline;text-underline-offset:3px}.project-item{display:flex;align-items:center;padding:20px;border-bottom:1px solid var(--border);cursor:pointer;transition:background-color .3s ease}.project-item:hover{background-color:#16120c08}nav ul li{cursor:pointer}#app{width:100%;min-height:100vh;padding-bottom:8rem;position:relative;z-index:1;overflow-x:hidden}.project-container{display:grid;grid-template-columns:3.5rem 7rem minmax(0,1.5fr) 5rem minmax(0,2fr);column-gap:1.5rem;align-items:start;padding:.6rem 2rem;border-bottom:1px solid var(--border);cursor:pointer;transition:background-color .15s ease;position:relative;pointer-events:auto}.project-container:hover{background-color:#1c253806}.cell-index,.cell-image,.cell-title,.cell-date,.cell-tags{display:flex;align-items:center;min-width:0;position:relative}.cell-index{font-family:var(--font-body);font-size:.7rem;color:var(--text-muted);letter-spacing:.08em;font-variant-numeric:tabular-nums}.cell-image{justify-content:center}.cell-date{font-family:var(--font-body);font-size:.72rem;color:var(--text-muted);font-style:italic;letter-spacing:.04em;white-space:nowrap}.project-title{font-family:var(--font-heading);font-weight:300;font-size:1.2rem;letter-spacing:.01em;margin:0;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%}.project-container:hover .project-title{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}.tags-flat{font-family:var(--font-body);font-size:.65rem;text-transform:uppercase;letter-spacing:.09em;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4;background:none;border:0;border-radius:0;padding:0}.debug-marker{background-color:transparent;border-radius:4px;position:relative;z-index:2}@media(max-width:768px){.project-container{grid-template-columns:2.5rem 5rem 1fr;grid-template-rows:auto auto;column-gap:.75rem;row-gap:.15rem;padding:.6rem 1rem;min-height:4rem}.cell-index{grid-column:1;grid-row:1 / 3;align-items:flex-start;padding-top:.15rem}.cell-image{grid-column:2;grid-row:1 / 3}.cell-title{grid-column:3;grid-row:1}.cell-date{display:none}.cell-tags{grid-column:3;grid-row:2}.project-title{font-size:1rem}.tags-flat{font-size:.6rem}}.physicsDiv{transform-origin:center center;position:absolute;filter:drop-shadow(0 6px 14px rgba(102,131,196,.18));transition:filter .55s ease;z-index:1;pointer-events:auto;will-change:transform}.physicsDiv:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:inherit;background-size:inherit;background-position:inherit;filter:url(#duotone-filter);transition:opacity .55s ease;pointer-events:none}.physicsDiv:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:inherit;background-size:inherit;background-position:inherit;filter:url(#duotone-warm);mix-blend-mode:multiply;transition:opacity .55s ease;pointer-events:none}.physicsDiv:hover{filter:drop-shadow(0 10px 20px rgba(28,37,56,.25))}.physicsDiv:hover:before,.physicsDiv:hover:after{opacity:0}.physicsDiv.color-reveal:before,.physicsDiv.color-reveal:after{opacity:0}#matter-container{position:fixed;top:0;left:0;width:100%;height:100vh;z-index:0;pointer-events:none;overflow:hidden}#matter-container canvas{position:absolute;pointer-events:auto;z-index:2;opacity:0}#list-view-container{position:relative;z-index:1;width:100%;pointer-events:auto}#list-view-container.hidden{display:none}.project-container,.debug-marker{pointer-events:auto}.about-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:var(--bg);z-index:9999;display:flex;justify-content:center;align-items:flex-start;opacity:0;transition:opacity .3s ease}.about-content{position:relative;width:100%;height:100%;background-color:var(--bg);display:flex;flex-direction:column;overflow-y:auto;font-family:var(--font-heading);font-size:1em;color:var(--text)}.about-wrapper{width:100%;box-sizing:border-box;padding:calc(var(--nav-height) + var(--gap-md)) 1.5rem var(--gap-lg);display:flex;flex-direction:column;gap:var(--gap-lg)}@media(min-width:992px){.about-wrapper{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--gap-lg);align-items:start}}.about-column{min-width:0}.about-column h2{font-family:var(--font-heading);font-weight:400;font-size:.98rem;color:var(--text);padding-bottom:.75rem;border-bottom:1px solid var(--border);margin:0 0 1rem;overflow-wrap:break-word}.about-text{font-family:var(--font-body);font-size:.9em;color:var(--text);line-height:1.65}.about-text p{margin-bottom:1rem}.about-text ul{list-style-type:none;padding-left:0;margin:0}.about-text li{margin-bottom:.75rem;font-family:var(--font-body);color:var(--text)}.about-text h3{font-family:var(--font-heading);font-weight:400;font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin:1.25rem 0 .6rem}.about-text li a{color:var(--text);text-decoration:none;border-bottom:1px solid var(--border);transition:border-color .2s ease,color .2s ease;font-family:var(--font-body)}.about-text li a:hover{border-color:var(--accent);color:var(--accent)}nav{position:relative;z-index:100}#toggle{transition:opacity .3s ease}.event-preview-image{position:fixed;width:auto;height:auto;max-width:360px;max-height:520px;min-width:240px;min-height:160px;background-size:contain;background-position:center;background-repeat:no-repeat;pointer-events:none;z-index:10001;transition:opacity .15s ease;opacity:0}.event-preview-image[style*="display: block"]{opacity:1}.event-details{font-style:italic;color:var(--text-muted);font-family:var(--font-body)}@media(hover:none){.event-preview-image{display:none!important}}@media(max-width:768px){.about-wrapper{padding:calc(var(--nav-height) + var(--gap-sm)) 1rem var(--gap-md);gap:var(--gap-md)}.about-text{font-size:.875em}}
