{"version":3,"file":"ProjectDetail.DiKY99cG.mjs","names":["React.useState","React.useContext","React.useRef","_Fragment","React.useCallback","React.useMemo","c","flushSync","React.Suspense","React.useEffect","React.useLayoutEffect","__esmMin","init_ssg_sandbox_shims","init_npm_react_18_3_1","window","te","oe","pe","de","L","Ha","ne","le","init_jsx_runtime","Ja","init_npm_react_dom_18_3_1","l","ce","_e","init_framer_D6uXRwWs","addPropertyControls","ControlType","sfx","name","options","useNativeSlug","slug","setSlug","isoLayout","root","ref","update","a","slugOf","toDetail","next","detailHref","o","target","PanelIcon","caret","text","SectionChips","scope","h","DetailItem","DetailContext","row","kind","active","index","title","navigation","Picture","thumbnail","params","image","width","height","popup","ProjectStory","rich","slots","setSlots","hosts","observer","read","headings","heading","host","old","node","i","details","image1","image2","image3","Detail","popupClosing","websiteProp","website","cleanSite","impactItems","impact","x","c","teamItems","team","frameRef","panelRef","framePose","frameReady","setFrameReady","identityRef","identity","setHeadings","activeHeading","setActiveHeading","layersTarget","setLayersTarget","relatedTarget","setRelatedTarget","scrollRAF","scroller","backRef","closingRef","exitTimer","closing","setClosing","nodes","n","currentLink","closeLink","onClose","onNavigate","navigate","key","e","clickCapture","scrollTo","start","top","at","step","t","now","ease","io","items","sync","max","limit","id","mo","navKeys","list","frame","panel","reduced","rect","valid","origin","from","live","livePose","end","duration","animation","pa","onExit","style","css","pageCursor","projects","related","back","context","date","logo","description","c$1","role","siteLabel","value","label","c$2","achievementTitle","achievementSlugOf","achievementLink","achievementImage","achievementOrganizer","BLUE","y","Gallery","records","setRecords","popupSlug","setPopupSlug","setOrigin","background","dialog","trigger","popupRef","repairingHash","completeRecords","recordsRef","record","rank","item","readHash","captureOrigin","r","el","open","source","requestClose","stage","finishClose","popupItem","relatedItems","b","setActive","hash","base","trap","first","last","navigatePopup","slugFromHref","href","mode","setMode","count","setCount","setTarget","desktop","setDesktop","hovered","setHovered","focused","setFocused","gridSel","setGridSel","gridActive","hoverGrid","focusGrid","mq","members","wheel","touch","suppressClick","attachStage","register","total","activate","prevActive","prevPopup","prevClosing","onWheel","event","state","gridStyle","layout","entries","center","direction","before","changeMode","reduce","Scope","galleryCSS","deltas","dx","dy","current","atPoint","neighbour","media","pad","ProjectDetail","Item","props","ratio","setRatio","article","nativeHref","setNativeHref","pfDetailHref","parts","measure","portalTarget","link","fallbackHref","distance","near","dateValue","vars","nativeVisibleLink","img","selectionSvg","frameDecoration","gs","openFromPreview","metaLine","canvasCard","gridContent","detailPath","init_ProjectDetail","path","url","m","u","length","p"],"sources":["https:/framerusercontent.com/modules/QK2rUn92zbB8WdFi6ArH/JwnDQ14MmDmNwapfNIz5/ProjectDetail.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{createPortal,flushSync}from\"react-dom\";import{addPropertyControls,ControlType}from\"framer\";/** UI sound (PF/UISound): a quiet reaction to an action; does nothing when the engine is absent, locked or muted. */function sfx(name,options){try{window.pfSound?.play(name,options);}catch{}}// Copied from Home: BLUE/handles; LABEL_CSS selected colors and native Label preset UDnPiIASg.\nconst BLUE=\"#0D99FF\";const css=`\n.pf-detail-rich{position:relative}.pf-detail-rich>div,.pf-detail-rich [data-framer-component-type=\"RichTextContainer\"]{position:relative!important;inset:auto!important;width:100%!important;height:auto!important}\n.pf-detail .pf-detail-scroll:focus-visible{outline:none;box-shadow:none}\n.pf-detail-rich .framer-text{color:var(--ink)!important}.pf-detail .pf-detail-rich a,.pf-detail .pf-detail-rich a *{color:var(--selected)!important}\n.pf-detail-story-media{margin:32px 0}.pf-detail-story-media:empty{display:none}\n.pf-detail{--canvas:var(--token-AsrIz4LAu,#F5F5F5);--card:var(--token-w3EVZzR6J,#fff);--ink:var(--token-En4j3Y80j,#0B0B0B);--mute:var(--token-pSg9IM4HF,#6B6B6B);--line:var(--token-b6ib_tbpb,#E2E2E2);--hover:var(--token-oKzL5URR2,#EFEFEF);--selected:#0B72C2;background:var(--canvas);color:var(--ink);font:400 16px/1.55 Geist,Inter,sans-serif;isolation:isolate}\nhtml[data-pf-theme=dark] .pf-detail{--canvas:var(--token-AsrIz4LAu,#1E1E1E);--card:var(--token-w3EVZzR6J,#2C2C2C);--ink:var(--token-En4j3Y80j,#F5F5F5);--mute:var(--token-pSg9IM4HF,#A3A3A3);--line:var(--token-b6ib_tbpb,#404040);--hover:var(--token-oKzL5URR2,#383838);--selected:#5CB8FF}\n.pf-detail *{box-sizing:border-box}.pf-detail a{color:inherit}.pf-detail :focus-visible{outline:2px solid ${BLUE};outline-offset:4px}.pf-detail-shell{position:absolute;inset:104px 60px 128px;display:grid;grid-template-columns:220px minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:40px;align-items:start}.pf-detail-frame{position:relative;width:min(920px,100%);height:100%;min-width:0;min-height:0;margin:0 auto;animation:pfDetailZoom 450ms var(--ease-zoom,cubic-bezier(.7,0,.2,1)) both}.pf-detail-scroll{height:100%;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--mute) var(--card);background:var(--card);border-radius:0;box-shadow:none;outline:none}.pf-detail-scroll::-webkit-scrollbar{width:6px}.pf-detail-scroll::-webkit-scrollbar-thumb{background:var(--mute);border-radius:3px}.pf-detail-content{padding:32px;display:flex;flex-direction:column;gap:24px;min-width:0}.pf-detail-content h1{margin:0;font:600 28px/1.1 Inter,sans-serif;letter-spacing:-.01em;overflow-wrap:anywhere}.pf-detail-desc{margin:0;font:400 16px/1.55 Geist,Inter,sans-serif}.pf-detail-logo{display:block;width:40px;height:40px;object-fit:contain}.pf-detail-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin:0}.pf-detail-meta div{min-width:0}.pf-detail-meta dt{font:500 12px/1.3 'Geist Mono',monospace;letter-spacing:.08em;color:var(--mute);margin:0 0 8px;text-transform:uppercase}.pf-detail-meta dd{margin:0;font:400 16px/1.55 Geist,Inter,sans-serif;overflow-wrap:anywhere}.pf-detail-image{display:block;width:100%;height:auto;flex:none}.pf-detail-rich{min-width:0}.pf-detail-rich p{margin-block:0 16px}.pf-detail-rich :is(h2,h3,h4,h5,h6){margin-block:32px 16px;scroll-margin-top:24px}.pf-detail-rich a{color:var(--selected);text-decoration:underline}.pf-detail-label{position:absolute;top:-24px;left:0;margin:0;color:var(--selected);font:500 12px/1.3 Geist,Inter,sans-serif;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;animation:pfDetailLabel 180ms 270ms both}.pf-detail-selection{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:3;animation:pfDetailSelection 450ms step-end both}.pf-detail-back a{display:flex!important;align-items:center;width:100%!important;height:32px!important;text-decoration:none}.pf-detail-closing .pf-detail-shell{opacity:0;transform:scale(.96);transition:opacity 200ms,transform 200ms}.pf-detail-chips{display:none}\n\n.pf-detail-source{position:absolute;width:1px;height:1px;overflow:hidden;visibility:hidden;pointer-events:none}.pf-detail-layers{padding:8px 6px 10px;border-radius:13px;background:var(--card);color:var(--ink);font-family:Inter,Geist,'Helvetica Neue',Arial,sans-serif;box-shadow:0 0 .5px rgba(0,0,0,.12),0 2px 5px rgba(0,0,0,.15),0 10px 16px rgba(0,0,0,.12);max-height:100%;overflow-y:auto;scrollbar-width:thin}.pf-detail-layer-tabs{display:flex;gap:14px;padding:2px 8px 8px;border-bottom:1px solid var(--line);margin-bottom:6px;font:600 13px/18px Inter,Geist,'Helvetica Neue',Arial,sans-serif}.pf-detail-layer-tabs span{font-weight:400;color:var(--mute)}.pf-detail-layer-tabs span:last-child{margin-left:auto}.pf-detail-layer-list{display:flex;flex-direction:column}.pf-detail-layer-row,.pf-detail-child-rows button,.pf-detail-tablet-chips button,.pf-detail-chips button{display:flex;align-items:center;gap:6px;width:100%;height:32px;padding:0 6px;border:0;background:transparent;color:var(--ink);font:400 13px/18px Inter,Geist,'Helvetica Neue',Arial,sans-serif;letter-spacing:-.01em;text-align:left;cursor:pointer;border-radius:4px}.pf-detail-layer-row{position:relative}.pf-detail-layer-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pf-detail-layer-row:hover,.pf-detail-child-rows button:hover{background:var(--hover)}.pf-detail-layer-row[data-active=true],.pf-detail-child-rows button[aria-current],.pf-detail-tablet-chips button[aria-current],.pf-detail-chips button[aria-current]{background:rgba(13,153,255,.12)}.pf-detail-child-rows button{padding-left:38px}.pf-detail-native-nav{position:absolute;inset:0;z-index:2}.pf-detail-native-nav>*{width:100%!important;height:100%!important}.pf-detail-native-nav a{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;border-radius:4px}.pf-detail-layer-row:focus-within{outline:2px solid #0D99FF;outline-offset:1px}.pf-detail-layer-row a:focus-visible{outline:none}.pf-detail-back a *{font:400 13px/18px Inter,Geist,'Helvetica Neue',Arial,sans-serif!important;letter-spacing:-.01em!important}.pf-detail-back a{padding:0 6px;border-radius:4px}.pf-detail-back a:hover{background:var(--hover)}\nhtml[data-pf-theme=dark] .pf-detail-layers{box-shadow:inset 0 .5px 0 rgba(255,255,255,.08),inset 0 0 .5px rgba(255,255,255,.35),0 2px 5px rgba(0,0,0,.35),0 10px 16px rgba(0,0,0,.35)}html[data-pf-theme=dark] .pf-detail-layer-row[data-active=true],html[data-pf-theme=dark] .pf-detail :is(.pf-detail-child-rows,.pf-detail-chips,.pf-detail-tablet-chips) button[aria-current]{background:rgba(13,153,255,.22)}\n.pf-detail-more h2{font:600 28px/1.1 Inter,sans-serif;letter-spacing:-.01em;margin:8px 0 8px}.pf-detail-related-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.pf-detail-related-item{position:relative;min-width:0;padding-top:24px}.pf-detail-related-label{position:absolute;left:0;top:0;font:500 12px/1.3 Geist,Inter,sans-serif;color:var(--mute);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pf-detail-related-media{position:relative}.pf-detail-related-item:hover .pf-detail-related-media,.pf-detail-related-item:focus-within .pf-detail-related-media{outline:1.5px solid #0D99FF}.pf-detail-tablet-chips{display:none}\n@media(max-width:1199px){.pf-detail-shell{gap:96px}.pf-detail-layers{display:flex;align-items:flex-start;overflow-x:auto;overflow-y:hidden;padding:6px;max-height:none;flex-wrap:wrap}.pf-detail-layer-tabs,.pf-detail-child-rows{display:none}.pf-detail-back{flex:none}.pf-detail-back a{width:auto!important}.pf-detail-layer-list{flex-direction:row;flex:1;min-width:0;overflow-x:auto}.pf-detail-layer-entry{flex:none}.pf-detail-layer-row{width:auto}.pf-detail-layer-row>span:first-child{display:none}.pf-detail-tablet-chips{display:flex;width:100%;padding-top:6px;gap:4px}.pf-detail-tablet-chips button{width:auto}.pf-detail-more h2{font-size:26px}}\n@media(max-width:809px){.pf-detail-shell{gap:144px}.pf-detail-tablet-chips{display:none}.pf-detail-chips{position:sticky;top:0;display:flex;gap:4px;padding:8px 16px;background:var(--card);z-index:4;overflow-x:auto}.pf-detail-chips button{width:auto;flex:none}.pf-detail-related-grid{grid-template-columns:1fr}.pf-detail-more h2{font-size:24px}}\n\n.pf-detail-exit .pf-detail-selection,.pf-detail-exit .pf-detail-label{visibility:hidden}.pf-detail-popup{background:transparent!important;pointer-events:none}.pf-detail-popup .pf-detail-layers,.pf-detail-popup .pf-detail-frame{pointer-events:auto}.pf-detail-popup .pf-detail-frame{animation:none}.pf-detail-popup .pf-detail-content{animation:pfDetailSwap 200ms both}.pf-detail-close{position:absolute;right:0;top:-44px;width:32px;height:32px;padding:0;display:grid;place-items:center;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:6px;cursor:pointer;z-index:5}.pf-detail-close:hover{background:var(--hover)}@keyframes pfDetailSwap{from{opacity:0}to{opacity:1}}\n@keyframes pfDetailZoom{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes pfDetailSelection{0%,99%{opacity:0}100%{opacity:1}}@keyframes pfDetailLabel{from{opacity:0}to{opacity:1}}\n@media(max-width:1199px){.pf-detail-shell{inset:104px 0 128px;display:flex;flex-direction:column;align-items:center;gap:96px}.pf-detail-layers{width:86%;flex:none}.pf-detail-frame{width:86%;flex:1;min-height:0}.pf-detail-content h1{font-size:26px}.pf-detail-content{padding:28px}}\n@media(max-width:809px){.pf-detail-shell{inset:88px 16px 100px;gap:144px}.pf-detail-frame,.pf-detail-layers{width:100%}.pf-detail-content{padding:24px}.pf-detail-content h1{font-size:24px}.pf-detail-meta{grid-template-columns:1fr;gap:16px}.pf-detail-meta dt{margin-bottom:4px}}\n@media(prefers-reduced-motion:reduce){.pf-detail *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}\n.pf-detail-popup .pf-detail-shell{inset:104px 32px 88px;gap:24px}.pf-detail-popup .pf-detail-frame{width:100%;max-width:1440px}\n@media(max-width:1199px){.pf-detail-popup .pf-detail-shell{inset:88px 20px 88px;gap:56px}.pf-detail-popup .pf-detail-layers{width:100%}}\n@media(max-width:809px){.pf-detail-popup .pf-detail-shell{inset:80px 16px 80px;gap:56px}}\n.pf-project:has(.pf-project-popup) .pf-project-background .pf-project-item[data-active=true]{visibility:hidden}.pf-project:has(.pf-detail-exit) .pf-project-background .pf-project-item[data-active=true]{visibility:visible}\n/* Detail layout, 14 Nov 2026 (option 1): a reading column with small labels on the left, a big title, impact numbers and captions. The Layers panel gets numbers, a section guide and a reading-progress line. */\n.pf-detail-shell{grid-template-columns:248px minmax(0,1fr)}\n.pf-detail-frame{width:min(1040px,100%)}\n.pf-detail-popup .pf-detail-frame{max-width:1080px}\n.pf-detail-content{padding:56px 56px 120px;gap:0}\n.pf-dc-eyebrow{display:flex;align-items:center;flex-wrap:wrap;gap:10px;font:500 12px/1.2 'Geist Mono',monospace;letter-spacing:.04em;text-transform:uppercase;color:var(--mute)}\n.pf-dc-eyebrow .pf-detail-logo{width:28px;height:28px;border-radius:6px}\n.pf-dc-chip{padding:4px 9px;border:1px solid var(--line);border-radius:6px;background:color-mix(in srgb,var(--ink) 5%,transparent);color:var(--ink)}\n.pf-detail-content h1{margin:18px 0 0;font:700 clamp(44px,5.2vw,68px)/1.02 Inter,sans-serif;letter-spacing:-.03em}\n.pf-detail-desc{margin:20px 0 0;max-width:700px;font:400 22px/1.4 Geist,Inter,sans-serif;color:var(--ink)}\n.pf-dc-impact{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-top:32px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}\n.pf-dc-impact>div{padding:18px 18px;border-left:1px solid var(--line)}\n.pf-dc-impact>div:first-child{border-left:0;padding-left:0}\n.pf-dc-impact b{display:block;font:700 40px/1 Inter,sans-serif;letter-spacing:-.03em}\n.pf-dc-impact span{display:block;margin-top:8px;font:500 14px/1.3 Geist,Inter,sans-serif}\n.pf-dc-impact small{display:block;margin-top:3px;font:400 12.5px/1.4 Geist,Inter,sans-serif;color:var(--mute)}\n.pf-dc-row{display:grid;grid-template-columns:150px minmax(0,690px);column-gap:32px;margin-top:44px;align-items:start}\n.pf-dc-label{font:500 12px/1.4 'Geist Mono',monospace;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);padding-top:3px}\n.pf-detail-meta{display:grid;grid-template-columns:110px minmax(0,1fr);gap:10px 20px}\n.pf-detail-meta div{display:contents}\n.pf-detail-meta dt{margin:0;padding-top:3px}\n.pf-detail-meta dd small{display:block;color:var(--mute);font-size:13px}\n.pf-dc-related{margin-top:56px;margin-bottom:8px}\n.pf-dc-project{display:flex;align-items:center;gap:20px;padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--hover);color:var(--ink);text-decoration:none;transition:border-color 160ms}.pf-dc-project:hover{border-color:var(--selected)}\n.pf-dc-project-img{flex:none;width:168px;aspect-ratio:16/9;object-fit:cover;border-radius:6px;border:1px solid var(--line);background:var(--card)}\n.pf-dc-project-text{display:flex;flex-direction:column;gap:4px;min-width:0}.pf-dc-project-label{font:500 12px/1.4 'Geist Mono',monospace;letter-spacing:.06em;text-transform:uppercase;color:var(--mute)}\n.pf-dc-project b{font:600 20px/1.3 Inter,sans-serif;letter-spacing:-.01em;overflow-wrap:anywhere}.pf-dc-project-desc{font:400 16px/1.5 Geist,Inter,sans-serif;color:var(--body,var(--ink));display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\n@media(max-width:809px){.pf-dc-project{flex-direction:column;align-items:stretch;gap:14px}.pf-dc-project-img{width:100%}}\n.pf-detail-meta dd a.pf-ext-link{color:var(--selected);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;overflow-wrap:anywhere}.pf-detail-meta dd a.pf-ext-link::after{content:\"\\\\2197\";display:inline-block;margin-left:4px;text-decoration:none}\n.pf-dc-hero{margin:44px 0 0}\n.pf-dc-hero img,.pf-detail-story-media img,.pf-detail-content>.pf-detail-image{border:1px solid var(--line)}\n.pf-dc-hero figcaption{margin-top:8px;font:400 12.5px/1.4 Geist,Inter,sans-serif;color:var(--mute)}\n.pf-dc-hero figcaption b{font-weight:500;color:var(--selected)}\n.pf-detail-content>.pf-detail-image{margin-top:40px}\n.pf-detail-rich [data-framer-component-type=\"RichTextContainer\"]{display:grid!important;grid-template-columns:150px minmax(0,690px);column-gap:32px;align-items:start}\n.pf-detail-rich [data-framer-component-type=\"RichTextContainer\"]>:is(h2,h3,h4,h5,h6){grid-column:1;margin:44px 0 0!important;padding-top:3px}\n.pf-detail-rich [data-framer-component-type=\"RichTextContainer\"]>:is(h2,h3,h4,h5,h6),.pf-detail-rich [data-framer-component-type=\"RichTextContainer\"]>:is(h2,h3,h4,h5,h6) *{font:500 12px/1.4 'Geist Mono',monospace!important;letter-spacing:.06em!important;text-transform:uppercase!important;color:var(--mute)!important}\n.pf-detail-rich [data-framer-component-type=\"RichTextContainer\"]>:not(:is(h2,h3,h4,h5,h6)){grid-column:2}\n.pf-detail-rich [data-framer-component-type=\"RichTextContainer\"]>:is(h2,h3,h4,h5,h6)+*{margin-top:44px}\n.pf-detail-rich [data-framer-component-type=\"RichTextContainer\"]>.pf-detail-story-media{grid-column:1/-1;margin:40px 0 0}\n.pf-detail-layers{width:100%}\n.pf-detail-progress{height:2px;margin:0 8px 8px;background:var(--line);border-radius:2px;overflow:hidden}\n.pf-detail-progress::after{content:\"\";display:block;height:100%;width:calc(var(--pf-progress,0) * 100%);background:#0D99FF;transition:width .1s linear}\n.pf-detail-layer-num{flex:none;min-width:20px;font:400 11px/1 'Geist Mono',monospace;color:var(--mute)}\n.pf-detail-layer-row[data-active=true]{font-weight:600}\n.pf-detail-layer-row[data-active=true]::before{content:\"\";position:absolute;left:0;top:7px;bottom:7px;width:2px;border-radius:2px;background:#0D99FF}\n.pf-detail-child-rows{margin:2px 0 8px 24px;padding-left:10px;border-left:1px solid var(--line)}\n.pf-detail-child-rows button{position:relative;height:30px;padding:0 8px;gap:8px;color:var(--mute)}\n.pf-detail-child-rows button[aria-current]{color:var(--selected);font-weight:600;background:transparent}\n.pf-detail-child-rows button[aria-current]::before{content:\"\";position:absolute;left:-15px;top:50%;width:7px;height:7px;margin-top:-3.5px;border-radius:50%;background:#0D99FF;box-shadow:0 0 0 3px var(--card)}\n.pf-detail-child-rows .n,.pf-detail-tablet-chips .n{font:400 10.5px/1 'Geist Mono',monospace;opacity:.7}\n.pf-detail-chips .n{display:none}\n.pf-detail-hint{margin:8px 8px 2px;padding-top:8px;border-top:1px solid var(--line);font:400 11px/1.4 'Geist Mono',monospace;color:var(--mute)}\n@media(min-width:1200px){.pf-detail-shell{display:flex;justify-content:center;align-items:flex-start;gap:24px}.pf-detail-layers{flex:none;width:248px}.pf-detail-frame{flex:0 1 1040px;width:auto;margin:0}.pf-detail-popup .pf-detail-frame{flex:0 1 1080px;width:auto;max-width:1080px}}\n.pf-dc-title{display:flex;align-items:center;gap:.26em;margin-top:18px;font-size:clamp(44px,5.2vw,68px)}\n.pf-detail-content .pf-dc-title h1{margin:0;font:700 1em/1.02 Inter,sans-serif;letter-spacing:-.03em}\n.pf-dc-title .pf-detail-logo{width:1em;height:1em;flex:none;border-radius:.2em;object-fit:contain}\n@media(max-width:1199px){.pf-detail-hint{display:none}.pf-detail-progress{display:none}}\n@media(min-width:810px) and (max-width:1199px){.pf-detail-content{padding:40px 36px 100px}.pf-dc-row,.pf-detail-rich [data-framer-component-type=\"RichTextContainer\"]{grid-template-columns:120px minmax(0,1fr);column-gap:24px}}\n@media(max-width:809px){\n.pf-detail-content{padding:28px 20px 80px}\n.pf-dc-title{font-size:clamp(36px,11vw,48px)}\n.pf-detail-desc{font-size:19px}\n.pf-dc-impact{grid-template-columns:1fr 1fr}\n.pf-dc-impact>div{border-left:0;border-top:1px solid var(--line);padding:14px 12px 14px 0}\n.pf-dc-impact>div:nth-child(-n+2){border-top:0}\n.pf-dc-impact b{font-size:30px}\n.pf-dc-row,.pf-detail-rich [data-framer-component-type=\"RichTextContainer\"]{grid-template-columns:minmax(0,1fr)}\n.pf-dc-row .pf-dc-label{margin-bottom:10px}\n.pf-detail-meta{grid-template-columns:90px minmax(0,1fr)}\n.pf-detail-rich [data-framer-component-type=\"RichTextContainer\"]>:is(h2,h3,h4,h5,h6){grid-column:1;margin-top:34px!important}\n.pf-detail-rich [data-framer-component-type=\"RichTextContainer\"]>:not(:is(h2,h3,h4,h5,h6)){grid-column:1}\n.pf-detail-rich [data-framer-component-type=\"RichTextContainer\"]>:is(h2,h3,h4,h5,h6)+*{margin-top:10px}\n}\n`;const DetailContext=/*#__PURE__*/React.createContext(null);const isoLayout=typeof window===\"undefined\"?React.useEffect:React.useLayoutEffect;const slugOf=href=>{try{const a=new URL(href,document.baseURI).pathname.split(\"/\").filter(Boolean);if(a[a.length-1]===\"pf\")a.pop();return decodeURIComponent(a[a.length-1]||\"\");}catch{return\"\";}};// After go-live the detail page lives at /projects/:slug (the old template moved to /old-projects/:slug), so a CMS link is mapped to that path.\nconst detailPath=path=>path.replace(/\\/$/,\"\").replace(/\\/pf$/,\"\").replace(/^\\/old-projects\\//,\"/projects/\");// The text of an external website link: the address without protocol, \"www.\" or a trailing slash.\n// Only a real http(s) address counts (an unresolved binding such as \"var(--variable-...)\" is ignored).\nconst cleanSite=url=>/^https?:\\/\\/\\S+$/i.test((url||\"\").trim())?url.trim():\"\";// The slug of the related Achievement item, read from its CMS detail link (/achievement/<slug>). Empty when the achievement has no link.\nconst achievementSlugOf=link=>{const m=/\\/achievement\\/([^/?#]+)\\/?(?:[?#].*)?$/.exec((link||\"\").trim());try{return m?decodeURIComponent(m[1]):\"\";}catch{return\"\";}};const siteLabel=url=>url.replace(/^https?:\\/\\/(www\\.)?/i,\"\").replace(/\\/$/,\"\");const detailHref=href=>{const u=new URL(href,document.baseURI);u.pathname=detailPath(u.pathname);return u.href;};// Only inspect the component's own rendered native anchor, never CMS internals.\nfunction useNativeSlug(ref,target,toDetail){const[slug,setSlug]=React.useState(\"\");isoLayout(()=>{const root=ref.current;if(!root)return;const update=()=>{const a=root.querySelector(\"a[href]\");if(!a)return;setSlug(slugOf(a.href));if(toDetail){const next=detailHref(a.href);if(a.href!==next)a.href=next;}};update();const o=new MutationObserver(update);o.observe(root,{childList:true,subtree:true,attributes:true,attributeFilter:[\"href\"]});return()=>o.disconnect();},[ref,target,toDetail]);return slug;}function PanelIcon({text=false,caret=false}){return /*#__PURE__*/_jsx(\"svg\",{width:16,height:16,viewBox:\"0 0 16 16\",fill:\"none\",stroke:\"currentColor\",strokeWidth:1.2,strokeLinecap:\"round\",strokeLinejoin:\"round\",style:{display:\"block\",flex:\"none\"},children:/*#__PURE__*/_jsx(\"path\",{d:caret?\"M4.5 6.5L8 10l3.5-3.5\":text?\"M3 3.5h10M8 3.5v9M5.5 12.5h5\":\"M5.5 2v12M10.5 2v12M2 5.5h12M2 10.5h12\"})});}function SectionChips({scope,className}){return scope.headings.length?/*#__PURE__*/_jsx(\"div\",{className:className,children:scope.headings.map(h=>/*#__PURE__*/_jsxs(\"button\",{type:\"button\",\"data-section\":\"\",\"aria-current\":scope.active===h.id?\"location\":undefined,onClick:()=>scope.scrollTo(h),children:[/*#__PURE__*/_jsx(\"span\",{className:\"n\",\"aria-hidden\":\"true\",children:String(scope.headings.indexOf(h)+1).padStart(2,\"0\")}),h.label]},h.id))}):null;}function DetailItem({kind,title=\"\",thumbnail,navigation,index=1}){const scope=React.useContext(DetailContext),row=React.useRef(null),target=kind===\"Layer\"?scope?.layers:scope?.related,slug=useNativeSlug(row,target,true),active=!!slug&&slug===scope?.slug;isoLayout(()=>{const a=row.current?.querySelector(\"a\");if(a){if(active)a.setAttribute(\"aria-current\",\"page\");else a.removeAttribute(\"aria-current\");}},[active,target,slug]);if(!scope||!target)return null;return /*#__PURE__*/createPortal(kind===\"Layer\"?/*#__PURE__*/_jsxs(\"div\",{ref:row,className:\"pf-detail-layer-entry\",style:{order:index},children:[/*#__PURE__*/_jsxs(\"div\",{className:\"pf-detail-layer-row\",\"data-active\":active,children:[/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",children:active?/*#__PURE__*/_jsx(PanelIcon,{caret:true}):/*#__PURE__*/_jsx(\"span\",{style:{width:16,display:\"block\"}})}),/*#__PURE__*/_jsx(\"span\",{className:\"pf-detail-layer-num\",\"aria-hidden\":\"true\",children:String(index).padStart(2,\"0\")}),/*#__PURE__*/_jsx(\"span\",{className:\"pf-detail-layer-title\",\"aria-hidden\":\"true\",children:title}),/*#__PURE__*/_jsx(\"div\",{className:\"pf-detail-native-nav\",\"data-pf-detail-link\":\"\",children:navigation})]}),active&&/*#__PURE__*/_jsx(SectionChips,{scope:scope,className:\"pf-detail-child-rows\"})]}):/*#__PURE__*/_jsxs(\"div\",{ref:row,className:\"pf-detail-related-item\",style:{order:index},children:[/*#__PURE__*/_jsx(\"span\",{className:\"pf-detail-related-label\",\"aria-hidden\":\"true\",children:title}),/*#__PURE__*/_jsx(\"div\",{className:\"pf-detail-related-media\",children:/*#__PURE__*/_jsx(Picture,{image:thumbnail})}),/*#__PURE__*/_jsx(\"div\",{className:\"pf-detail-native-nav\",\"data-pf-detail-link\":\"\",children:navigation})]}),target);}function Picture({image,className=\"pf-detail-image\",popup=false}){const params=new URLSearchParams(image?.src?.split(\"?\")[1]),width=Number(params.get(\"width\"))||undefined,height=Number(params.get(\"height\"))||undefined;return image?.src?/*#__PURE__*/_jsx(\"img\",{className:className,src:image.src,srcSet:image.srcSet,width:width,height:height,sizes:popup?\"(max-width:809px) calc(100vw - 80px),(max-width:1199px) calc(100vw - 96px),min(1376px,calc(100vw - 372px))\":\"(max-width:809px) calc(100vw - 80px),(max-width:1199px) 86vw,856px\",alt:image.alt||\"\",loading:\"lazy\",draggable:false}):null;}// Insert image portals between the existing native CMS sections, without cloning its text.\nfunction ProjectStory({details,image1,image2,image3,popup=false}){const rich=React.useRef(null),[slots,setSlots]=React.useState([null,null]);isoLayout(()=>{const root=rich.current;if(!root)return;const hosts=new Map;let observer;const read=()=>{observer?.disconnect();const headings=Array.from(root.querySelectorAll(\"h2,h3,h4,h5,h6\"));const next=[\"process\",\"outcome\"].map(name=>{const heading=headings.find(h=>h.textContent?.trim().toLowerCase()===name);let host=hosts.get(name);if(!heading){host?.remove();hosts.delete(name);return null;}if(!host){host=document.createElement(\"div\");host.className=\"pf-detail-story-media\";host.dataset.pfStoryMedia=name;hosts.set(name,host);}if(host.nextElementSibling!==heading)heading.parentElement.insertBefore(host,heading);return host;});setSlots(old=>old.every((node,i)=>node===next[i])?old:next);observer?.observe(root,{childList:true,subtree:true,characterData:true});};read();observer=new MutationObserver(read);observer.observe(root,{childList:true,subtree:true,characterData:true});return()=>{observer?.disconnect();hosts.forEach(host=>host.remove());};},[])// The stable wrapper observer also catches native CMS prop updates.\n;return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{className:\"pf-detail-rich\",ref:rich,children:details}),[image1,image2].map((image,i)=>slots[i]?/*#__PURE__*/createPortal(/*#__PURE__*/_jsx(Picture,{image:image,popup:popup}),slots[i],String(i)):/*#__PURE__*/_jsx(Picture,{image:image,popup:popup},i)),/*#__PURE__*/_jsx(Picture,{image:image3,popup:popup})]});}/** @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicWidth 1200\n * @framerIntrinsicHeight 800 */function Detail({popup=false,origin,closing:popupClosing=false,onClose,onExit,onNavigate,identity,title=\"\",description=\"\",role=\"\",context=\"\",impact=\"\",team=\"\",date=\"\",currentLink=\"\",website:websiteProp=\"\",achievementTitle=\"\",achievementLink=\"\",achievementImage,achievementOrganizer=\"\",thumbnail,logo,image1,image2,image3,details,back,projects,related,pageCursor,style}){const website=cleanSite(websiteProp);const impactItems=impact.split(/\\n|;;/).map(l=>l.split(\"|\").map(x=>x.trim())).filter(c=>c[0]),teamItems=team.split(/\\n|;;/).map(l=>l.split(/\\s*[|\\u00b7]\\s*/).map(x=>x.trim())).filter(c=>c[0]);const frameRef=React.useRef(null),panelRef=React.useRef(null),framePose=React.useRef(null);const[frameReady,setFrameReady]=React.useState(!popup);const identityRef=React.useRef(null),slug=useNativeSlug(identityRef,identity,false),[headings,setHeadings]=React.useState([]),[activeHeading,setActiveHeading]=React.useState(\"\"),[layersTarget,setLayersTarget]=React.useState(null),[relatedTarget,setRelatedTarget]=React.useState(null),scrollRAF=React.useRef(0);const scroller=React.useRef(null),backRef=React.useRef(null),closingRef=React.useRef(false),exitTimer=React.useRef();const[closing,setClosing]=React.useState(false);React.useEffect(()=>{const nodes=[document.documentElement,document.body],old=nodes.map(n=>n.style.overflow);nodes.forEach(n=>n.style.overflow=\"hidden\");return()=>nodes.forEach((n,i)=>n.style.overflow=old[i]);},[]);React.useEffect(()=>{closingRef.current=false;setClosing(false);if(scroller.current)scroller.current.scrollTop=0;return()=>clearTimeout(exitTimer.current);},[slug,currentLink,title]);const closeLink=a=>{if(popup){if(a.closest(\".pf-detail-back\"))onClose?.();else onNavigate?.(a.href,a);return;}if(closingRef.current)return;closingRef.current=true;setClosing(true);const navigate=()=>{if(a.closest(\"[data-pf-detail-link]\"))window.location.assign(a.href);else a.click();};if(matchMedia(\"(prefers-reduced-motion:reduce)\").matches)navigate();else exitTimer.current=setTimeout(navigate,200);};React.useEffect(()=>{const key=e=>{if(popup)return;if(e.key===\"Escape\"&&!e.defaultPrevented){const a=backRef.current?.querySelector(\"a[href]\");if(a){e.preventDefault();closeLink(a);}}};window.addEventListener(\"keydown\",key);return()=>window.removeEventListener(\"keydown\",key);},[]);const clickCapture=e=>{if(closingRef.current||e.button!==0||e.ctrlKey||e.metaKey||e.shiftKey||e.altKey)return;const a=e.target.closest(\"a[href]\");if(!a||a.closest(\".pf-detail-rich\")||a.closest(\"[data-pf-go]\")||a.target===\"_blank\"||a.getAttribute(\"href\")?.startsWith(\"#\"))return;e.preventDefault();e.stopPropagation();closeLink(a);};const scrollTo=React.useCallback(heading=>{const root=scroller.current;if(!root)return;cancelAnimationFrame(scrollRAF.current);const start=root.scrollTop,top=Math.max(0,Math.min(root.scrollHeight-root.clientHeight,start+heading.node.getBoundingClientRect().top-root.getBoundingClientRect().top-24-(root.querySelector(\".pf-detail-chips\")?.offsetHeight||0)));if(matchMedia(\"(prefers-reduced-motion:reduce)\").matches){root.scrollTop=top;return;}const at=performance.now();const step=now=>{const t=Math.min(1,(now-at)/300),ease=t*t*t*(10-15*t+6*t*t);root.scrollTop=start+(top-start)*ease;if(t<1)scrollRAF.current=requestAnimationFrame(step);};scrollRAF.current=requestAnimationFrame(step);},[]);isoLayout(()=>{const root=scroller.current,rich=root?.querySelector(\".pf-detail-rich\");if(!root||!rich)return;let io,items=[];const sync=()=>{const max=root.scrollHeight-root.clientHeight;panelRef.current?.style.setProperty(\"--pf-progress\",max>0?String(Math.min(1,root.scrollTop/max)):\"0\");const limit=root.getBoundingClientRect().top+root.clientHeight*.35;const h=[...items].reverse().find(h=>h.node.getBoundingClientRect().top<=limit)||items[0];setActiveHeading(h?.id||\"\");};const read=()=>{io?.disconnect();const top=root.querySelector(\".pf-dc-eyebrow\");items=[...top?[{id:\"pf-detail-\"+(slug||\"project\")+\"-top\",label:\"Overview\",node:top}]:[],...Array.from(rich.querySelectorAll(\"h2,h3,h4,h5,h6\")).filter(n=>(n.textContent||\"\").trim()).map((node,i)=>{const id=\"pf-detail-\"+(slug||\"project\")+\"-\"+i;node.id=id;node.setAttribute(\"aria-level\",\"2\");return{id,label:node.textContent?.trim()||\"\",node};})];setHeadings(items);io=new IntersectionObserver(sync,{root,rootMargin:\"0px 0px -65% 0px\",threshold:[0,1]});items.forEach(h=>io.observe(h.node));sync();};read();const mo=new MutationObserver(read);mo.observe(rich,{childList:true,subtree:true,characterData:true});root.addEventListener(\"scroll\",sync,{passive:true});return()=>{io?.disconnect();mo.disconnect();root.removeEventListener(\"scroll\",sync);cancelAnimationFrame(scrollRAF.current);};},[slug,details]);const scope=React.useMemo(()=>({slug,headings,active:activeHeading,scrollTo,layers:layersTarget,related:relatedTarget}),[slug,headings,activeHeading,scrollTo,layersTarget,relatedTarget]);const navKeys=e=>{if(![\"ArrowUp\",\"ArrowDown\",\"Home\",\"End\"].includes(e.key))return;const list=Array.from(e.currentTarget.querySelectorAll(\"a[href],button[data-section]\")).filter(n=>n.getClientRects().length);const i=list.indexOf(document.activeElement);if(i<0)return;e.preventDefault();list[e.key===\"Home\"?0:e.key===\"End\"?list.length-1:(i+(e.key===\"ArrowDown\"?1:-1)+list.length)%list.length]?.focus();};isoLayout(()=>{if(!popup)return;setFrameReady(false);const frame=frameRef.current,panel=panelRef.current;if(!frame)return;const reduced=matchMedia(\"(prefers-reduced-motion:reduce)\").matches,rect=frame.getBoundingClientRect(),valid=origin&&origin.width>0&&origin.height>0&&origin.y+origin.height>0&&origin.y<innerHeight;const from=valid?{transform:`translate(${origin.x-rect.x}px,${origin.y-rect.y}px) scale(${origin.width/rect.width},${origin.height/rect.height})`,opacity:1}:{transform:\"scale(.96)\",opacity:0};const live=framePose.current,livePose=live?{transform:`translate(${live.x-rect.x}px,${live.y-rect.y}px) scale(${live.width/rect.width},${live.height/rect.height})`,opacity:1}:null;const end={transform:\"none\",opacity:1};frame.style.transformOrigin=\"0 0\";const duration=reduced?0:popupClosing?valid?450:200:450;const animation=frame.animate(popupClosing?[livePose||end,from]:[livePose||from,end],{duration,easing:\"cubic-bezier(.7,0,.2,1)\",fill:\"both\"});const pa=panel?.animate(popupClosing?[{opacity:1,transform:\"none\"},{opacity:0,transform:\"translateX(-16px)\"}]:[{opacity:0,transform:\"translateX(-16px)\"},{opacity:1,transform:\"none\"}],{duration:reduced?0:250,fill:\"both\"});animation.onfinish=()=>{if(popupClosing)onExit?.();else{framePose.current=null;setFrameReady(true);animation.cancel();pa?.cancel();}};return()=>{framePose.current=frame.getBoundingClientRect();animation.cancel();pa?.cancel();};},[popup,popupClosing]);return /*#__PURE__*/_jsx(DetailContext.Provider,{value:scope,children:/*#__PURE__*/_jsxs(\"section\",{className:\"pf-detail\"+(closing?\" pf-detail-closing\":\"\")+(popup?\" pf-detail-popup\":\"\")+(popupClosing?\" pf-detail-exit\":\"\"),\"data-current-project\":slug,style:{width:\"100%\",height:\"100svh\",position:\"relative\",overflow:\"hidden\",...style},onClickCapture:clickCapture,children:[/*#__PURE__*/_jsx(\"style\",{children:css}),pageCursor,/*#__PURE__*/_jsxs(\"div\",{className:\"pf-detail-source\",\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsx(\"div\",{ref:identityRef,children:identity}),projects,related]}),/*#__PURE__*/_jsxs(\"div\",{className:\"pf-detail-shell\",children:[/*#__PURE__*/_jsxs(\"nav\",{ref:panelRef,className:\"pf-detail-layers\",\"data-pf-cursor-obstacle\":\"\",\"aria-label\":\"Projects\",onKeyDown:navKeys,children:[/*#__PURE__*/_jsxs(\"div\",{className:\"pf-detail-layer-tabs\",children:[/*#__PURE__*/_jsx(\"b\",{children:\"Layers\"}),/*#__PURE__*/_jsx(\"span\",{children:\"Assets\"}),/*#__PURE__*/_jsx(\"span\",{children:\"Projects\"})]}),/*#__PURE__*/_jsx(\"div\",{className:\"pf-detail-progress\",\"aria-hidden\":\"true\"}),/*#__PURE__*/_jsx(\"div\",{className:\"pf-detail-back\",ref:backRef,children:back}),/*#__PURE__*/_jsx(\"div\",{className:\"pf-detail-layer-list\",ref:setLayersTarget}),/*#__PURE__*/_jsx(SectionChips,{scope:scope,className:\"pf-detail-tablet-chips\"}),/*#__PURE__*/_jsx(\"div\",{className:\"pf-detail-hint\",\"aria-hidden\":\"true\",children:\"↑↓ move \\xb7 Esc closes\"})]}),/*#__PURE__*/_jsxs(\"article\",{ref:frameRef,className:\"pf-detail-frame\",\"data-pf-cursor-obstacle\":\"\",\"aria-label\":title,children:[popup&&/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"pf-detail-close\",\"data-pf-cursor-obstacle\":\"\",style:{visibility:frameReady&&!popupClosing?\"visible\":\"hidden\"},\"aria-label\":\"Close\",onClick:onClose,children:/*#__PURE__*/_jsx(\"svg\",{width:\"16\",height:\"16\",viewBox:\"0 0 16 16\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"1.5\",children:/*#__PURE__*/_jsx(\"path\",{d:\"m4 4 8 8M12 4l-8 8\"})})}),/*#__PURE__*/_jsx(\"p\",{className:\"pf-detail-label\",\"data-pf-cursor-obstacle\":\"\",\"aria-hidden\":\"true\",children:title}),/*#__PURE__*/_jsxs(\"div\",{className:\"pf-detail-scroll\",ref:scroller,tabIndex:0,role:\"region\",\"aria-label\":title+\" project details\",onWheel:e=>e.stopPropagation(),children:[/*#__PURE__*/_jsx(SectionChips,{scope:scope,className:\"pf-detail-chips\"}),/*#__PURE__*/_jsxs(\"div\",{className:\"pf-detail-content\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"pf-dc-eyebrow\",children:[context&&/*#__PURE__*/_jsx(\"span\",{className:\"pf-dc-chip\",children:context}),date&&/*#__PURE__*/_jsx(\"span\",{children:date})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"pf-dc-title\",children:[/*#__PURE__*/_jsx(Picture,{image:logo,className:\"pf-detail-logo\"}),/*#__PURE__*/_jsx(\"h1\",{children:title})]}),description&&/*#__PURE__*/_jsx(\"p\",{className:\"pf-detail-desc\",children:/^[a-z]/.test(description)?title+\" \"+description:description}),impactItems.length>0&&/*#__PURE__*/_jsx(\"div\",{className:\"pf-dc-impact\",children:impactItems.map((c,i)=>/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"b\",{children:c[0]}),c[1]&&/*#__PURE__*/_jsx(\"span\",{children:c[1]}),c[2]&&/*#__PURE__*/_jsx(\"small\",{children:c[2]})]},i))}),/*#__PURE__*/_jsxs(\"div\",{className:\"pf-dc-row\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"pf-dc-label\",children:\"At a glance\"}),/*#__PURE__*/_jsxs(\"dl\",{className:\"pf-detail-meta\",children:[[[\"Role\",role],[\"Context\",context],[\"Date\",date],[\"Website\",website?/*#__PURE__*/_jsx(\"a\",{className:\"pf-ext-link\",href:website,target:\"_blank\",rel:\"noopener noreferrer\",\"data-pf-ext\":\"\",children:siteLabel(website)}):\"\"]].filter(([,value])=>value).map(([label,value])=>/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"dt\",{children:label}),/*#__PURE__*/_jsx(\"dd\",{children:value})]},label)),teamItems.length>0&&/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"dt\",{children:\"Team\"}),/*#__PURE__*/_jsx(\"dd\",{children:teamItems.map((c,i)=>/*#__PURE__*/_jsxs(\"span\",{style:{display:\"block\"},children:[c[0],c[1]&&/*#__PURE__*/_jsx(\"small\",{style:{display:\"inline\",marginLeft:8},children:c[1]})]},i))})]})]})]}),thumbnail?.src&&/*#__PURE__*/_jsxs(\"figure\",{className:\"pf-dc-hero\",children:[/*#__PURE__*/_jsx(Picture,{image:thumbnail,popup:popup}),/*#__PURE__*/_jsxs(\"figcaption\",{children:[/*#__PURE__*/_jsx(\"b\",{children:title}),\" / Overview\"]})]}),/*#__PURE__*/_jsx(ProjectStory,{popup:popup,details:details,image1:image1,image2:image2,image3:image3}),achievementTitle&&achievementSlugOf(achievementLink)&&/*#__PURE__*/_jsx(\"div\",{className:\"pf-dc-related\",children:/*#__PURE__*/_jsxs(\"a\",{className:\"pf-dc-project\",\"data-pf-go\":\"\",href:\"/achievement#\"+encodeURIComponent(achievementSlugOf(achievementLink)),children:[achievementImage?.src&&/*#__PURE__*/_jsx(\"img\",{className:\"pf-dc-project-img\",src:achievementImage.src,srcSet:achievementImage.srcSet,sizes:\"(max-width:809px) 90vw, 336px\",alt:\"\",loading:\"lazy\",draggable:false}),/*#__PURE__*/_jsxs(\"span\",{className:\"pf-dc-project-text\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"pf-dc-project-label\",children:\"Related achievement\"}),/*#__PURE__*/_jsx(\"b\",{children:achievementTitle}),achievementOrganizer&&/*#__PURE__*/_jsx(\"span\",{className:\"pf-dc-project-desc\",children:achievementOrganizer})]})]})})]},slug)]}),/*#__PURE__*/_jsxs(\"svg\",{className:\"pf-detail-selection\",\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsx(\"rect\",{x:0,y:0,width:\"100%\",height:\"100%\",fill:\"none\",stroke:BLUE,strokeWidth:2}),[[0,0],[\"100%\",0],[\"100%\",\"100%\"],[0,\"100%\"]].map(([x,y],i)=>/*#__PURE__*/_jsx(\"svg\",{x:x,y:y,overflow:\"visible\",children:/*#__PURE__*/_jsx(\"rect\",{x:-4.5,y:-4.5,width:9,height:9,fill:\"#fff\",stroke:BLUE,strokeWidth:2})},i))]})]})]})]})});}const Scope=/*#__PURE__*/React.createContext(null);const pad=(value,length=2)=>String(value).padStart(length,\"0\");// Resolve only the public native CMS anchor; no collection runtime or Preview URL is reconstructed.\nconst slugFromHref=href=>{const p=new URL(href,document.baseURI).pathname.split(\"/\").filter(Boolean);if(p[p.length-1]===\"pf\")p.pop();return decodeURIComponent(p[p.length-1]||\"\");};const pfDetailHref=href=>{const at=href.search(/[?#]/),path=at<0?href:href.slice(0,at);// /old-projects/x and /projects/x/pf both become /projects/x, the live detail page.\nreturn path.replace(/\\/$/,\"\").replace(/\\/pf$/,\"\").replace(/^(https?:\\/\\/[^/]+)?\\/old-projects\\//,\"$1/projects/\")+(at<0?\"\":href.slice(at));};const galleryCSS=`\n.pf-project-popup{position:fixed;inset:0;z-index:40;pointer-events:none}.pf-project-scrim{position:absolute;inset:0;background:rgba(0,0,0,.14);pointer-events:auto;animation:pfScrimIn 200ms both}html[data-pf-theme=dark] .pf-project-scrim{background:rgba(0,0,0,.42)}@keyframes pfScrimIn{from{opacity:0}to{opacity:1}}\n\n.pf-project{--canvas:var(--token-AsrIz4LAu,#f5f5f5);--card:var(--token-w3EVZzR6J,#fff);--hover:var(--token-oKzL5URR2,#efefef);--line:var(--token-b6ib_tbpb,#e2e2e2);--ink:var(--token-En4j3Y80j,#0b0b0b);--body:var(--token-yJs8jXTFl,#4a4a4a);--mute:var(--token-pSg9IM4HF,#6b6b6b);--blue:var(--token-EnhogXQCs,#0b72c2);--focus:var(--token-xonPDtQSO,#0d99ff);--white:var(--token-k7Lop7vCs,#fff);box-sizing:border-box;color:var(--ink);background:var(--canvas);font:400 16px/1.55 Geist,Inter,sans-serif;isolation:isolate}\nhtml[data-pf-theme=dark] .pf-project{--canvas:var(--token-AsrIz4LAu,#1e1e1e);--card:var(--token-w3EVZzR6J,#2c2c2c);--hover:var(--token-oKzL5URR2,#383838);--line:var(--token-b6ib_tbpb,#404040);--ink:var(--token-En4j3Y80j,#f5f5f5);--body:var(--token-yJs8jXTFl,#cfcfcf);--mute:var(--token-pSg9IM4HF,#a3a3a3)}\nhtml[data-pf-theme-transition=true] .pf-project *{transition-property:transform,opacity,filter,translate,max-width,flex-grow!important}.pf-project *{box-sizing:border-box}.pf-project button,.pf-project a{-webkit-tap-highlight-color:transparent}.pf-project a{color:inherit;text-decoration:none}.pf-project :focus-visible{outline:2px solid var(--focus);outline-offset:5px;box-shadow:0 0 0 7px var(--canvas),0 0 0 9px var(--ink)}.pf-project .pf-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}\n.pf-project-grid-heading{position:absolute;top:80px;left:50%;transform:translateX(-50%);margin:0;color:var(--mute);font:500 12px/1.4 'Geist Mono',monospace;text-transform:uppercase;letter-spacing:.08em}\n::view-transition-old(pf-project-gallery),::view-transition-new(pf-project-gallery){animation-duration:300ms;animation-timing-function:cubic-bezier(.22,.68,.25,1)}\n.pf-project-toggle{position:absolute;top:72px;right:16px;z-index:3;display:flex;box-sizing:border-box;gap:2px;padding:3px;border:1px solid var(--line);border-radius:10px;background:var(--card)}\n.pf-project-toggle button{height:32px;padding:0 12px;border:0;border-radius:7px;background:transparent;color:var(--body);font:500 13px/1 Geist,Inter,sans-serif;cursor:pointer;transition:background 150ms,color 150ms}.pf-project-toggle button:hover{background:var(--hover)}.pf-project-toggle button[aria-checked=true]{background:var(--blue);color:var(--white)}\n.pf-project-stage{position:absolute;inset:128px 40px 104px;container-type:size;outline:none}.pf-project .pf-project-stage:focus-visible{outline:none;box-shadow:none}.pf-project-stage[data-mode=Scroll]{inset:0;overflow:visible;touch-action:pan-x}.pf-project-stage[data-mode=Grid]{display:flex;align-items:center;gap:12px;overflow-y:auto;overscroll-behavior:contain;padding:24px 8px}\n.pf-project-source{position:absolute;width:1px;height:1px;overflow:hidden;pointer-events:none;visibility:hidden}\n.pf-project-position{position:absolute;bottom:80px;left:48px;color:var(--mute);font:500 12px/1.4 'Geist Mono',monospace;letter-spacing:.04em}.pf-project-hint{position:absolute;bottom:80px;right:48px;color:var(--mute);font:500 12px/1.4 'Geist Mono',monospace}\n.pf-project-item{min-width:0;order:var(--rank)}.pf-project-item[data-mode=Scroll]{position:absolute;inset:0;z-index:var(--depth);pointer-events:none;visibility:hidden}.pf-project-item[data-mode=Scroll][data-near=true]{visibility:visible}\n.pf-project-media{display:block;overflow:hidden;background:var(--card);border-radius:12px;box-shadow:0 0 2px rgba(0,0,0,.08),0 4px 12px rgba(0,0,0,.10);cursor:pointer}.pf-project-media img{display:block;width:100%;height:100%;object-fit:cover;border-radius:inherit}\n.pf-project-item[data-mode=Scroll] .pf-project-frame{position:absolute;left:50%;top:50%;width:50cqw;aspect-ratio:var(--ratio);transform:translate(-50%,calc(-50% + var(--scroll-y,0px))) scale(var(--scale));opacity:var(--fade);filter:blur(var(--blur));pointer-events:auto;transition:transform 450ms var(--ease-out,cubic-bezier(.22,1,.36,1)),opacity 450ms var(--ease-out,cubic-bezier(.22,1,.36,1)),filter 450ms var(--ease-out,cubic-bezier(.22,1,.36,1));z-index:var(--depth)}\n.pf-project-item[data-mode=Scroll] .pf-project-name{position:absolute;left:24px;top:50%;width:21%;margin:0;transform:translateY(-50%);font:600 clamp(28px,3.4cqw,48px)/1.05 Inter,sans-serif;letter-spacing:-.025em;overflow-wrap:anywhere}\n.pf-project-caption{color:var(--body)}.pf-project-caption p{margin:0 0 24px;font:400 16px/1.55 Geist,Inter,sans-serif}.pf-project-item[data-mode=Scroll] .pf-project-caption{position:absolute;right:24px;top:50%;width:21%;transform:translateY(-50%)}\n.pf-project-meta{display:grid;gap:16px;margin:0}.pf-project-meta div{display:grid;gap:4px}.pf-project-meta dt{font:500 12px/1.4 'Geist Mono',monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}.pf-project-meta dd{margin:0;font-size:16px;line-height:1.4}\n.pf-project-meta dd a.pf-ext-link{color:var(--blue);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;overflow-wrap:anywhere}.pf-project-meta dd a.pf-ext-link::after{content:\"\\\\2197\";display:inline-block;margin-left:4px;text-decoration:none}\n.pf-project-item[data-mode=Scroll] .pf-project-caption{z-index:31!important;pointer-events:none!important}.pf-project-item[data-mode=Scroll] .pf-project-caption a.pf-ext-link{pointer-events:auto}\n.pf-project-item[data-mode=Scroll] .pf-project-name,.pf-project-item[data-mode=Scroll] .pf-project-caption{opacity:0;visibility:hidden;translate:0 6px;transition:opacity 250ms,translate 300ms,visibility 0s 250ms}.pf-project-item[data-mode=Scroll][data-active=true] .pf-project-name,.pf-project-item[data-mode=Scroll][data-active=true] .pf-project-caption{opacity:1;visibility:visible;translate:0 0;transition:opacity 250ms,translate 300ms,visibility 0s}\n\n.pf-project-stage[data-mode=Grid]{--pv-w:min(540px,42%);display:flex;flex-direction:column;align-items:stretch;justify-content:safe center;gap:0;padding:24px 8px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line) transparent;z-index:1}\n.pf-project-item[data-mode=Grid]{position:static;min-width:0;width:calc(100% - 56px - var(--pv-w));overflow:visible;cursor:pointer;animation:pfProjectFade 400ms ease both;animation-delay:calc(var(--rank) * 40ms)}\n.pf-project-number{display:block;color:var(--mute);font:400 12px/1.4 'Geist Mono',monospace;letter-spacing:.04em}\n.pf-project-row{position:relative;display:grid;grid-template-columns:44px minmax(0,1fr) 24px;align-items:center;gap:12px;min-height:76px;padding:0 12px;border-bottom:1px solid var(--line);transition:background 200ms,padding 250ms cubic-bezier(.22,1,.36,1)}\n.pf-project-item[data-mode=Grid][data-rank=\"0\"] .pf-project-row{border-top:1px solid var(--line)}\n.pf-project-row .pf-project-name{margin:0;font:500 clamp(26px,2.4vw,34px)/1.1 Inter,Geist,sans-serif;letter-spacing:-.025em;color:var(--mute);transition:color 200ms;overflow-wrap:anywhere}\n.pf-project-go{color:var(--blue);opacity:0;transform:translateX(-6px);transition:opacity 200ms,transform 250ms}\n.pf-project-item[data-grid-active=true] .pf-project-row{background:var(--hover);padding-left:20px}\n.pf-project-item[data-grid-active=true] .pf-project-row .pf-project-name{color:var(--ink)}\n.pf-project-item[data-grid-active=true] .pf-project-go{opacity:1;transform:none}\n.pf-project-preview{position:absolute;right:8px;top:50%;width:var(--pv-w);transform:translateY(-50%);opacity:0;visibility:hidden;transition:opacity 280ms,visibility 0s 280ms;cursor:pointer}\n.pf-project-item[data-grid-active=true] .pf-project-preview{opacity:1;visibility:visible;transition:opacity 280ms 60ms,visibility 0s}\n.pf-project-item[data-mode=Grid] .pf-project-media{display:block;width:100%;height:auto;aspect-ratio:16/9;border-radius:0;box-shadow:none;overflow:hidden}\n.pf-project-preview .pf-project-media{box-shadow:0 18px 40px -22px rgba(0,0,0,.5)}\n.pf-project-text{display:block;padding-top:14px}\n.pf-project-card-title{margin:2px 0 0;font:500 clamp(24px,2.2vw,32px)/1.1 Inter,Geist,sans-serif;letter-spacing:-.025em;overflow-wrap:anywhere}\n.pf-project-desc{margin:8px 0 0;color:var(--body);font:400 16px/1.5 Geist,Inter,sans-serif;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}\n.pf-project-meta-line{display:block;margin-top:10px;color:var(--mute);font:500 12px/1.4 'Geist Mono',monospace;letter-spacing:.04em;text-transform:uppercase}\n.pf-project-open{display:inline-block;margin-top:10px;color:var(--blue);font:500 14px/1.4 Geist,Inter,sans-serif}\n.pf-project-card{position:relative}\n@keyframes pfProjectIn{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}@keyframes pfProjectFade{from{opacity:0}to{opacity:1}}\n.pf-project-empty{position:absolute;inset:0;display:grid;place-items:center;color:var(--mute)}\n.pf-project-nav{position:absolute;inset:0;z-index:30;pointer-events:auto}.pf-project-nav>*{width:100%!important;height:100%!important}.pf-project-nav a{position:absolute!important;inset:0!important;width:100%!important;height:100%!important}.pf-project-item[data-mode=Grid]>.pf-project-nav{border-radius:0}.pf-project-item:focus-within .pf-project-media{outline:2px solid var(--focus);outline-offset:5px;box-shadow:0 0 0 7px var(--canvas),0 0 0 9px var(--ink)}\n.pf-project-frame{border-radius:0;box-shadow:none}.pf-project-frame>.pf-project-media{position:relative;width:100%;height:100%;border-radius:0;box-shadow:none}.pf-project-frame-label{position:absolute;left:0;top:-24px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--mute);font:400 12px/18px Geist,Inter,sans-serif;transition:color .18s ease}.pf-project-item[data-active=true] .pf-project-frame-label{color:#0B72C2}html[data-pf-theme=dark] .pf-project-item[data-active=true] .pf-project-frame-label{color:#5CB8FF}.pf-project-selection{position:absolute;inset:0;pointer-events:none;z-index:31;opacity:0;transition:opacity .18s}.pf-project-selection svg{position:absolute;inset:0;overflow:visible}.pf-project-selection .pf-project-handle{display:none}.pf-project-item[data-active=true] .pf-project-selection,.pf-project-frame:hover .pf-project-selection{opacity:1}.pf-project-item[data-active=true] .pf-project-handle{display:block}.pf-project-item[data-active=false] .pf-project-outline{stroke-width:1.5}.pf-project-item[data-mode=Scroll]:focus-within .pf-project-media{outline:none;box-shadow:none}.pf-project .pf-project-item[data-mode=Scroll] :focus-visible{outline:none;box-shadow:none}\n.pf-project-row-link{position:absolute;left:0;right:0;top:50%;height:var(--row-height,250px);transform:translateY(-50%);pointer-events:auto;z-index:30;cursor:pointer}.pf-project-row-link .pf-project-nav{inset:0}.pf-project-row-link>a{position:absolute;inset:0}\n@media(max-width:809px){.pf-project-row-link{top:0;bottom:0;height:auto;transform:none}}\n@media(min-width:1900px){.pf-project-item[data-mode=Scroll] .pf-project-frame{width:42cqw}}\n@media(min-width:810px) and (max-width:1199px){.pf-project-item[data-mode=Scroll] .pf-project-frame{width:86cqw}.pf-project-item[data-mode=Scroll] .pf-project-name{left:24px;top:calc(50% - 43cqw / var(--ratio) - 48px);width:calc(100% - 48px);transform:none;z-index:2}.pf-project-item[data-mode=Scroll] .pf-project-caption{left:auto;right:24px;top:calc(50% + 43cqw / var(--ratio) + 24px);bottom:auto;width:calc(26.35cqw - 48px);transform:none;padding:0;z-index:2}.pf-project-meta{grid-template-columns:1fr 1fr}}\n@media(min-width:810px) and (max-width:1199px){.pf-project-stage[data-mode=Grid]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-content:start;align-items:start;gap:28px 18px;padding:24px 0}.pf-project-item[data-mode=Grid]{position:relative;width:100%;max-width:none;align-self:start;animation-name:pfProjectIn}.pf-project-card .pf-project-text{padding-top:10px}.pf-project-card .pf-project-card-title{margin:3px 0 0;font-size:18px}.pf-project-card .pf-project-desc{margin-top:6px;font-size:14px;-webkit-line-clamp:2}.pf-project-card .pf-project-meta-line{margin-top:6px}.pf-project-item[data-mode=Scroll] .pf-project-name{font-size:28px}.pf-project-stage{inset-inline:24px}}\n@media(max-width:809px){.pf-project-toggle{top:64px;right:16px}.pf-project-stage{inset:120px 24px 108px}.pf-project-position{left:24px;bottom:84px}.pf-project-hint{right:24px;bottom:84px;font-size:11px}.pf-project-item[data-mode=Scroll] .pf-project-frame{top:50%;width:86cqw;transform:translate(-50%,calc(-50% + var(--scroll-y,0px))) scale(var(--scale))}.pf-project-item[data-mode=Scroll] .pf-project-name{left:24px;top:120px;width:calc(100% - 48px);transform:none;font-size:28px;z-index:2}.pf-project-item[data-mode=Scroll] .pf-project-caption{left:24px;right:24px;top:auto;bottom:100px;width:auto;transform:none;background:var(--canvas);padding:16px 0 0;z-index:2}.pf-project-caption p{margin-bottom:16px}.pf-project-meta{grid-template-columns:1fr 1fr;gap:12px}.pf-project-meta dd{font-size:16px}.pf-project-stage[data-mode=Grid]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;align-items:start;gap:24px 14px;padding:88px 0 24px}.pf-project-item[data-mode=Grid]{position:relative;width:100%;max-width:none;align-self:start;animation-name:pfProjectIn}.pf-project-card .pf-project-card-title{font-size:16px}.pf-project-card .pf-project-desc{font-size:13px}}\n@media(max-width:359px){.pf-project-stage[data-mode=Grid]{grid-template-columns:1fr}.pf-project-hint{display:none}}\n@media(max-height:690px) and (max-width:809px){.pf-project-stage{top:112px;bottom:96px}.pf-project-caption p{margin-bottom:8px}.pf-project-meta{gap:8px}.pf-project-meta div{gap:0}.pf-project-item[data-mode=Scroll] .pf-project-frame{top:50%;width:86cqw}.pf-project-item[data-mode=Scroll] .pf-project-name{font-size:24px}.pf-project-caption{padding-top:8px!important}.pf-project-hint{display:none}.pf-project-position{bottom:72px}}\n@media(prefers-reduced-motion:reduce){.pf-project *{animation:none!important;transition:none!important}.pf-project-item[data-mode=Scroll] .pf-project-frame{filter:none!important}}\n/* Mobile audit 9 Nov 2026: the Scroll/Grid toggle sits above the full-screen row links (it was unreachable: taps opened the project), and on phones the description + meta sit ABOVE the thumbnail, clear of the dock. */\n.pf-project-toggle{z-index:20}\n@media(max-width:809px){.pf-project-item[data-mode=Scroll] .pf-project-caption{top:auto;bottom:calc(50% + 43cqw / var(--ratio) + 42px);left:24px;right:24px;width:auto;background:transparent;padding:0!important;max-height:34vh;overflow:hidden}.pf-project-position{bottom:124px}.pf-project-hint{display:none}}\n@media(max-height:700px) and (max-width:809px){.pf-project-caption p{display:none}}\n/* Phone in landscape (about 390px tall): the 86cqw thumbnail was taller than the screen. Size it by height; title left, description right, like desktop. */\n@media(orientation:landscape) and (max-height:520px){.pf-project-item[data-mode=Scroll] .pf-project-frame{width:min(50cqw,calc((100cqh - 130px) * var(--ratio)))}.pf-project-item[data-mode=Scroll] .pf-project-name{left:20px;top:50%;width:21%;transform:translateY(-50%);font-size:24px}.pf-project-item[data-mode=Scroll] .pf-project-caption{left:auto;right:20px;top:50%;bottom:auto;width:21%;transform:translateY(-50%);max-height:none;overflow:visible;padding:0!important}.pf-project-caption p{display:block;font-size:13px;line-height:1.4;margin:0 0 10px}.pf-project-meta{grid-template-columns:1fr;gap:6px}.pf-project-meta dd{font-size:13px}.pf-project-toggle{top:52px;right:16px}.pf-project-position{bottom:60px;left:20px}.pf-project-hint{display:none}.pf-project-stage[data-mode=Grid]{inset:96px 20px 64px;padding-top:0}}\n/* Canvas grid, 14 Nov 2026: frames on a dotted Figma canvas. Every line of text sits UNDER the thumbnail; hover/focus draws the selection (outline, corner handles, size tag). The old index (data-gs=List) is kept as a Framer control. */\n.pf-project-stage[data-mode=Grid][data-gs=Canvas]{inset:108px 0 92px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-content:start;align-items:start;justify-content:stretch;gap:56px 44px;padding:44px max(48px,calc((100% - 1180px) / 2)) 140px;overflow-y:auto;overflow-x:hidden;container-type:normal;scrollbar-width:thin;scrollbar-color:var(--line) transparent}\n.pf-project-item[data-mode=Grid][data-gs=Canvas]{position:relative;width:100%;max-width:none;align-self:start;order:var(--rank);animation-name:pfProjectIn;cursor:pointer}\n.pf-project-item[data-gs=Canvas] .pf-project-fr{position:relative}\n.pf-project-item[data-gs=Canvas] .pf-project-media{display:block;width:100%;height:auto;aspect-ratio:16/9;border-radius:0;box-shadow:0 1px 2px rgba(0,0,0,.08),0 14px 30px -16px rgba(0,0,0,.28);overflow:hidden}\n.pf-project-item[data-gs=Canvas] .pf-project-selection{position:absolute;inset:0;pointer-events:none;z-index:3;opacity:0;transition:opacity .15s}\n.pf-project-item[data-gs=Canvas] .pf-project-handle{display:none}\n.pf-project-item[data-gs=Canvas]:hover .pf-project-selection,.pf-project-item[data-gs=Canvas]:focus-within .pf-project-selection{opacity:1}\n.pf-project-item[data-gs=Canvas]:hover .pf-project-handle,.pf-project-item[data-gs=Canvas]:focus-within .pf-project-handle{display:block}\n.pf-project-size{position:absolute;left:50%;top:calc(100% + 8px);transform:translateX(-50%);padding:3px 7px;border-radius:3px;background:#0D99FF;color:#fff;font:500 11px/1.2 Geist,Inter,sans-serif;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s;z-index:4}\n.pf-project-item[data-gs=Canvas]:hover .pf-project-size,.pf-project-item[data-gs=Canvas]:focus-within .pf-project-size{opacity:1}\n.pf-project-item[data-gs=Canvas] .pf-project-text{display:block;padding-top:34px}\n.pf-project-item[data-gs=Canvas] .pf-project-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}\n.pf-project-item[data-gs=Canvas] .pf-project-card-title{margin:0;font:600 clamp(20px,1.7vw,26px)/1.15 Inter,Geist,sans-serif;letter-spacing:-.02em;overflow-wrap:anywhere}\n.pf-project-item[data-gs=Canvas] .pf-project-meta-line{display:block;margin-top:6px}\n.pf-project-item[data-gs=Canvas] .pf-project-desc{margin:10px 0 0;font:400 15px/1.5 Geist,Inter,sans-serif;-webkit-line-clamp:2}\n.pf-project-item[data-gs=Canvas] .pf-project-card{position:relative}\n.pf-project:has(.pf-project-stage[data-mode=Grid][data-gs=Canvas]) .pf-project-position,.pf-project:has(.pf-project-stage[data-mode=Grid][data-gs=Canvas]) .pf-project-hint{display:none}\n@media (hover:none){.pf-project-item[data-gs=Canvas] .pf-project-selection{opacity:1}.pf-project-item[data-gs=Canvas] .pf-project-outline{stroke-width:1.5px}.pf-project-size{display:none}.pf-project-item[data-gs=Canvas] .pf-project-text{padding-top:16px}}\n@media(max-width:1199px){.pf-project-stage[data-mode=Grid][data-gs=Canvas]{grid-template-columns:repeat(2,minmax(0,1fr));gap:48px 28px;padding:36px 32px 140px}}\n@media(max-width:809px){.pf-project-stage[data-mode=Grid][data-gs=Canvas]{inset:104px 0 92px;grid-template-columns:minmax(0,1fr);gap:36px;padding:32px 24px 150px}.pf-project-item[data-gs=Canvas] .pf-project-card-title{font-size:22px}.pf-project-item[data-gs=Canvas] .pf-project-desc{font-size:15px;-webkit-line-clamp:3}}\n.pf-project-pager,.pf-project-item[data-mode=Scroll] .pf-project-open,.pf-project-lead{display:none}\n/* Phone, Scroll mode (14 Nov 2026): one project at a time, big thumbnail on top, everything to read UNDER it. The neighbours no longer sit behind the text. */\n@media(max-width:809px) and (min-height:521px){\n.pf-project-item[data-mode=Scroll]{--fw:min(calc(100cqw - 48px),calc(var(--ratio) * 34cqh));--fh:calc(var(--fw) / var(--ratio));--ft:max(136px,calc(50cqh - var(--fh) / 2 - 130px))}\n.pf-project-item[data-mode=Scroll] .pf-project-frame{top:var(--ft);width:var(--fw);transform:translate(-50%,var(--scroll-y,0px)) scale(var(--scale))}\n.pf-project-item[data-mode=Scroll]:not([data-active=true]) .pf-project-frame{opacity:0;pointer-events:none}\n.pf-project-item[data-mode=Scroll] .pf-project-frame-label{display:none}\n.pf-project-item[data-mode=Scroll] .pf-project-name{left:24px;top:calc(var(--ft) + var(--fh) + 26px);width:calc(100% - 48px);transform:none;font-size:30px;line-height:1.1}\n.pf-project-item[data-mode=Scroll] .pf-project-caption{left:24px;right:24px;top:calc(var(--ft) + var(--fh) + 74px);bottom:auto;width:auto;transform:none;max-height:none;overflow:visible;padding:0!important;background:transparent}\n.pf-project-caption p{display:-webkit-box;margin-bottom:16px;font-size:16px;line-height:1.5;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}\n.pf-project-meta{grid-template-columns:1fr 1fr;gap:12px}\n.pf-project-item[data-mode=Scroll] .pf-project-open{display:inline-block;margin-top:18px;color:var(--blue);font:500 16px/1.4 Geist,Inter,sans-serif}\n.pf-project-pager{display:flex;position:absolute;right:24px;bottom:112px;gap:8px;z-index:20}\n.pf-project-pager button{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:var(--card);color:var(--ink);font:500 18px/1 Geist,Inter,sans-serif;cursor:pointer}\n.pf-project-pager button:disabled{opacity:.35;cursor:default}\n.pf-project-position{left:24px;bottom:126px}\n.pf-project-lead{display:inline;color:var(--ink);font-weight:600}\n}\n`;function Gallery({items,pageCursor,related,style,gridStyle=\"Canvas\"}){const[records,setRecords]=React.useState(new Map);const[popupSlug,setPopupSlug]=React.useState(\"\"),[closing,setClosing]=React.useState(false),[origin,setOrigin]=React.useState();const background=React.useRef(null),dialog=React.useRef(null),trigger=React.useRef(null),closingRef=React.useRef(false),popupRef=React.useRef(\"\");popupRef.current=popupSlug;const repairingHash=React.useRef(false),completeRecords=React.useRef(false),recordsRef=React.useRef(records);recordsRef.current=records;const record=React.useCallback((rank,item)=>{setRecords(old=>new Map(old).set(rank,item));return()=>setRecords(old=>{const next=new Map(old);next.delete(rank);return next;});},[]);const readHash=()=>{try{return decodeURIComponent(location.hash.slice(1));}catch{return\"\";}};const captureOrigin=el=>{const r=el?.querySelector(\".pf-project-frame,.pf-project-media\")?.getBoundingClientRect();setOrigin(r?{x:r.x,y:r.y,width:r.width,height:r.height}:undefined);};const open=React.useCallback((item,source)=>{if(closingRef.current)return;trigger.current=source.querySelector(\"a[href]\")||source;captureOrigin(source);history.pushState({pfProjectPopup:true},\"\",location.pathname+location.search+\"#\"+encodeURIComponent(item.slug));React.startTransition(()=>setPopupSlug(item.slug));},[]);const requestClose=()=>{if(closingRef.current)return;const item=Array.from(recordsRef.current.values()).find(r=>r.slug===popupRef.current),source=item?stage.current?.querySelector('[data-rank=\"'+item.rank+'\"]'):null;if(source){captureOrigin(source);trigger.current=source.querySelector(\"a[href]\")||source;}closingRef.current=true;setClosing(true);if(history.state?.pfProjectPopup)history.back();else history.replaceState({pfProjectPopup:false},\"\",location.pathname+location.search);};const finishClose=()=>{setPopupSlug(\"\");setClosing(false);closingRef.current=false;requestAnimationFrame(()=>{background.current?.removeAttribute(\"inert\");const source=stage.current?.querySelector('[data-active=\"true\"] a[href]')||(trigger.current?.isConnected?trigger.current:null);if(source)source.focus();else stage.current?.focus();});};React.useEffect(()=>{const sync=()=>{const slug=readHash();if(!slug)repairingHash.current=false;if(!slug&&popupRef.current){closingRef.current=true;setClosing(true);}else if(slug){const item=Array.from(recordsRef.current.values()).find(r=>r.slug===slug);if(!item&&completeRecords.current){const keep=!!popupRef.current&&!closingRef.current;if(keep){if(!repairingHash.current){repairingHash.current=true;history.back();}return;}history.replaceState({pfProjectPopup:false},\"\",location.pathname+location.search);return;}repairingHash.current=false;const source=item?stage.current?.querySelector('[data-rank=\"'+item.rank+'\"]'):null;if(source){captureOrigin(source);trigger.current=source.querySelector(\"a[href]\")||source;}else setOrigin(undefined);setClosing(false);closingRef.current=false;React.startTransition(()=>setPopupSlug(slug));}};sync();window.addEventListener(\"popstate\",sync);window.addEventListener(\"hashchange\",sync);return()=>{window.removeEventListener(\"popstate\",sync);window.removeEventListener(\"hashchange\",sync);};},[]);const popupItem=Array.from(records.values()).find(r=>r.slug===popupSlug);const relatedItems=Array.from(records.values()).filter(r=>r.slug!==popupSlug).sort((a,b)=>a.rank-b.rank).slice(0,2);React.useEffect(()=>{if(popupItem){setActive(popupItem.rank);if(!history.state?.pfProjectPopup){const hash=location.hash,base=location.pathname+location.search;history.replaceState({pfProjectPopup:false},\"\",base);history.pushState({pfProjectPopup:true},\"\",base+hash);}}},[popupItem?.slug]);React.useLayoutEffect(()=>{const back=background.current;if(!back)return;const active=!!popupItem;back.toggleAttribute(\"inert\",active);back.setAttribute(\"aria-hidden\",String(active));if(active){const target=dialog.current?.querySelector(\".pf-detail-scroll\");target?.focus();}return()=>{back.removeAttribute(\"inert\");back.removeAttribute(\"aria-hidden\");};},[!!popupItem]);React.useEffect(()=>{if(!popupItem)return;const trap=e=>{const root=dialog.current;if(!root)return;if(e.key===\"Escape\"){e.preventDefault();e.stopImmediatePropagation();requestClose();return;}if(e.key===\"Tab\"){const list=Array.from(root.querySelectorAll('a[href],button,[tabindex=\"0\"]')).filter(n=>n.getClientRects().length&&getComputedStyle(n).visibility!==\"hidden\"&&!n.closest('[aria-hidden=\"true\"]'));if(!list.length)return;const first=list[0],last=list[list.length-1];if(e.shiftKey&&(document.activeElement===first||!root.contains(document.activeElement))){e.preventDefault();last.focus();}else if(!e.shiftKey&&(document.activeElement===last||!root.contains(document.activeElement))){e.preventDefault();first.focus();}}else if([\"ArrowUp\",\"ArrowDown\",\"PageUp\",\"PageDown\",\"Home\",\"End\"].includes(e.key)&&!e.target.closest(\".pf-detail-scroll,.pf-detail-layers\")){e.preventDefault();e.stopImmediatePropagation();}};window.addEventListener(\"keydown\",trap,true);return()=>window.removeEventListener(\"keydown\",trap,true);},[!!popupItem]);const navigatePopup=href=>{const item=Array.from(records.values()).find(r=>r.slug===slugFromHref(href));if(!item)return;const source=stage.current?.querySelector('[data-rank=\"'+item.rank+'\"]');trigger.current=source?.querySelector(\"a[href]\")||null;captureOrigin(source);history.replaceState({pfProjectPopup:!!history.state?.pfProjectPopup},\"\",location.pathname+location.search+\"#\"+encodeURIComponent(item.slug));React.startTransition(()=>setPopupSlug(item.slug));};const[mode,setMode]=React.useState(\"Scroll\");const[active,setActive]=React.useState(0);const[count,setCount]=React.useState(0);completeRecords.current=count>0&&records.size===count;const[target,setTarget]=React.useState(null);const[desktop,setDesktop]=React.useState(false);const[hovered,setHovered]=React.useState(null);const[focused,setFocused]=React.useState(null);const[gridSel,setGridSel]=React.useState(0);// The selected row of the desktop index: the hovered one, else the focused one, else the last one used.\nconst gridActive=hovered??focused??gridSel;const hoverGrid=React.useCallback(index=>{if(index===null)setHovered(null);else if(matchMedia(\"(min-width:1200px) and (hover:hover) and (pointer:fine)\").matches){setHovered(index);setGridSel(index);}},[]);const focusGrid=React.useCallback(index=>{setFocused(index);if(index!==null)setGridSel(index);},[]);React.useEffect(()=>{const mq=matchMedia(\"(min-width:1200px)\");const update=()=>setDesktop(mq.matches);update();mq.addEventListener(\"change\",update);return()=>mq.removeEventListener(\"change\",update);},[]);const members=React.useRef(new Map);const stage=React.useRef(null);const wheel=React.useRef({last:0,locked:false,sum:0});const touch=React.useRef(null);const suppressClick=React.useRef(false);const attachStage=React.useCallback(node=>{stage.current=node;setTarget(node);},[]);const register=React.useCallback((index,total)=>{members.current.set(index,total);const update=()=>setCount(Math.max(0,...members.current.values()));update();return()=>{members.current.delete(index);update();};},[]);const activate=React.useCallback(index=>setActive(Math.max(0,Math.min(count-1,index))),[count]);React.useEffect(()=>{setActive(index=>Math.max(0,Math.min(index,count-1)));},[count]);// UI sound: stepping through the cards, the Scroll/Grid switch (in changeMode) and the pop-up. Silent until the first gesture.\nconst prevActive=React.useRef(active),prevPopup=React.useRef(popupSlug),prevClosing=React.useRef(false);React.useEffect(()=>{const from=prevActive.current;prevActive.current=active;if(from!==active&&mode===\"Scroll\"&&!popupSlug)sfx(\"step\");},[active]);React.useEffect(()=>{if(popupSlug&&!prevPopup.current)sfx(\"popup-open\");prevPopup.current=popupSlug;},[popupSlug]);React.useEffect(()=>{if(closing&&!prevClosing.current)sfx(\"popup-close\");prevClosing.current=closing;},[closing]);React.useEffect(()=>{const node=stage.current;if(!node||mode!==\"Scroll\")return;const onWheel=event=>{if(event.ctrlKey||Math.abs(event.deltaX)>Math.abs(event.deltaY))return;event.preventDefault();const now=performance.now(),state=wheel.current;// Rearm only after the gesture has stopped, including its momentum tail.\nif(now-state.last>220){state.locked=false;state.sum=0;}state.last=now;if(state.locked)return;state.sum+=event.deltaY*(event.deltaMode===1?16:event.deltaMode===2?node.clientHeight:1);if(Math.abs(state.sum)<24)return;state.locked=true;setActive(index=>Math.max(0,Math.min(count-1,index+Math.sign(state.sum))));};node.addEventListener(\"wheel\",onWheel,{passive:false});return()=>node.removeEventListener(\"wheel\",onWheel);},[count,mode]);React.useEffect(()=>{if(closing&&!popupItem){finishClose();return;}if(popupSlug&&!popupItem&&count>0&&records.size===count){history.replaceState({pfProjectPopup:false},\"\",location.pathname+location.search);closingRef.current=false;setClosing(false);setPopupSlug(\"\");}},[closing,popupSlug,!!popupItem,count,records.size]);React.useEffect(()=>{const node=dialog.current;if(!node||!popupItem)return;const wheel=e=>{if(e.ctrlKey||Math.abs(e.deltaX)>Math.abs(e.deltaY))return;if(!e.target.closest(\".pf-detail-scroll,.pf-detail-layers\"))e.preventDefault();e.stopPropagation();};node.addEventListener(\"wheel\",wheel,{passive:false});return()=>node.removeEventListener(\"wheel\",wheel);},[!!popupItem]);const context=React.useMemo(()=>({record,open,target,mode,gridStyle,active,count,activate,register,desktop,gridActive,hoverGrid,focusGrid}),[record,open,target,mode,gridStyle,active,count,activate,register,desktop,gridActive,hoverGrid,focusGrid]);React.useLayoutEffect(()=>{const node=stage.current;if(!node||mode!==\"Scroll\")return;const layout=()=>{const entries=Array.from(node.querySelectorAll('.pf-project-item[data-mode=\"Scroll\"]')).sort((a,b)=>Number(a.dataset.rank)-Number(b.dataset.rank));const center=entries.findIndex(e=>Number(e.dataset.rank)===active);if(center<0)return;const height=i=>{const frame=entries[i]?.querySelector(\".pf-project-frame\");return(frame?.offsetHeight||0)*(i===center?1:Math.abs(i-center)===1?.55:.4);};entries[center].style.setProperty(\"--scroll-y\",\"0px\");for(const direction of[-1,1]){let y=0;for(let i=center+direction;i>=0&&i<entries.length;i+=direction){const before=i-direction;y+=direction*(height(before)/2+24+height(i)/2);entries[i].style.setProperty(\"--scroll-y\",`${y}px`);}}};layout();const observer=new ResizeObserver(layout);observer.observe(node);node.querySelectorAll(\".pf-project-frame\").forEach(e=>observer.observe(e));return()=>observer.disconnect();},[mode,active,count,target]);const changeMode=value=>{if(value===mode)return;sfx(\"filter\");wheel.current={last:0,locked:false,sum:0};const reduce=window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;// Browser snapshots crossfade the same CMS list; no duplicate React tree.\nif(!reduce&&typeof document.startViewTransition===\"function\"){const node=stage.current;node?.style.setProperty(\"view-transition-name\",\"pf-project-gallery\");document.startViewTransition(()=>flushSync(()=>setMode(value))).finished.finally(()=>node?.style.removeProperty(\"view-transition-name\")).catch(()=>{});}else{setMode(value);if(!reduce)stage.current?.animate([{opacity:0},{opacity:1}],{duration:300,easing:\"ease-out\"});}};return /*#__PURE__*/_jsx(Scope.Provider,{value:context,children:/*#__PURE__*/_jsxs(\"section\",{className:\"pf-project\",\"aria-label\":\"Project gallery\",style:{width:\"100%\",height:\"100svh\",minHeight:480,position:\"relative\",overflow:\"hidden\",...style},children:[/*#__PURE__*/_jsx(\"style\",{children:galleryCSS}),pageCursor,/*#__PURE__*/_jsxs(\"div\",{ref:background,className:\"pf-project-background\",style:{position:\"absolute\",inset:0},children:[/*#__PURE__*/_jsx(\"h1\",{className:mode===\"Grid\"?\"pf-project-grid-heading\":\"pf-sr\",children:\"Projects\"}),/*#__PURE__*/_jsx(\"div\",{className:\"pf-project-toggle\",role:\"radiogroup\",\"aria-label\":\"Gallery view\",children:[\"Scroll\",\"Grid\"].map(value=>/*#__PURE__*/_jsx(\"button\",{role:\"radio\",\"aria-checked\":mode===value,tabIndex:mode===value?0:-1,onClick:()=>changeMode(value),onKeyDown:event=>{if(![\"ArrowLeft\",\"ArrowRight\",\"Home\",\"End\"].includes(event.key))return;event.preventDefault();const next=event.key===\"Home\"?\"Scroll\":event.key===\"End\"?\"Grid\":mode===\"Scroll\"?\"Grid\":\"Scroll\";changeMode(next);const buttons=event.currentTarget.parentElement?.querySelectorAll(\"button\");buttons?.[next===\"Scroll\"?0:1]?.focus();},children:value},value))}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"contents\"},onKeyDown:event=>{if(mode!==\"Scroll\"||event.target instanceof HTMLButtonElement)return;const deltas={ArrowUp:-1,PageUp:-1,ArrowDown:1,PageDown:1};if(event.key in deltas||event.key===\"Home\"||event.key===\"End\"){event.preventDefault();activate(event.key===\"Home\"?0:event.key===\"End\"?count-1:active+deltas[event.key]);}else if(event.key===\"Enter\"&&event.target===stage.current){event.preventDefault();stage.current?.querySelector('[aria-current=\"true\"]')?.click();}},onTouchStart:event=>{if(mode===\"Scroll\"){const t=event.touches[0];touch.current={x:t.clientX,y:t.clientY};suppressClick.current=false;}},onTouchEnd:event=>{if(mode!==\"Scroll\"||!touch.current)return;const t=event.changedTouches[0],dx=t.clientX-touch.current.x,dy=t.clientY-touch.current.y;touch.current=null;if(Math.abs(dy)>40&&Math.abs(dy)>Math.abs(dx)){activate(active+(dy<0?1:-1));suppressClick.current=true;}},onTouchCancel:()=>{touch.current=null;},onClickCapture:event=>{if(event.ctrlKey||event.metaKey||event.shiftKey||event.altKey||event.button!==0)return;if(suppressClick.current){suppressClick.current=false;event.preventDefault();event.stopPropagation();return;}if(mode!==\"Scroll\"||!(event.target instanceof Element)||!event.target.closest(\".pf-project-row-link\"))return;// A visible neighbour gets the first click, including on a short phone\n// where its thumbnail may enter the active row's link rectangle.\nconst node=stage.current;const current=node?.querySelector('[data-active=\"true\"]');const atPoint=el=>{const r=el.getBoundingClientRect();return event.clientX>=r.left&&event.clientX<=r.right&&event.clientY>=r.top&&event.clientY<=r.bottom;};if(current&&Array.from(current.querySelectorAll(\".pf-project-media,.pf-project-name,.pf-project-caption\")).some(atPoint))return;const neighbour=Array.from(node?.querySelectorAll('[data-active=\"false\"][data-near=\"true\"]')||[]).find(el=>{const media=el.querySelector(\".pf-project-media\");return media&&atPoint(media);});if(neighbour){event.preventDefault();event.stopPropagation();activate(Number(neighbour.dataset.rank));}},children:[/*#__PURE__*/_jsx(\"div\",{ref:attachStage,className:\"pf-project-stage\",\"data-mode\":mode,\"data-gs\":gridStyle,\"data-active-index\":active,tabIndex:0,role:\"list\",\"aria-label\":mode===\"Scroll\"?\"Projects. Use up and down arrow keys to browse.\":\"Projects grid\",children:count===0&&/*#__PURE__*/_jsx(\"p\",{className:\"pf-project-empty\",children:\"No projects to show.\"})}),/*#__PURE__*/_jsx(\"div\",{className:\"pf-project-source\",children:items})]}),/*#__PURE__*/_jsxs(\"span\",{className:\"pf-project-position\",\"aria-live\":\"polite\",\"aria-atomic\":\"true\",children:[pad(active+(count?1:0)),\" / \",pad(count)]}),mode===\"Scroll\"&&count>1&&/*#__PURE__*/_jsxs(\"div\",{className:\"pf-project-pager\",role:\"group\",\"aria-label\":\"Browse projects\",children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":\"Previous project\",disabled:active<=0,onClick:()=>activate(active-1),children:\"↑\"}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":\"Next project\",disabled:active>=count-1,onClick:()=>activate(active+1),children:\"↓\"})]}),/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-hint\",\"aria-hidden\":\"true\",children:mode===\"Scroll\"?\"Scroll to explore \\xb7 Click to open\":\"Select a project to explore\"})]}),popupItem&&/*#__PURE__*/_jsx(React.Suspense,{fallback:null,children:/*#__PURE__*/_jsxs(\"div\",{ref:dialog,className:\"pf-project-popup\",role:\"dialog\",\"aria-modal\":\"true\",\"aria-label\":popupItem.title,children:[/*#__PURE__*/_jsx(\"div\",{className:\"pf-project-scrim\",onClick:requestClose}),/*#__PURE__*/_jsx(ProjectDetail,{kind:\"Detail\",title:popupItem.title,description:popupItem.description,role:popupItem.role,context:popupItem.context,impact:popupItem.impact,team:popupItem.team,date:popupItem.date,website:popupItem.website,achievementTitle:popupItem.achievementTitle,achievementLink:popupItem.achievementLink,achievementImage:popupItem.achievementImage,achievementOrganizer:popupItem.achievementOrganizer,logo:popupItem.logo,image1:popupItem.image1,image2:popupItem.image2,image3:popupItem.image3,details:popupItem.details,thumbnail:popupItem.image,identity:/*#__PURE__*/_jsx(\"a\",{href:popupItem.href}),popup:true,origin:origin,closing:closing,onClose:requestClose,onExit:finishClose,onNavigate:navigatePopup,back:/*#__PURE__*/_jsx(\"a\",{href:\"/projects\",children:\"‹ Projects\"}),projects:/*#__PURE__*/_jsx(_Fragment,{children:Array.from(records.values()).sort((a,b)=>a.rank-b.rank).map(r=>/*#__PURE__*/_jsx(ProjectDetail,{kind:\"Layer\",title:r.title,index:r.rank,navigation:/*#__PURE__*/_jsx(\"a\",{href:r.href,\"aria-label\":r.title})},r.slug))}),related:relatedItems.length?/*#__PURE__*/_jsx(_Fragment,{children:relatedItems.map(r=>/*#__PURE__*/_jsx(ProjectDetail,{kind:\"Related\",title:r.title,index:r.rank,thumbnail:r.image,navigation:/*#__PURE__*/_jsx(\"a\",{href:r.href,\"aria-label\":r.title})},r.slug))}):undefined})]})})]})});}function Item(props){const scope=React.useContext(Scope);const{index=1,count=1,title=\"\",description=\"\",role=\"\",date=\"\",website:websiteProp=\"\",slug=\"\",image}=props;const website=cleanSite(websiteProp);const rank=Math.max(0,index-1);const[ratio,setRatio]=React.useState(16/9);const article=React.useRef(null),identity=React.useRef(null);const[nativeHref,setNativeHref]=React.useState(\"\");React.useLayoutEffect(()=>{const root=identity.current;if(!root)return;const update=()=>{const a=root.querySelector(\"a[href]\");if(a)setNativeHref(pfDetailHref(a.href));};update();const o=new MutationObserver(update);o.observe(root,{subtree:true,childList:true,attributes:true,attributeFilter:[\"href\"]});return()=>o.disconnect();},[props.navigation,scope?.target,scope?.mode]);React.useEffect(()=>{if(!nativeHref)return;return scope?.record(rank,{...props,rank,href:nativeHref,slug:slugFromHref(nativeHref)});},[scope?.record,rank,nativeHref,props.title,props.description,props.role,props.date,props.context,props.logo,props.image,props.image1,props.image2,props.image3,props.details]);React.useEffect(()=>scope?.register(rank,count),[scope?.register,rank,count]);React.useLayoutEffect(()=>{const node=article.current;if(!node||scope?.mode!==\"Scroll\"||rank!==scope.active)return;const parts=Array.from(node.querySelectorAll(\".pf-project-media,.pf-project-name,.pf-project-caption\"));const measure=()=>node.style.setProperty(\"--row-height\",`${Math.min(scope.target?.clientHeight||1e3,Math.max(0,...parts.map(el=>el.offsetHeight))+32)}px`);measure();const observer=new ResizeObserver(measure);parts.forEach(el=>observer.observe(el));return()=>observer.disconnect();},[scope?.mode,scope?.active,scope?.target,rank,title,description,role,date,ratio]);const portalTarget=scope?.target;React.useEffect(()=>{const node=article.current;if(!node||!scope)return;const update=()=>node.querySelectorAll(\"a[href]\").forEach(link=>{// The external Website link is left alone. A link to a site root (https://example.com/) is always reported with a trailing slash,\n    // so rewriting it without that slash changed the href again on every pass: this observer re-fired itself forever and froze the page.\n    if(!link.hasAttribute(\"data-pf-ext\")){const href=pfDetailHref(link.href);let root=false;try{root=new URL(link.href).pathname===\"/\";}catch{/* keep false */}if(!root&&link.href!==href)link.href=href;}link.tabIndex=scope.mode===\"Grid\"||Math.abs(rank-scope.active)<=2?0:-1;if(scope.mode===\"Scroll\"&&rank===scope.active)link.setAttribute(\"aria-current\",\"true\");else link.removeAttribute(\"aria-current\");});update();const observer=new MutationObserver(update);observer.observe(node,{childList:true,subtree:true,attributes:true,attributeFilter:[\"href\"]});return()=>observer.disconnect();},[scope?.mode,scope?.active,scope?.target,rank,props.navigation,portalTarget]);const fallbackHref=props.detailLink||(slug?\"/projects/\"+encodeURIComponent(slug):\"\");if(!scope||!portalTarget)return /*#__PURE__*/_jsxs(\"noscript\",{children:[/*#__PURE__*/_jsx(\"style\",{children:\".pf-project-source{visibility:visible!important;position:relative!important;width:auto!important;height:auto!important;padding:120px 24px!important}.pf-project-empty{display:none!important}.pf-project-source a{display:block;padding:12px}.pf-project-source div{height:auto!important}\"}),fallbackHref&&/*#__PURE__*/_jsx(\"a\",{href:pfDetailHref(fallbackHref),children:title})]});const{active,mode}=scope,distance=rank-active,current=distance===0,near=Math.abs(distance)<=2;const dateValue=/^\\d{4}-\\d{2}-\\d{2}/.test(date)&&!Number.isNaN(Date.parse(date))?new Intl.DateTimeFormat(\"en\",{month:\"short\",year:\"numeric\",timeZone:\"UTC\"}).format(new Date(date)):date;const vars={\"--rank\":rank,\"--ratio\":ratio,\"--distance\":distance,\"--scale\":current?1:Math.abs(distance)===1?.55:.4,\"--fade\":current?1:Math.abs(distance)===1?.55:.35,\"--blur\":current?\"0px\":\"1.5px\",\"--depth\":10-Math.abs(distance)};const href=props.detailLink||(slug?`/projects/${encodeURIComponent(slug)}`:undefined);const nativeVisibleLink=href?/*#__PURE__*/_jsx(\"a\",{href:pfDetailHref(href),\"aria-label\":title}):props.navigation;const media=(mode===\"Grid\"||near)&&image?.src?/*#__PURE__*/_jsx(\"img\",{src:image.src,srcSet:image.srcSet,sizes:mode===\"Grid\"?\"(max-width:809px) 50vw, (max-width:1199px) 33vw, 42vw\":\"(max-width:809px) 90vw, 50vw\",alt:image.alt||\"\",loading:mode===\"Scroll\"&&rank===0?\"eager\":\"lazy\",fetchPriority:mode===\"Scroll\"&&rank===0?\"high\":\"auto\",decoding:\"async\",onLoad:event=>{const img=event.currentTarget;if(img.naturalWidth&&img.naturalHeight)setRatio(img.naturalWidth/img.naturalHeight);}}):null;const selectionSvg=/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-selection\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsxs(\"svg\",{width:\"100%\",height:\"100%\",children:[/*#__PURE__*/_jsx(\"rect\",{className:\"pf-project-outline\",width:\"100%\",height:\"100%\",fill:\"none\",stroke:\"#0D99FF\",strokeWidth:2}),[[0,0],[100,0],[0,100],[100,100]].map(([x,y],i)=>/*#__PURE__*/_jsx(\"rect\",{className:\"pf-project-handle\",x:`${x}%`,y:`${y}%`,width:9,height:9,fill:\"#fff\",stroke:\"#0D99FF\",strokeWidth:2,transform:\"translate(-4.5,-4.5)\"},i))]})});const frameDecoration=/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-frame-label\",\"aria-hidden\":\"true\",children:title}),selectionSvg]});const gs=scope.gridStyle;const openFromPreview=()=>article.current?.querySelector(\".pf-project-nav a[href]\")?.click();const metaLine=[role,dateValue].filter(Boolean).join(\" \\xb7 \");// Desktop: an index of big titles (left) and one preview (right) with ALL the text under its thumbnail.\n// Tablet and phone: every project is a card, thumbnail first and all the text under it.\n// Canvas (default): every project is a frame on a dotted canvas; ALL the text is under the thumbnail. Hover or focus shows the Figma selection.\nconst canvasCard=/*#__PURE__*/_jsxs(\"div\",{className:\"pf-project-card\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"pf-project-fr\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-media\",children:media}),selectionSvg,/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-size\",\"aria-hidden\":\"true\",children:\"1920 \\xd7 \"+(Math.abs(1920/ratio-1080)<3?1080:Math.round(1920/ratio))})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"pf-project-text\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"pf-project-head\",children:[/*#__PURE__*/_jsx(\"h2\",{className:\"pf-project-card-title\",children:title}),/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-number\",children:pad(index,3)})]}),metaLine&&/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-meta-line\",children:metaLine}),description&&/*#__PURE__*/_jsx(\"p\",{className:\"pf-project-desc\",children:/^[a-z]/.test(description)?title+\" \"+description:description})]}),/*#__PURE__*/_jsx(\"div\",{className:\"pf-project-nav\",children:nativeVisibleLink})]});const gridContent=gs===\"Canvas\"?canvasCard:scope.desktop?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"div\",{className:\"pf-project-row\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-number\",children:pad(index,3)}),/*#__PURE__*/_jsx(\"h2\",{className:\"pf-project-name\",children:title}),/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-go\",\"aria-hidden\":\"true\",children:\"→\"}),/*#__PURE__*/_jsx(\"span\",{className:\"pf-sr\",children:[description,role,dateValue].filter(Boolean).join(\". \")}),/*#__PURE__*/_jsx(\"div\",{className:\"pf-project-nav\",children:nativeVisibleLink})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"pf-project-preview\",\"aria-hidden\":\"true\",onClick:openFromPreview,children:[/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-media\",children:media}),/*#__PURE__*/_jsxs(\"div\",{className:\"pf-project-text\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-number\",children:pad(index,3)}),/*#__PURE__*/_jsx(\"h3\",{className:\"pf-project-card-title\",children:title}),description&&/*#__PURE__*/_jsx(\"p\",{className:\"pf-project-desc\",children:description}),metaLine&&/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-meta-line\",children:metaLine}),/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-open\",children:\"View project →\"})]})]})]}):/*#__PURE__*/_jsxs(\"div\",{className:\"pf-project-card\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-media\",children:media}),/*#__PURE__*/_jsxs(\"div\",{className:\"pf-project-text\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-number\",children:pad(index,3)}),/*#__PURE__*/_jsx(\"h2\",{className:\"pf-project-card-title\",children:title}),metaLine&&/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-meta-line\",children:metaLine}),description&&/*#__PURE__*/_jsx(\"p\",{className:\"pf-project-desc\",children:description})]}),/*#__PURE__*/_jsx(\"div\",{className:\"pf-project-nav\",children:nativeVisibleLink})]});return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{ref:identity,style:{display:\"none\"},\"aria-hidden\":\"true\",children:props.navigation||/*#__PURE__*/_jsx(\"a\",{href:props.detailLink||\"/projects/\"+props.slug})}),/*#__PURE__*/createPortal(/*#__PURE__*/_jsx(\"article\",{ref:article,role:\"listitem\",className:\"pf-project-item\",\"data-mode\":mode,\"data-gs\":gs,\"data-rank\":rank,\"data-grid-active\":scope.gridActive===rank,onPointerEnter:event=>{if(mode===\"Grid\"&&event.pointerType!==\"touch\")scope.hoverGrid(rank);},onPointerLeave:()=>{if(mode===\"Grid\")scope.hoverGrid(null);},onFocusCapture:()=>{if(mode===\"Grid\")scope.focusGrid(rank);},onBlurCapture:event=>{if(mode===\"Grid\"&&!event.currentTarget.contains(event.relatedTarget))scope.focusGrid(null);},\"data-active\":current,\"data-near\":near,\"data-project\":slug||href,style:vars,onClickCapture:event=>{if(event.ctrlKey||event.metaKey||event.shiftKey||event.altKey||event.button!==0)return;if(mode===\"Scroll\"&&!current){event.preventDefault();event.stopPropagation();scope.activate(rank);return;}// An external website link (At a glance, Website) opens its own tab: never the project pop-up.\nif(event.target.closest(\"a[data-pf-ext]\"))return;const a=event.target.closest(\"a[href]\");if(a&&!event.ctrlKey&&!event.metaKey&&!event.shiftKey&&!event.altKey&&event.button===0){event.preventDefault();event.stopPropagation();scope.open({...props,rank,href:pfDetailHref(a.href),slug:slugFromHref(a.href)},event.currentTarget);}},children:mode===\"Grid\"?gridContent:/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"div\",{className:\"pf-project-frame\",children:[frameDecoration,/*#__PURE__*/_jsxs(\"div\",{className:\"pf-project-media\",children:[media,!current&&/*#__PURE__*/_jsx(\"div\",{className:\"pf-project-nav\",children:nativeVisibleLink})]})]}),/*#__PURE__*/_jsx(\"h2\",{className:\"pf-project-name\",\"aria-hidden\":!current,children:title}),/*#__PURE__*/_jsxs(\"div\",{className:\"pf-project-caption\",\"aria-hidden\":!current,children:[/*#__PURE__*/_jsxs(\"p\",{children:[/^[a-z]/.test(description)&&/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-lead\",children:title+\" \"}),description]}),/*#__PURE__*/_jsxs(\"dl\",{className:\"pf-project-meta\",children:[/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"dt\",{children:\"Role\"}),/*#__PURE__*/_jsx(\"dd\",{children:role})]}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"dt\",{children:\"Date\"}),/*#__PURE__*/_jsx(\"dd\",{children:dateValue})]}),website&&/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"dt\",{children:\"Website\"}),/*#__PURE__*/_jsx(\"dd\",{children:/*#__PURE__*/_jsx(\"a\",{className:\"pf-ext-link\",href:website,target:\"_blank\",rel:\"noopener noreferrer\",\"data-pf-ext\":\"\",tabIndex:current?undefined:-1,children:siteLabel(website)})})]})]}),/*#__PURE__*/_jsx(\"span\",{className:\"pf-project-open\",\"aria-hidden\":\"true\",children:\"View project →\"})]}),current&&/*#__PURE__*/_jsx(\"div\",{className:\"pf-project-row-link\",\"data-pf-open\":\"\",children:/*#__PURE__*/_jsx(\"div\",{className:\"pf-project-nav\",children:nativeVisibleLink})})]})}),portalTarget,slug||String(index))]});}/** @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicWidth 1200\n * @framerIntrinsicHeight 800 */export default function ProjectDetail(props){return props.kind===\"Gallery\"?/*#__PURE__*/_jsx(Gallery,{...props}):props.kind===\"Item\"?/*#__PURE__*/_jsx(Item,{...props}):props.kind===\"Layer\"||props.kind===\"Related\"?/*#__PURE__*/_jsx(DetailItem,{...props}):/*#__PURE__*/_jsx(Detail,{...props});}addPropertyControls(ProjectDetail,{items:{type:ControlType.ComponentInstance,title:\"Items\"},image:{type:ControlType.ResponsiveImage,title:\"Thumbnail\"},count:{type:ControlType.Number,title:\"Count\",defaultValue:1},detailLink:{type:ControlType.Link,title:\"Detail link\"},slug:{type:ControlType.String,title:\"Slug\"},kind:{type:ControlType.String,title:\"Kind\",defaultValue:\"Detail\"},gridStyle:{type:ControlType.Enum,title:\"Grid style\",options:[\"Canvas\",\"List\"],optionTitles:[\"Canvas (new)\",\"List (old)\"],defaultValue:\"Canvas\"},index:{type:ControlType.Number,title:\"Index\",defaultValue:1},title:{type:ControlType.String,title:\"Title\"},description:{type:ControlType.String,title:\"Desc\"},role:{type:ControlType.String,title:\"Role\"},context:{type:ControlType.String,title:\"Context\"},impact:{type:ControlType.String,title:\"Impact\",displayTextArea:true,description:\"Format: value | label | note. Separate entries with ;; or a new line.\"},team:{type:ControlType.String,title:\"Team\",displayTextArea:true,description:\"Format: name | role. Separate entries with ;; or a new line.\"},date:{type:ControlType.String,title:\"Date\"},currentLink:{type:ControlType.Link,title:\"Current project\"},website:{type:ControlType.String,title:\"Website\",description:\"Full address, for example https://example.com\"},achievementTitle:{type:ControlType.String,title:\"Achievement title\",description:\"The related achievement. Empty hides the card.\"},achievementLink:{type:ControlType.Link,title:\"Achievement link\"},achievementImage:{type:ControlType.ResponsiveImage,title:\"Achievement image\"},achievementOrganizer:{type:ControlType.String,title:\"Achievement organizer\"},...Object.fromEntries([\"thumbnail\",\"logo\",\"image1\",\"image2\",\"image3\"].map(key=>[key,{type:ControlType.ResponsiveImage,title:key}])),...Object.fromEntries([\"details\",\"back\",\"projects\",\"related\",\"pageCursor\",\"identity\",\"navigation\"].map(key=>[key,{type:ControlType.ComponentInstance,title:key}]))});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ProjectDetail\",\"slots\":[\"items\",\"navigation\",\"identity\",\"details\",\"back\",\"projects\",\"related\",\"pageCursor\"],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerIntrinsicHeight\":\"\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"1200\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ProjectDetail.map"],"mappings":"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"}