@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap');
:root{color-scheme:dark;--bg:#050505;--fg:#f4f2e9;--muted:#999a91;--line:#ffffff27;--accent:#d8dfbd;--type:1;--grain:.035;--duration:650ms;--card-ratio:1.5}*{box-sizing:border-box}html{background:var(--bg);scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--fg);font-family:'Space Grotesk',Arial,sans-serif;font-size:15px}button,a,input,select{touch-action:manipulation}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button:disabled{opacity:.4;cursor:default}img,video{display:block;max-width:100%}[hidden]{display:none!important}.mono,small,.eyebrow{font-family:'IBM Plex Mono',monospace;font-size:10px;font-weight:400;letter-spacing:.09em}.eyebrow{text-transform:uppercase;color:var(--accent)}.skip{position:fixed;top:-80px;left:20px;background:var(--fg);color:var(--bg);padding:15px;z-index:1000}.skip:focus{top:15px}.masthead{position:fixed;z-index:20;top:0;left:0;width:100%;height:100px;padding:0 4%;display:flex;align-items:center;justify-content:space-between;gap:24px;background:linear-gradient(#050505dd,transparent);color:#fff}.identity{font-size:17px;font-weight:500;letter-spacing:-.04em}.identity span{display:block;margin-top:7px;font:8px 'IBM Plex Mono',monospace;letter-spacing:.14em;color:#aaa}.experiments{display:flex;gap:5px;align-items:center}.experiments button{font-size:10px;letter-spacing:.035em;color:#aaa;padding:13px 14px;border:1px solid transparent}.experiments button.active{border-color:#ffffff4a;color:#fff;background:#0005}.experiments small{color:#aeb5a0;font-size:8px;margin-right:8px}.index-toggle{font:10px 'IBM Plex Mono',monospace;letter-spacing:.1em;min-width:80px;display:flex;justify-content:space-between}.index-toggle span{font-size:20px;line-height:10px}main{min-height:100svh}.dock{position:fixed;z-index:19;bottom:42px;left:50%;transform:translateX(-50%);display:flex;gap:7px;padding:7px;border:1px solid #ffffff28;border-radius:30px;background:#111b;backdrop-filter:blur(20px);color:#fff;max-width:96vw;white-space:nowrap}.dock button{font-size:11px;border-radius:20px;padding:12px 19px}.dock button.active,.dock button:hover{background:#efeee3;color:#080808}.status{position:fixed;z-index:20;bottom:14px;left:4%;right:4%;display:flex;justify-content:space-between;gap:20px;color:#888;font:8px 'IBM Plex Mono',monospace;letter-spacing:.08em;pointer-events:none}.status button{font:inherit;pointer-events:auto;padding:0}#grain{position:fixed;inset:0;z-index:30;pointer-events:none;opacity:var(--grain);background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23fff' filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}.cinema{position:relative;min-height:100svh;overflow:hidden;background:#000}.cinema-media{position:absolute;inset:0;overflow:hidden}.cinema-media img,.cinema-media video{position:absolute;width:100%;height:100%;object-fit:cover;object-position:70% center}.cinema-media:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#000b,transparent 80%),linear-gradient(transparent 50%,#000f);pointer-events:none}.cinema-copy{position:absolute;left:7%;bottom:225px;z-index:2;max-width:78vw}.cinema-copy h1{font-size:clamp(65px,calc(10vw * var(--type)),180px);font-weight:400;letter-spacing:-.07em;line-height:.9;margin:25px 0}.cinema-copy>p{font-size:11px;color:#b6b7ac;line-height:1.6;letter-spacing:.035em}.enter{display:inline-flex;gap:55px;align-items:center;border-bottom:1px solid #ffffff70;padding:15px 0;font:10px 'IBM Plex Mono',monospace;letter-spacing:.1em}.enter span{font-size:24px}.media-controls{position:absolute;right:5%;top:130px;z-index:3;display:flex;gap:12px}.media-controls button{border:1px solid #ffffff40;border-radius:20px;padding:9px 16px;font:9px 'IBM Plex Mono',monospace;background:#0003}.filmstrip{position:absolute;left:7%;right:7%;bottom:118px;display:flex;gap:12px;align-items:center;z-index:3;overflow:auto;padding:5px 0;scrollbar-width:thin}.strip-card{display:flex;align-items:center;gap:13px;min-width:170px;text-align:left;opacity:.5;transition:opacity .3s}.strip-card:hover,.strip-card.current{opacity:1}.strip-card img{width:68px;height:46px;object-fit:cover;border:1px solid #ffffff40}.strip-card small{display:block;font-size:7px;color:#aaa;margin-bottom:5px}.strip-card strong{font-size:11px;font-weight:400;max-width:140px;display:block}.image-credit{position:absolute;top:130px;left:7%;z-index:2;font:8px 'IBM Plex Mono',monospace;color:#b0b4a4}.reconstruction{min-height:100svh;position:relative;overflow:hidden;background:#050706}.recon-canvas{position:absolute;inset:0;width:100%;height:100%;opacity:.88}.recon-grid{position:absolute;inset:105px 30% 120px 4%;border:1px solid #ffffff1c;background-image:linear-gradient(#ffffff07 1px,transparent 1px),linear-gradient(90deg,#ffffff07 1px,transparent 1px);background-size:70px 70px;pointer-events:none}.recon-copy{position:absolute;z-index:2;right:5%;top:24%;width:25%}.recon-copy h1{font-size:clamp(32px,calc(4.5vw * var(--type)),75px);font-weight:400;line-height:.95;letter-spacing:-.06em;overflow-wrap:anywhere}.recon-copy p{font:10px/1.8 'IBM Plex Mono',monospace;color:#9ca69a}.recon-index{display:flex;flex-direction:column;margin-top:35px;border-top:1px solid var(--line)}.recon-index button{padding:15px 0;border-bottom:1px solid var(--line);text-align:left;font:10px 'IBM Plex Mono',monospace;display:flex;justify-content:space-between}.recon-index button.active{color:#d3e7b8}.recon-meta{position:absolute;left:6%;bottom:125px;font:9px/2 'IBM Plex Mono',monospace;color:#9eaf91}.spatial{height:100svh;overflow:hidden;position:relative;background:#090a09;cursor:grab;touch-action:none}.spatial:active{cursor:grabbing}.space-world{position:absolute;left:50%;top:50%;width:1600px;height:1100px;margin:-550px 0 0 -800px;transform-origin:center;will-change:transform}.space-guide{position:absolute;left:45%;top:35%;width:420px;pointer-events:none;color:#c5c8b8}.space-guide h1{font-size:clamp(50px,calc(6vw * var(--type)),100px);font-weight:400;line-height:.9;letter-spacing:-.065em}.space-guide p{font:9px/1.8 'IBM Plex Mono',monospace}.space-card{position:absolute;text-align:left;padding:0;transform:rotate(var(--rotate));transition:filter .3s;background:#111;box-shadow:0 10px 70px #0007}.space-card img{width:100%;height:100%;object-fit:contain}.space-card .space-caption{display:flex;justify-content:space-between;gap:20px;margin-top:10px;font:9px 'IBM Plex Mono',monospace;color:#ccc}.space-card:hover{filter:brightness(1.18)}.space-toolbar{position:absolute;z-index:4;right:5%;top:130px;display:flex;gap:8px}.space-toolbar button{background:#111b;border:1px solid #ffffff38;padding:10px 14px;font:10px monospace}.space-readout{position:absolute;bottom:126px;left:5%;font:9px 'IBM Plex Mono',monospace;color:#999}.page{padding:145px 7% 150px;min-height:100svh}.page-heading{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:45px}.page h1{font-size:clamp(50px,calc(8vw * var(--type)),120px);font-weight:400;letter-spacing:-.065em;line-height:.95;margin:20px 0}.page-heading p{font:10px/1.8 'IBM Plex Mono',monospace;color:var(--muted)}.work-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:35px 22px}.work-card{text-align:left;padding:0}.work-card img{width:100%;aspect-ratio:var(--card-ratio);object-fit:cover;background:#0c0c0c}.work-card:hover img{filter:brightness(1.15)}.work-card h2{font-size:18px;font-weight:400;letter-spacing:-.03em;margin:15px 0 5px}.work-card small{color:var(--muted);font-size:8px}.project{padding-bottom:145px}.project-title{padding:145px 7% 40px;display:flex;justify-content:space-between;align-items:end}.project-title h1{font-size:clamp(55px,calc(11vw * var(--type)),170px);line-height:.85;letter-spacing:-.065em;font-weight:400;margin:30px 0 0}.project-title .eyebrow{margin-bottom:20px}.project .back{font:10px monospace;border-bottom:1px solid currentColor;padding-bottom:6px}.project-hero{width:100%;max-height:85svh;object-fit:contain;background:#000}.cyaphine .project-hero{max-height:none;background:#f4f4f4}.project-info{padding:50px 7%;display:grid;grid-template-columns:1fr 2fr;gap:8%}.project-info p{font-size:21px;line-height:1.6;max-width:690px;color:var(--muted)}.project-info .credit-list{font:11px/2 'IBM Plex Mono',monospace;color:var(--fg)}.project-info .watch{display:inline-block;border:1px solid currentColor;padding:15px 25px;margin:15px 0;font:11px monospace}.project-info .availability{font-size:11px;line-height:1.8}.project-stills{display:grid;grid-template-columns:1fr 1fr;gap:30px;padding:0 7% 30px;align-items:start}.project-stills button{padding:0;cursor:zoom-in}.project-stills img{width:100%;height:auto}.project-stills button:first-child:nth-last-child(odd){grid-column:1/-1}.project-next{display:flex;justify-content:space-between;margin:30px 7%;border-top:1px solid var(--line);padding-top:30px;font:11px monospace}.embed-wrap{margin:20px 7% 50px;aspect-ratio:16/9}.embed-wrap iframe{width:100%;height:100%;border:0}.gallery-options{display:flex;gap:8px}.gallery-options button{border:1px solid var(--line);padding:10px 14px;font:10px monospace}.gallery-options .active{background:var(--fg);color:var(--bg)}.sequence{height:62svh;position:relative;text-align:center}.sequence>button{height:100%;max-width:100%;padding:0}.sequence img{width:100%;height:100%;object-fit:contain}.sequence-footer{display:flex;justify-content:space-between;align-items:center;margin:25px auto;max-width:900px;font:10px monospace}.sequence-footer button{border:1px solid var(--line);padding:10px 20px}.editorial{display:grid;grid-template-columns:repeat(12,1fr);gap:70px 25px;align-items:start}.editorial button{grid-column:span 7;text-align:left;padding:0}.editorial button:nth-child(3n+2){grid-column:9/span 4;margin-top:100px}.editorial button:nth-child(3n){grid-column:3/span 6;margin:20px 0 40px}.editorial img{width:100%;height:auto}.editorial small{display:block;color:var(--muted);margin-top:15px}.gallery-space{height:65svh;min-height:420px;position:relative;overflow:hidden;border:1px solid var(--line);touch-action:none;cursor:grab}.gallery-world{position:absolute;left:50%;top:50%;width:1800px;height:1400px;margin:-700px 0 0 -900px;transform-origin:center}.gallery-world button{position:absolute;width:300px;padding:0}.gallery-world img{width:100%;height:auto;box-shadow:0 20px 60px #0008}.gallery-help{margin-top:20px;font:10px monospace;color:var(--muted)}.about-page h1{max-width:900px}.about-page .bio{max-width:620px;margin-left:30%;font-size:25px;line-height:1.5;color:var(--muted)}.about-page .bio a{color:var(--fg);border-bottom:1px solid var(--line);overflow-wrap:anywhere}.bio .social{display:flex;gap:25px;font-size:13px;margin-top:30px}.index-panel{position:fixed;inset:0;z-index:60;padding:50px 7% 80px;background:#080808ef;backdrop-filter:blur(25px);overflow:auto}.index-head{display:flex;justify-content:space-between;font:10px monospace;margin-bottom:40px}.index-item{display:grid;grid-template-columns:60px 1fr 120px;align-items:center;width:100%;border-bottom:1px solid var(--line);padding:19px 0;text-align:left}.index-item h2{font-size:clamp(24px,4vw,55px);font-weight:400;letter-spacing:-.04em;margin:0}.index-item span{font:9px monospace;color:#aaa}.dev-panel{position:fixed;top:100px;right:20px;z-index:70;max-height:calc(100dvh - 130px);overflow:auto;width:310px;background:#171917f5;border:1px solid #5d6155;padding:22px;color:#eee;box-shadow:0 20px 80px #0008}.panel-head{display:flex;justify-content:space-between;align-items:center}.panel-head h2{font-size:20px;font-weight:400;letter-spacing:-.04em;margin:0}.panel-head button{font-size:25px}.dev-panel p,.dev-panel output{font:10px/1.7 monospace;color:#aaa}.dev-panel label{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;font-size:11px;gap:9px;margin:17px 0}.dev-panel input[type=range],.dev-panel select{width:100%}.dev-panel input[type=range]{accent-color:#d6dfb7}.dev-panel select{padding:8px;background:#272b24;color:#fff;border:1px solid #555}.dev-panel input[type=color]{height:28px;width:55px;border:0;background:none}.panel-actions{display:flex;gap:7px;border-top:1px solid #555;padding-top:20px;margin-top:20px;align-items:center}.panel-actions button,.panel-actions .import-label{border:1px solid #666;padding:9px;font-size:10px;cursor:pointer;margin:0}.import-label input{display:none}#dev-launch{position:fixed;z-index:50;left:20px;bottom:110px;font:9px monospace;padding:12px;border:1px solid #666;background:#171917;color:#eee}#transition-layer{position:fixed;inset:0;z-index:80;pointer-events:none;background:#060606;transform:scaleY(0);transform-origin:bottom}.type-in{animation:type-in var(--duration) both}@keyframes type-in{from{opacity:0;letter-spacing:.04em;filter:blur(8px);transform:translateY(15px)}to{opacity:1;filter:blur(0);transform:none}}.scanner{position:absolute;left:0;right:0;height:1px;background:#d4e8b450;box-shadow:0 0 15px #d4e8b420;pointer-events:none;animation:scan 8s linear infinite}@keyframes scan{from{top:12%}to{top:88%}}body.no-scanning .scanner{display:none}#lightbox{position:fixed;inset:0;width:100%;height:100dvh;max-width:none;max-height:none;border:0;margin:0;padding:60px 6%;background:#050505;color:#fff}#lightbox[open]{display:flex;justify-content:center;align-items:center}#lightbox::backdrop{background:#000}#lightbox img{max-width:90%;max-height:85dvh;object-fit:contain}#lightbox button{position:absolute;z-index:1;padding:15px;border:1px solid #444;background:#080808}.lightbox-close{right:4%;top:20px}.lightbox-prev{left:1%;top:48%}.lightbox-next{right:1%;top:48%}#lightbox p{position:absolute;bottom:15px;font:10px monospace;color:#aaa}.error-message{padding:20vh 10%}body.cyaphine{--bg:#f4f4f4;--fg:#111;--muted:#555;--line:#1113;--accent:#444;color-scheme:light}body.cyaphine .masthead{background:linear-gradient(#f4f4f4f2,transparent);color:#111}body.cyaphine .identity span,body.cyaphine .experiments button{color:#555}body.cyaphine .experiments .active{color:#111;border-color:#1115;background:#fff6}body.cyaphine .status{color:#555}body.cyaphine .project-hero{background:#f4f4f4}
@media(max-width:900px){.masthead{height:100px;align-items:start;padding-top:20px;gap:12px}.identity{font-size:14px}.identity span{font-size:6px}.experiments{position:absolute;top:62px;left:4%;right:4%;justify-content:center}.experiments button{font-size:8px;padding:8px 10px}.index-toggle{font-size:9px;min-width:65px}.experiments small{font-size:7px}.dock{bottom:38px;gap:1px;padding:5px}.dock button{padding:11px 12px;font-size:10px}.status{font-size:7px;bottom:13px}.status #status-note{display:none}.cinema-copy{bottom:220px;left:6%}.cinema-copy h1{font-size:clamp(60px,calc(15vw * var(--type)),110px)}.filmstrip{left:6%;right:6%;bottom:110px}.strip-card{min-width:145px}.strip-card img{width:55px;height:40px}.media-controls{top:120px}.image-credit{top:127px;font-size:7px}.recon-grid{inset:115px 5% 41%}.recon-copy{top:auto;bottom:120px;left:7%;right:7%;width:auto}.recon-copy h1{font-size:42px;margin:12px 0;max-width:85%;line-height:.9}.recon-copy>p:not(.eyebrow){display:none}.recon-index{flex-direction:row;gap:18px;margin-top:18px;overflow:auto}.recon-index button{min-width:100px;gap:10px;border-bottom:0;font-size:8px}.recon-meta{bottom:43%;font-size:7px}.space-world{transform-origin:center}.space-guide{left:42%}.space-guide h1{font-size:80px}.space-toolbar{top:125px}.page{padding:140px 6% 130px}.page-heading{display:block}.page-heading h1{font-size:60px}.gallery-options{margin-top:30px}.gallery-options button{font-size:9px;padding:9px}.work-grid{grid-template-columns:1fr 1fr;gap:30px 15px}.work-card h2{font-size:15px}.project-title{padding:140px 6% 30px;display:block}.project-title h1{font-size:65px;overflow-wrap:anywhere}.project-title .back{display:inline-block;margin-top:30px}.project-info{padding:30px 6%;grid-template-columns:1fr;gap:10px}.project-info p{font-size:18px}.project-stills{padding:0 6%;gap:20px;grid-template-columns:1fr}.project-stills button:first-child:nth-last-child(odd){grid-column:auto}.project-next{gap:25px;font-size:9px}.about-page .bio{margin:40px 0 0;font-size:20px}.editorial{gap:40px 15px}.editorial button{grid-column:span 9}.editorial button:nth-child(3n+2){grid-column:5/span 8;margin-top:0}.editorial button:nth-child(3n){grid-column:1/span 10}.dev-panel{width:min(310px,90vw);right:10px;top:110px}.sequence{height:50svh}.gallery-space{height:55svh}.index-panel{padding-top:30px}.index-item{grid-template-columns:30px 1fr 70px}.index-item h2{font-size:24px}.index-item span{font-size:8px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:0s!important;transition-duration:0s!important;scroll-behavior:auto!important}.scanner{display:none}}body.motion-off *,body.motion-off *:before,body.motion-off *:after{animation:none!important;transition:none!important}
/* Authored transition systems: shared frame, reconstruction tiles, spatial push. */
.recon-copy h1{font-size:clamp(28px,3vw,58px);overflow-wrap:normal}.recon-meta{display:flex;gap:18px;flex-wrap:wrap}.recon-canvas{touch-action:pan-y}
::view-transition-group(artwork){animation-duration:var(--duration);animation-timing-function:cubic-bezier(.2,.8,.2,1)}
::view-transition-old(artwork),::view-transition-new(artwork){height:100%;object-fit:cover;mix-blend-mode:normal}
#transition-layer.pixel-cut{display:grid;grid-template-columns:repeat(10,1fr);grid-template-rows:repeat(8,1fr)}
.pixel-cut i{background:#070907;animation:tile-in calc(var(--duration)*.3) var(--delay) both;transform-origin:center}.pixel-cut.pixel-out i{animation:tile-out calc(var(--duration)*.3) var(--delay) both}
@keyframes tile-in{from{opacity:0;transform:scale(.1)}to{opacity:1;transform:scale(1.02)}}@keyframes tile-out{from{opacity:1;transform:scale(1.02)}to{opacity:0;transform:scale(.1)}}
@media(max-width:900px){.recon-copy h1{font-size:clamp(26px,5.5vw,42px)}.recon-copy h1 br{display:none}.recon-copy h1{max-width:700px}.recon-meta{gap:10px;font-size:7px}}
.space-card>span{display:flex;justify-content:space-between;gap:16px;padding:10px;font:10px 'IBM Plex Mono',monospace}.social-links{display:flex;flex-wrap:wrap;gap:20px;font-size:12px;margin-top:35px}.index-panel{color:#f4f2e9;--line:#ffffff27}#dev-launch{left:auto;right:20px}.project-hero-wrap{position:relative;overflow:hidden}.arkives .project-hero-wrap{background:#080e09}.arkives .project-hero{opacity:.85}.arkives-mesh{position:absolute;inset:0;background:linear-gradient(#b7dd9f10 1px,transparent 1px),linear-gradient(90deg,#b7dd9f10 1px,transparent 1px);background-size:50px 50px;pointer-events:none;mask-image:linear-gradient(transparent,#000)}.arkives-label{position:absolute;bottom:20px;left:7%;color:#d4e8b4;font-size:9px}.arkives .project-title small{color:#d4e8b4}.recon-copy h1{font-size:clamp(28px,calc(3vw * var(--type)),58px)}
@media(max-width:900px){.cinema-media video,.cinema-media img{object-position:90% center}.media-controls{top:155px;right:6%}.image-credit{top:125px}.recon-copy h1{font-size:clamp(26px,calc(5.5vw * var(--type)),42px)}.recon-copy .enter{margin-top:8px}.recon-meta{bottom:44%;left:7%;max-width:86%;gap:4px 10px}.arkives-label{font-size:7px}}
