@font-face{font-family:UnifrakturCook;font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/unifrakturcook/v25/IurA6Yli8YOdcoky-0PTTdkm56n05Uw1.ttf)format("truetype")}:root{color-scheme:dark;--glass-blur:7px;--glass-tint:#bcd0ca09;--glass-contrast:1.3;--glass-saturation:.86;--panel-surface-rgb:188 208 202;--panel-surface-alpha-scale:.18;--frame:#a0c8be59;--frame-ghost:#a0c8be1f;--ink:#d5efe8;--ink-dim:#a9c9c0;--readout:#8fc4b7;--readout-dim:#6e9a90;--mono:"SF Mono", Menlo, Consolas, monospace;--trail-marker-size:25px;--trail-min-scale:.6;--trail-pulse-speed:2.4s;--trail-intensity:.78;--trail-line-width:1.5px;--project-node-scale:1;--project-line-opacity:.65;--project-motion-speed:1.8s;--project-halo-scale:1;--vibe-saturation:1;--vibe-contrast:1;--vibe-brightness:1;--vibe-hue:0deg;--vibe-fx:.35;--vibe-wash:transparent;--shape-radius:2px;--shape-border-weight:1px;--shape-frame-offset:5px;--shape-cut-size:14px;--shape-shadow-depth:24px;--shape-surface-opacity:.22;--poster-paper:#f5f1e8;--poster-electric:#2153cc;--poster-signal:#fd7dff;--poster-angle:-8deg;--poster-display-scale:1.25;--poster-rule-weight:2px;--poster-wash:.24;--poster-offset:12px;--poster-display:"UnifrakturCook", Georgia, serif}html{scroll-snap-type:y mandatory}*{box-sizing:border-box;margin:0;padding:0}body{color:var(--ink);font-family:var(--mono);background:#050113;overflow-x:hidden}#gl{touch-action:pan-y;z-index:0;width:100vw;height:100vh;display:block;position:fixed;inset:0}body[data-vibe-filtered=true] #gl,body[data-vibe-filtered=true] #shore-photo{filter:saturate(var(--vibe-saturation)) contrast(var(--vibe-contrast)) brightness(var(--vibe-brightness)) hue-rotate(var(--vibe-hue))}.vibe-overlay{z-index:0;pointer-events:none;position:fixed;inset:0}.vibe-overlay--wash{background:var(--vibe-wash);opacity:calc(var(--vibe-fx) * .7);mix-blend-mode:color}.vibe-overlay--vignette{opacity:calc(var(--vibe-fx) * .78);background:radial-gradient(circle at 50% 42%,#0000 38%,#01040ad1 125%)}.vibe-overlay--grain{opacity:calc(var(--vibe-fx) * .2);mix-blend-mode:soft-light;background-image:radial-gradient(#e5f8f36b .45px,#0000 .7px);background-size:3px 3px}.vibe-overlay--scanlines{opacity:calc(var(--vibe-fx) * .32);mix-blend-mode:multiply;background:repeating-linear-gradient(#0000 0 3px,#04100d80 3px 4px)}body[data-vibe-vignette=false] .vibe-overlay--vignette,body[data-vibe-grain=false] .vibe-overlay--grain,body[data-vibe-scanlines=false] .vibe-overlay--scanlines{opacity:0}.poster-signal{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.poster-signal__beam{width:70vw;min-width:36rem;height:clamp(4rem,9vh,8rem);opacity:var(--poster-wash);transform:rotate(var(--poster-angle));transform-origin:50%;transition:opacity .25s,background-color .25s,transform .25s;display:block;position:absolute}.poster-signal__beam--one{background:var(--poster-electric);top:17vh;right:-20vw}.poster-signal__beam--two{background:var(--poster-signal);height:clamp(2rem,5vh,4.5rem);transform:rotate(var(--poster-angle));bottom:13vh;left:-24vw}body[data-poster-blocks=false] .poster-signal__beam{opacity:0}body[data-poster-script=true] :is(h1,h2,#proj-card h3){font-family:var(--poster-display);text-transform:none;letter-spacing:0;font-weight:700;line-height:.92}body[data-poster-script=true] h1{font-size:clamp(2.8rem, calc(5vw * var(--poster-display-scale)), 7rem)}body[data-poster-script=true] h1:before{content:none}body[data-poster-script=true] h2{font-size:clamp(2.2rem, calc(3.6vw * var(--poster-display-scale)), 5.5rem);margin-bottom:1.5rem}body[data-poster-script=true] #proj-card h3{font-size:calc(1.35rem * var(--poster-display-scale))}body[data-poster-palette=true] h1{color:var(--poster-paper)}body[data-poster-palette=true] h2,body[data-poster-palette=true] .scroll-cue{color:var(--poster-signal)}body[data-poster-palette=true] :is(.readout,.timeline span:first-child){color:var(--poster-electric)}body[data-poster-palette=true] a{border-bottom-color:color-mix(in srgb, var(--poster-signal) 72%, transparent)}body[data-poster-palette=true] .panel{border-color:color-mix(in srgb, var(--poster-electric) 66%, transparent)}body[data-poster-palette=true] .panel:before{border-color:color-mix(in srgb, var(--poster-signal) 34%, transparent)}body[data-poster-diagonals=true] :is(section,#shore){position:relative}body[data-poster-diagonals=true] :is(section,#shore):after{top:calc(8vh + var(--poster-offset));right:calc(5vw + var(--poster-offset));z-index:2;color:var(--poster-signal);font:700 clamp(.8rem, 1.35vw, 1.15rem)/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;transform:rotate(var(--poster-angle));transform-origin:100%;border-bottom:var(--poster-rule-weight) dashed currentColor;background:color-mix(in srgb, var(--poster-electric) 22%, transparent);pointer-events:none;padding:.3rem .55rem;position:absolute}body[data-poster-diagonals=true] #hero:after{content:"01 / origin"}body[data-poster-diagonals=true] #projects:after{content:"02 / field study"}body[data-poster-diagonals=true] #writing:after{content:"03 / transmissions"}body[data-poster-diagonals=true] #contact:after{content:"04 / elsewhere"}body[data-poster-diagonals=true] #shore:after{content:"05 / ground"}body[data-poster-palette=true] h2:after{content:"";border-top:var(--poster-rule-weight) dashed var(--poster-electric);vertical-align:.28em;opacity:.9;width:clamp(3rem,11vw,9rem);margin-left:.55em;display:inline-block}body[data-vibe-preset=observatory]{--ink:#dcf7f7;--ink-dim:#abd4d8;--readout:#86d4de;--readout-dim:#5f9fac;--vibe-wash:#186f8b57}body[data-vibe-preset=solar]{--ink:#fff0df;--ink-dim:#e0bca0;--readout:#f3a76f;--readout-dim:#bb7753;--vibe-wash:#da581f52}body[data-vibe-preset=aurora]{--ink:#dbfff2;--ink-dim:#9edbc9;--readout:#6fe0b9;--readout-dim:#4d9f88;--vibe-wash:#19a47d47}body[data-vibe-preset=nocturne]{--ink:#dce3f5;--ink-dim:#9aa9c7;--readout:#8497c7;--readout-dim:#5c6b91;--vibe-wash:#0811359e}body[data-vibe-preset=analog]{--ink:#f0dfbc;--ink-dim:#c7a979;--readout:#d09858;--readout-dim:#946c42;--vibe-wash:#80481957}body[data-vibe-preset=lunar]{--ink:#f1f5f5;--ink-dim:#bdc9cb;--readout:#a8c0c5;--readout-dim:#71898e;--vibe-wash:#aeccd329}body[data-vibe-preset=hypercolor]{--ink:#f7ecff;--ink-dim:#d2b8e5;--readout:#6de5dc;--readout-dim:#a765b5;--vibe-wash:#cf249a47}body[data-vibe-glass=false] .panel,body[data-vibe-glass=false] #contact .panel.dawn{-webkit-backdrop-filter:none;background:#040a0994}.marker-defs{pointer-events:none;width:0;height:0;position:fixed;overflow:hidden}.section-dots{--rail:#8fc4b738;--surface-rgb:4 10 9;--surface-alpha-scale:1;--surface-opacity:.68;z-index:4;background:rgb(var(--surface-rgb) / var(--surface-opacity));border:1px solid #a0c8be33;border-radius:2px;justify-content:center;align-items:center;gap:.08rem;padding:.3rem;display:flex;position:fixed;box-shadow:0 0 24px #02080c38}.section-dots:before{content:"";background:var(--rail);pointer-events:none;position:absolute}.section-dots--top{top:max(.9rem, env(safe-area-inset-top));left:50%;transform:translate(-50%)}.section-dots--top:before{height:1px;top:50%;left:1rem;right:1rem}.section-dots--side{top:50%;right:max(.9rem, env(safe-area-inset-right));flex-direction:column;transform:translateY(-50%)}.section-dots--side:before{width:1px;top:1rem;bottom:1rem;left:50%}.section-dots a{z-index:1;width:1.65rem;height:1.65rem;color:var(--ink-dim);border:0;place-items:center;display:grid;position:relative}.section-marker{place-items:center;width:1.35rem;height:1.35rem;display:grid;position:relative}.section-marker:before{content:"";background:rgb(var(--surface-rgb));border:1px solid #a9c9c0b3;border-radius:50%;width:4px;height:4px;transition:background .25s,border-color .25s,box-shadow .25s,transform .25s}.section-marker svg{width:100%;height:100%;color:var(--ink);filter:drop-shadow(0 0 5px #8fc4b7b8);pointer-events:none;position:absolute;inset:0;overflow:visible}.marker-use{opacity:0;fill:currentColor;stroke:currentColor;stroke-width:1.15px;stroke-linecap:square;transform-box:fill-box;transform-origin:50%;transition:opacity .2s,transform .28s}.section-dots a[aria-current=location] .section-marker:before{opacity:0;transform:scale(.5)}body[data-nav-style=astral] a[aria-current=location] .marker-use--astral,body[data-nav-style=orbital] a[aria-current=location] .marker-use--orbital,body[data-nav-style=eclipse] a[aria-current=location] .marker-use--eclipse,body[data-nav-style=constellation] a[aria-current=location] .marker-use--constellation,body[data-nav-style=coordinates] a[aria-current=location] .marker-use--coordinates{opacity:1}body[data-nav-style=astral] a[aria-current=location] .marker-use--astral{animation:2.8s ease-in-out infinite astral-breathe}body[data-nav-style=orbital] a[aria-current=location] .marker-use--orbital{animation:3.8s linear infinite orbital-acquire}body[data-nav-style=eclipse] a[aria-current=location] .marker-use--eclipse{animation:4.8s ease-in-out infinite eclipse-drift}body[data-nav-style=constellation] .section-dots{transition:border-color .2s,background .2s,box-shadow .2s}body[data-nav-style=constellation][data-trail-frame=false] .section-dots{box-shadow:none;background:0 0;border-color:#0000}body[data-nav-style=constellation] .section-dots--top:before{height:var(--trail-line-width);background:repeating-linear-gradient(90deg, var(--rail) 0 3px, transparent 3px 7px);opacity:var(--trail-intensity)}body[data-nav-style=constellation] .section-dots--side:before{width:var(--trail-line-width);background:repeating-linear-gradient(180deg, var(--rail) 0 3px, transparent 3px 7px);opacity:var(--trail-intensity)}body[data-nav-style=constellation] .section-dots:after{content:"";z-index:0;background:linear-gradient(90deg, var(--readout-dim), var(--ink));opacity:var(--trail-intensity);pointer-events:none;transition:width .28s,height .28s,opacity .2s;position:absolute;box-shadow:0 0 7px #8fc4b785}body[data-nav-style=constellation] .section-dots--top:after{width:calc((100% - 2rem) * var(--section-progress,0));height:var(--trail-line-width);top:50%;left:1rem;transform:translateY(-50%)}body[data-nav-style=constellation] .section-dots--side:after{width:var(--trail-line-width);height:calc((100% - 2rem) * var(--section-progress,0));background:linear-gradient(180deg, var(--readout-dim), var(--ink));top:1rem;left:50%;transform:translate(-50%)}body[data-nav-style=constellation] .section-dots a{width:max(1.65rem, var(--trail-marker-size));height:max(1.65rem, var(--trail-marker-size))}body[data-nav-style=constellation] .section-marker{width:var(--trail-marker-size);height:var(--trail-marker-size)}body[data-nav-style=constellation] a[data-section-state=past] .section-marker:before{border-color:var(--readout);background:var(--readout);opacity:var(--trail-intensity);transform:rotate(45deg)scale(.9);box-shadow:0 0 7px #8fc4b78c}body[data-nav-style=constellation] a[aria-current=location] .marker-use--constellation{animation:constellation-pulse var(--trail-pulse-speed) ease-in-out infinite}body[data-nav-style=constellation] a[aria-current=location] .section-marker:after{content:"";width:58%;height:58%;opacity:calc(var(--trail-intensity) * .58);animation:trail-orbit var(--trail-pulse-speed) ease-out infinite;pointer-events:none;border:1px solid #d5efe87a;border-radius:50%;position:absolute}body[data-nav-style=constellation][data-trail-pulse=false] a[aria-current=location] .marker-use--constellation,body[data-nav-style=constellation][data-trail-pulse=false] a[aria-current=location] .section-marker:after{animation:none}body[data-nav-style=constellation][data-trail-label=true] .section-dots--top a[aria-current=location]:after{opacity:1;transform:translate(-50%)}body[data-nav-style=constellation][data-trail-label=true] .section-dots--side a[aria-current=location]:after{opacity:1;transform:translateY(-50%)}body[data-nav-style=constellation][data-trail-glow=false] .section-dots:after,body[data-nav-style=constellation][data-trail-glow=false] .section-marker:before{box-shadow:none}body[data-nav-style=constellation][data-trail-glow=false] .section-marker svg{filter:none}body[data-nav-style=coordinates] a[aria-current=location] .marker-use--coordinates{animation:2.6s ease-in-out infinite coordinate-lock}.section-dots a:after{content:attr(data-label);background:rgb(var(--surface-rgb) / .9);color:var(--ink-dim);font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;opacity:0;pointer-events:none;border:1px solid #a0c8be33;padding:.35rem .5rem;font-size:.58rem;line-height:1;transition:opacity .18s,transform .18s;position:absolute}.section-dots--top a:after{top:calc(100% + .55rem);left:50%;transform:translate(-50%,-3px)}.section-dots--side a:after{top:50%;right:calc(100% + .55rem);transform:translate(3px,-50%)}.section-dots a:hover:after,.section-dots a:focus-visible:after{opacity:1}.section-dots--top a:hover:after,.section-dots--top a:focus-visible:after{transform:translate(-50%)}.section-dots--side a:hover:after,.section-dots--side a:focus-visible:after{transform:translateY(-50%)}.section-dots a:focus-visible{outline:1px dashed var(--readout);outline-offset:-2px}.constellation-lab{--surface-rgb:4 10 9;--surface-alpha-scale:1;--surface-opacity:.76;z-index:5;left:max(.9rem, env(safe-area-inset-left));bottom:max(.9rem, env(safe-area-inset-bottom));background:rgb(var(--surface-rgb) / var(--surface-opacity));-webkit-backdrop-filter:blur(6px);border:1px solid #a0c8be33;border-radius:2px;width:16.75rem;position:fixed;box-shadow:0 0 24px #02080c38}body:is([data-active-section=contact],[data-active-section=shore]) :is(.section-dots,.constellation-lab){--surface-rgb:229 237 234;--surface-opacity:.7;--ink:#071b17;--ink-dim:#294b44;--readout:#174e43;--readout-dim:#3e675f;--frame:#0a241e57;--frame-ghost:#0a241e29;border-color:#0a241e47;box-shadow:0 0 24px #182f2a2e}.constellation-lab summary{min-height:2rem;color:var(--readout);letter-spacing:.15em;text-transform:uppercase;cursor:grab;touch-action:none;user-select:none;justify-content:space-between;align-items:center;padding:.45rem .6rem;font-size:.56rem;list-style:none;display:flex}.constellation-lab[data-dragging=true] summary{cursor:grabbing}.constellation-lab[data-dragging=true]{box-shadow:0 0 34px #02080c75}.constellation-lab summary::-webkit-details-marker{display:none}.constellation-lab summary:before{content:"+";color:var(--ink-dim);margin-right:.45rem}.constellation-lab[open] summary:before{content:"−"}.lab-drag-hint{color:var(--readout-dim);letter-spacing:.08em;opacity:.72;margin-left:.55rem;font-size:.44rem}.lab-live{color:var(--readout-dim);margin-left:auto;font-size:.48rem}.lab-live:before{content:"●";color:var(--readout);margin-right:.35rem}.lab-body{scrollbar-width:thin;scrollbar-color:#8fc4b759 transparent;border-top:1px solid #a0c8be1f;gap:.85rem;max-height:calc(100vh - 5rem);padding:.2rem .65rem .7rem;display:grid;overflow-y:auto}.lab-tabs{grid-template-columns:repeat(5,1fr);gap:.3rem;display:grid}.lab-tabs button{min-height:1.8rem;color:var(--readout-dim);font:.5rem/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;background:0 0;border:1px solid #a0c8be2e}.lab-tabs button[aria-selected=true]{color:var(--ink);background:#8fc4b71f;border-color:#8fc4b794}.lab-panel{gap:.85rem;display:none}body[data-lab-panel=trail] [data-lab-panel-content=trail],body[data-lab-panel=project] [data-lab-panel-content=project],body[data-lab-panel=vibes] [data-lab-panel-content=vibes],body[data-lab-panel=geometry] [data-lab-panel-content=geometry],body[data-lab-panel=poster] [data-lab-panel-content=poster]{display:grid}.lab-select{grid-template-columns:4.6rem 1fr;align-items:center;gap:.5rem;display:grid}.lab-select>span:first-child,.constellation-controls legend,.project-controls legend,.vibe-controls legend,.geometry-controls legend,.poster-controls__fieldset legend,.lab-subhead,.lab-range>span,.lab-reset{color:var(--readout-dim);letter-spacing:.16em;text-transform:uppercase;white-space:nowrap;font-size:.54rem}.select-shell{position:relative}.select-shell:after{content:"⌄";color:var(--readout);pointer-events:none;font-size:.7rem;line-height:1;position:absolute;top:50%;right:.45rem;transform:translateY(-58%)}.constellation-lab select{appearance:none;background:rgb(var(--surface-rgb) / .9);width:100%;min-height:1.8rem;color:var(--ink-dim);font:.58rem/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;border:1px solid #a0c8be38;border-radius:1px;padding:.28rem 1.45rem .28rem .5rem}.constellation-lab select:focus-visible,.constellation-lab input:focus-visible,.lab-reset:focus-visible,.constellation-lab summary:focus-visible{outline:1px dashed var(--readout);outline-offset:2px}.constellation-controls,.project-controls,.vibe-controls,.geometry-controls,.poster-controls__fieldset{border:0;gap:.7rem;transition:opacity .2s;display:grid}body:not([data-nav-style=constellation]) .constellation-controls{opacity:.3;pointer-events:none}.constellation-controls legend,.project-controls legend,.vibe-controls legend,.geometry-controls legend,.poster-controls__fieldset legend{margin-bottom:.15rem}.project-controls{padding-top:0}.lab-subhead{margin-top:.1rem;display:block}.lab-inherit{color:var(--readout-dim);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;align-items:center;gap:.5rem;font-size:.5rem;display:flex}.lab-inherit[hidden]{display:none}.lab-inherit input{accent-color:var(--readout)}.vibe-controls[data-inherited=true]>:not(legend):not(.lab-select:first-of-type):not(.lab-inherit){opacity:.3;pointer-events:none}.lab-toggles{grid-template-columns:repeat(4,1fr);gap:.3rem;display:grid}.lab-toggles label{cursor:pointer;position:relative}.lab-toggles input{opacity:0;width:1px;height:1px;position:absolute}.lab-toggles span{min-height:1.6rem;color:var(--readout-dim);letter-spacing:.08em;text-transform:uppercase;border:1px solid #a0c8be2e;place-items:center;font-size:.46rem;transition:border-color .18s,background .18s,color .18s;display:grid}.lab-toggles input:checked+span{color:var(--ink);background:#8fc4b71f;border-color:#8fc4b794}.lab-range{gap:.34rem;display:grid}.lab-range>span{justify-content:space-between;display:flex}.lab-range output{color:var(--ink-dim);letter-spacing:.04em}.lab-range input{appearance:none;cursor:ew-resize;background:0 0;width:100%;height:.8rem}.lab-range input::-webkit-slider-runnable-track{background:#8fc4b759;height:1px}.lab-range input::-webkit-slider-thumb{appearance:none;border:1px solid var(--readout);background:rgb(var(--surface-rgb));border-radius:0;width:7px;height:11px;margin-top:-5px;box-shadow:0 0 5px #8fc4b759}.lab-range input::-moz-range-track{background:#8fc4b759;height:1px}.lab-range input::-moz-range-thumb{border:1px solid var(--readout);background:rgb(var(--surface-rgb));border-radius:0;width:7px;height:11px}.lab-reset{cursor:pointer;background:0 0;border:1px solid #a0c8be2e;min-height:1.7rem}.lab-reset:hover{color:var(--ink-dim);border-color:#8fc4b780}.poster-swatches{grid-template-columns:repeat(3,1fr);gap:.35rem;display:grid}.poster-swatches label{color:var(--readout-dim);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;gap:.3rem;font-size:.46rem;display:grid}.poster-swatches input{cursor:pointer;background:0 0;border:1px solid #a0c8be2e;border-radius:0;width:100%;height:1.7rem;padding:2px}.poster-note{color:var(--poster-signal);font:700 .7rem/1.35 var(--poster-display);letter-spacing:.02em;transform:rotate(var(--poster-angle));transform-origin:0}body[data-lab-panel=poster] .lab-tabs button[aria-selected=true]{border-color:var(--poster-signal);background:color-mix(in srgb, var(--poster-electric) 35%, transparent);color:var(--poster-paper)}@keyframes astral-breathe{0%,to{opacity:.78;transform:scale(.82)}50%{opacity:1;transform:scale(1)}}@keyframes orbital-acquire{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes eclipse-drift{0%,to{transform:translate(-.5px)}50%{transform:translate(.7px)}}@keyframes constellation-pulse{0%,to{transform:scale(var(--trail-min-scale));opacity:.68}50%{opacity:1;transform:scale(1)}}@keyframes trail-orbit{0%{opacity:calc(var(--trail-intensity) * .7);transform:scale(.58)}75%,to{opacity:0;transform:scale(1.7)}}@keyframes coordinate-lock{0%,to{opacity:.72;transform:scale(.72)}40%,65%{opacity:1;transform:scale(1)}}main{z-index:1;position:relative}section,#shore{scroll-snap-align:start;scroll-snap-stop:always;flex-direction:column;justify-content:center;min-height:100vh;padding:10vh 7vw;display:flex}#projects,#writing,#contact,#shore{content-visibility:auto;contain-intrinsic-size:auto 100vh}.void{height:40vh}.void.small{height:30vh}.void.smaller{height:40vh}#contact{scroll-snap-align:none;min-height:130vh}#contact .contact-snap{scroll-snap-align:center;scroll-snap-stop:always}.void.preshore{height:70vh}#shore{justify-content:flex-end;padding-bottom:7vh;position:relative}#shore-photo{object-fit:cover;object-position:center 65%;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;mask-image:linear-gradient(#0000,#000 22%)}#shore .landfall{color:#deeaeccc;margin:0;position:relative}#shore .credit{color:#c8d6d880;margin:.5rem 0 0;position:relative}body.gl-photo #shore-photo{visibility:hidden}.reveal{opacity:0;transition:opacity .9s,transform .9s;transform:translateY(24px)}.reveal.in{opacity:1;transform:none}.panel{--surface-rgb:var(--panel-surface-rgb);--surface-alpha-scale:var(--panel-surface-alpha-scale);border:1px solid var(--frame);background:var(--glass-tint);-webkit-backdrop-filter:blur(var(--glass-blur)) contrast(var(--glass-contrast)) saturate(var(--glass-saturation));border-radius:2px;padding:2rem 2.4rem;position:relative}.panel:before{content:"";border:1px solid var(--frame-ghost);pointer-events:none;border-radius:2px;position:absolute;inset:-1px;transform:translate(5px,5px)}h1{text-transform:uppercase;letter-spacing:.18em;color:var(--ink);font-size:clamp(1.8rem,4.5vw,3rem);font-weight:500}h1:before{content:"// ";opacity:.5}.tagline{color:var(--ink-dim);text-transform:uppercase;letter-spacing:.08em;margin-top:1.1rem;font-size:.85rem;line-height:1.9}.readout{color:var(--readout-dim);letter-spacing:.12em;margin-top:1.4rem;font-size:.7rem;display:block}h2{text-transform:uppercase;letter-spacing:.3em;color:var(--readout);margin-bottom:2.2rem;font-size:.8rem;font-weight:500}h2:after{content:" ───────────";opacity:.35}a{color:inherit;border-bottom:1px dashed #8fc4b780;text-decoration:none}a:hover{color:#fff;border-bottom-color:#ffffffb3}#hero{min-height:100vh}#hero .panel{max-width:40rem}.scroll-cue{letter-spacing:.25em;text-transform:uppercase;color:var(--readout);opacity:.75;margin-top:9vh;font-size:.65rem}#projects .wrap{grid-template-columns:minmax(0,1.65fr) minmax(250px,.85fr);align-items:center;gap:clamp(1.5rem,3vw,3rem);display:grid}#constellation{--project-ui-scale:1;filter:drop-shadow(0 0 12px #8fc4b71f);width:114%;max-width:none;height:auto;margin-left:-7%;overflow:visible}@media (width<=960px){#projects{padding-top:7vh;padding-bottom:7vh}#projects .wrap{grid-template-columns:1fr;gap:1.25rem}#constellation{width:100%;margin-left:0}#proj-card{justify-self:end;width:min(100%,42rem)}}#constellation g.star{cursor:pointer;outline:none}#constellation .star-ui{transform:scale(var(--project-ui-scale))}#constellation .star-hit{fill:#0000;pointer-events:all}#constellation .star-icon{color:#bfe8dc;fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;transition:color .2s,filter .2s}#constellation .star-label-plate{fill:#040a0980;stroke:#8fc4b729;stroke-width:1px;opacity:.34;transition:fill .2s,stroke .2s,opacity .2s}#constellation .edge{stroke:#8fc4b757;stroke-width:1px;stroke-dasharray:3 5;opacity:var(--project-line-opacity);transition:stroke .25s,stroke-width .25s,opacity .25s}#constellation .edge.active{stroke:#bfe8dcd1;stroke-width:1.65px;stroke-dasharray:7 5;filter:drop-shadow(0 0 3px #8fc4b7a6);opacity:min(1, calc(var(--project-line-opacity) + .3));animation:project-route var(--project-motion-speed) linear infinite}#constellation .star-dot{fill:#bfe8dc;cursor:pointer;transform-box:fill-box;transform-origin:50%;transform:scale(var(--project-node-scale));transition:fill .25s,transform .25s,opacity .25s}#constellation .star-halo,#constellation .star-pulse{fill:none;stroke:#bfe8dc00;stroke-width:1px;transform-box:fill-box;transform-origin:50%;transform:scale(var(--project-halo-scale));transition:stroke .25s}#constellation .star-rays{fill:none;stroke:#d5efe800;stroke-width:1px;transition:stroke .25s}#constellation g.star:hover .star-dot,#constellation g.star.sel .star-dot{fill:#fff;transform:scale(calc(var(--project-node-scale) * 1.5))}#constellation g.star:hover .star-icon,#constellation g.star:focus .star-icon,#constellation g.star.sel .star-icon{color:#f2fffb;filter:drop-shadow(0 0 5px #8fc4b7bf)}#constellation g.star:hover .star-label-plate,#constellation g.star:focus .star-label-plate,#constellation g.star.sel .star-label-plate{fill:#040a09d1;stroke:#bfe8dc8f;opacity:1}#constellation g.star:hover .star-halo,#constellation g.star.sel .star-halo{stroke:#bfe8dc9e}#constellation g.star:hover .star-rays,#constellation g.star.sel .star-rays{stroke:#d5efe8b8}#constellation g.star.sel .star-pulse{stroke:#bfe8dc80;animation:project-star-pulse calc(var(--project-motion-speed) * 1.33) ease-out infinite}#constellation g.star:focus-visible .star-hit{stroke:var(--readout);stroke-width:1px;stroke-dasharray:3 4}#constellation .star-label{fill:#a9d4c8;font-family:var(--mono);letter-spacing:.075em;text-transform:uppercase;cursor:pointer;font-size:15px;font-weight:600;transition:fill .25s,letter-spacing .25s,opacity .25s}#constellation g.star:hover .star-label,#constellation g.star.sel .star-label{fill:#e4f7f2;letter-spacing:.14em}#proj-card{min-height:12rem}#proj-card h3{text-transform:uppercase;letter-spacing:.14em;font-size:.95rem}#proj-card p{color:var(--ink-dim);margin-top:.7rem;font-size:.85rem;line-height:1.8}#proj-card .meta{color:var(--readout-dim);text-transform:uppercase;letter-spacing:.1em;font-size:.7rem}body[data-project-style=survey] #constellation .edge{stroke-dasharray:3 5}body[data-project-style=radiant] #constellation .edge{stroke-dasharray:1 10;opacity:calc(var(--project-line-opacity) * .35)}body[data-project-style=radiant] #constellation .star-dot{fill:#effffb;filter:drop-shadow(0 0 5px #bfe8dccc)}body[data-project-style=radiant] #constellation .star-rays{stroke:#d5efe847}body[data-project-style=radiant] #constellation .star-halo{stroke:#bfe8dc29}body[data-project-style=radiant] #constellation g.star.sel .star-rays{stroke:#eefffbf5}body[data-project-style=orbital] #constellation .edge{stroke-dasharray:12 7;opacity:calc(var(--project-line-opacity) * .72)}body[data-project-style=orbital] #constellation .star-halo{stroke:#bfe8dc66;stroke-dasharray:2 4;animation:project-orbit calc(var(--project-motion-speed) * 2.2) linear infinite}body[data-project-style=orbital] #constellation .star-rays{stroke:#0000}body[data-project-style=orbital] #constellation g.star.sel .star-halo{stroke:#e5faf4f2;stroke-width:1.5px}body[data-project-style=signal] #constellation .edge{stroke:#8fc4b7b3;stroke-dasharray:7 5;opacity:var(--project-line-opacity);animation:project-route var(--project-motion-speed) linear infinite}body[data-project-style=signal] #constellation .edge.active{stroke:#e5faf4fa;stroke-width:2px}body[data-project-style=signal] #constellation .star-pulse{stroke:#bfe8dc3d;animation:project-star-pulse calc(var(--project-motion-speed) * 1.5) ease-out infinite}body[data-project-style=signal] #constellation .star-label{fill:#c8e6de}body[data-project-style=deep] #constellation{filter:drop-shadow(0 0 20px #8fc4b740)}body[data-project-style=deep] #constellation .edge{stroke:#8fc4b742;stroke-dasharray:none;opacity:calc(var(--project-line-opacity) * .42)}body[data-project-style=deep] #constellation .star-halo{stroke:#bfe8dc38;stroke-width:3px;filter:blur(1.8px)}body[data-project-style=deep] #constellation .star-rays{stroke:#0000}body[data-project-style=deep] #constellation .star-label{opacity:.46}body[data-project-style=deep] #constellation g.star:hover .star-label,body[data-project-style=deep] #constellation g.star.sel .star-label{opacity:1}#constellation .star-sparkle{fill:#e7fbf6;opacity:0;transform-box:fill-box;transform-origin:50%;transition:opacity .25s,transform .25s}body[data-project-style=sparkle] #constellation .star-dot,body[data-project-style=sparkle] #constellation .star-rays{opacity:0}body[data-project-style=sparkle] #constellation .star-halo{stroke:#0000}body[data-project-style=sparkle] #constellation .star-sparkle{opacity:.76;transform:scale(calc(var(--project-node-scale) * .82));filter:drop-shadow(0 0 5px #bfe8dcc7)}body[data-project-style=sparkle] #constellation g.star:not(.sel) .star-sparkle{animation:project-sparkle calc(var(--project-motion-speed) * 1.8) ease-in-out infinite}body[data-project-style=sparkle] #constellation g.star:nth-child(2n) .star-sparkle{animation-delay:calc(var(--project-motion-speed) * -.7)}body[data-project-style=sparkle] #constellation g.star:hover .star-sparkle,body[data-project-style=sparkle] #constellation g.star.sel .star-sparkle{opacity:1;transform:scale(calc(var(--project-node-scale) * 1.38))}body[data-project-style=sparkle] #constellation g.star.sel .star-sparkle{animation:project-sparkle-selected calc(var(--project-motion-speed) * 1.45) ease-in-out infinite}body[data-project-routes=false] #constellation .edge,body[data-project-labels=false] #constellation .star-label{opacity:0}body[data-project-labels=false] #constellation .star-label-plate{opacity:0;pointer-events:none}body[data-project-glow=false] #constellation,body[data-project-glow=false] #constellation .edge,body[data-project-glow=false] #constellation .star-dot,body[data-project-glow=false] #constellation .star-halo,body[data-project-glow=false] #constellation .star-sparkle,body[data-project-glow=false] #constellation .star-icon{filter:none}@media (width<=600px){#constellation .star-label,#constellation .star-label-plate{opacity:0;pointer-events:none}#constellation g.star:hover .star-label,#constellation g.star:focus .star-label,#constellation g.star.sel .star-label,#constellation g.star:hover .star-label-plate,#constellation g.star:focus .star-label-plate,#constellation g.star.sel .star-label-plate{opacity:1}}body[data-project-motion=false] #constellation .edge,body[data-project-motion=false] #constellation .star-halo,body[data-project-motion=false] #constellation .star-pulse,body[data-project-motion=false] #constellation .star-sparkle{animation:none}@keyframes project-route{to{stroke-dashoffset:-12px}}@keyframes project-orbit{to{transform:scale(var(--project-halo-scale)) rotate(360deg)}}@keyframes project-star-pulse{0%{opacity:.8;transform:scale(.72)}78%,to{opacity:0;transform:scale(2.25)}}@keyframes project-sparkle{0%,to{transform:scale(calc(var(--project-node-scale) * .62));opacity:.5}50%{transform:scale(calc(var(--project-node-scale) * .9));opacity:.88}}@keyframes project-sparkle-selected{0%,to{transform:scale(calc(var(--project-node-scale) * 1.08));opacity:.78}50%{transform:scale(calc(var(--project-node-scale) * 1.42));opacity:1}}.posts{max-width:36rem;list-style:none}.posts li{justify-content:space-between;align-items:baseline;gap:1.5rem;padding:.75rem 0;font-size:.9rem;display:flex}.posts li:before{content:"> ";opacity:.5}.posts li+li{border-top:1px solid var(--frame-ghost)}.posts time{color:var(--readout-dim);white-space:nowrap;text-transform:uppercase;font-size:.7rem}.more{text-transform:uppercase;letter-spacing:.15em;margin-top:1.4rem;font-size:.75rem}#contact h2{color:#0a1e1ac7}#contact .panel.dawn{--panel-surface-rgb:235 242 239;--panel-surface-alpha-scale:.32;--glass-blur:12px;--glass-contrast:1.24;--glass-saturation:.82;color:#081b17e6;border-color:#0a241e57;max-width:38rem}#contact .panel.dawn:before{border-color:#0a241e29}#contact .panel.dawn a{border-bottom-color:#0a241e6b}#contact .panel.dawn a:hover{color:#061612;border-bottom-color:#061612bf}#contact .links{flex-wrap:wrap;gap:2rem;margin-bottom:2.2rem;font-size:.9rem;display:flex}.timeline div{grid-template-columns:6.5rem 1fr;gap:1rem;padding:.55rem 0;font-size:.85rem;line-height:1.7;display:grid}.timeline span:first-child{color:var(--readout-dim);text-transform:uppercase;letter-spacing:.12em;padding-top:.25em;font-size:.7rem}html[data-quality=medium] body .panel,html[data-quality=low] body .panel,html[data-quality=static] body .panel{-webkit-backdrop-filter:none;background:#040a0985}html[data-quality=medium] body #contact .panel.dawn,html[data-quality=low] body #contact .panel.dawn,html[data-quality=static] body #contact .panel.dawn{background:#e2ede9a8}body[data-shape-panels=true] .panel,body[data-shape-nav=true] .section-dots,body[data-shape-lab=true] .constellation-lab{border-width:var(--shape-border-weight);border-radius:var(--shape-radius);background-color:rgb(var(--surface-rgb) / calc(var(--shape-surface-opacity) * var(--surface-alpha-scale)));box-shadow:0 0 var(--shape-shadow-depth) #02080c6b;transition:border-radius .2s,border-width .2s,box-shadow .2s,background-color .2s}body[data-shape-controls=true] :is(.constellation-lab select,.lab-tabs button,.lab-toggles span,.lab-reset){border-width:var(--shape-border-weight);border-radius:var(--shape-radius)}body[data-shape-controls=true] .lab-range input::-webkit-slider-thumb{border-width:var(--shape-border-weight);border-radius:var(--shape-radius)}body[data-shape-border=false][data-shape-panels=true] .panel,body[data-shape-border=false][data-shape-nav=true] .section-dots,body[data-shape-border=false][data-shape-lab=true] .constellation-lab,body[data-shape-border=false][data-shape-controls=true] :is(.constellation-lab select,.lab-tabs button,.lab-toggles span,.lab-reset){border-color:#0000}body[data-shape-shadow=false][data-shape-panels=true] .panel,body[data-shape-shadow=false][data-shape-nav=true] .section-dots,body[data-shape-shadow=false][data-shape-lab=true] .constellation-lab{box-shadow:none}body[data-shape-panels=true] .panel:before{border-width:var(--shape-border-weight);border-radius:var(--shape-radius);transform:translate(var(--shape-frame-offset), var(--shape-frame-offset));opacity:1;transition:opacity .2s,transform .2s,border-radius .2s}body[data-shape-double=false][data-shape-panels=true] .panel:before{opacity:0}body[data-shape-double=true][data-shape-lab=true] .constellation-lab:before{content:"";z-index:-1;border:var(--shape-border-weight) solid var(--frame-ghost);border-radius:var(--shape-radius);transform:translate(var(--shape-frame-offset), var(--shape-frame-offset));pointer-events:none;position:absolute;inset:-1px}body[data-shape-double=false][data-shape-lab=true] .constellation-lab:before{content:none}body[data-shape-chamfer=true][data-shape-panels=true] .panel,body[data-shape-chamfer=true][data-shape-lab=true] .constellation-lab{clip-path:polygon(var(--shape-cut-size) 0, calc(100% - var(--shape-cut-size)) 0, 100% var(--shape-cut-size), 100% calc(100% - var(--shape-cut-size)), calc(100% - var(--shape-cut-size)) 100%, var(--shape-cut-size) 100%, 0 calc(100% - var(--shape-cut-size)), 0 var(--shape-cut-size));border-radius:0}body[data-shape-preset=brackets][data-shape-panels=true] .panel,body[data-shape-preset=brackets][data-shape-nav=true] .section-dots,body[data-shape-preset=brackets][data-shape-lab=true] .constellation-lab{background:linear-gradient(var(--frame), var(--frame)) left top / var(--shape-cut-size) var(--shape-border-weight) no-repeat, linear-gradient(var(--frame), var(--frame)) left top / var(--shape-border-weight) var(--shape-cut-size) no-repeat, linear-gradient(var(--frame), var(--frame)) right top / var(--shape-cut-size) var(--shape-border-weight) no-repeat, linear-gradient(var(--frame), var(--frame)) right top / var(--shape-border-weight) var(--shape-cut-size) no-repeat, linear-gradient(var(--frame), var(--frame)) left bottom / var(--shape-cut-size) var(--shape-border-weight) no-repeat, linear-gradient(var(--frame), var(--frame)) left bottom / var(--shape-border-weight) var(--shape-cut-size) no-repeat, linear-gradient(var(--frame), var(--frame)) right bottom / var(--shape-cut-size) var(--shape-border-weight) no-repeat, linear-gradient(var(--frame), var(--frame)) right bottom / var(--shape-border-weight) var(--shape-cut-size) no-repeat, rgb(var(--surface-rgb) / calc(var(--shape-surface-opacity) * var(--surface-alpha-scale)));border-color:#0000;border-radius:0}@media (pointer:coarse){.panel,#contact .panel.dawn{-webkit-backdrop-filter:none;background:#040a0985}body[data-shape-panels] .panel{background:#040a0985}body[data-shape-panels] #contact .panel.dawn{background:#e2ede9a8}}@media (prefers-reduced-motion:reduce){html{scroll-snap-type:y proximity}.section-marker:before,.section-marker:after,.marker-use,.section-dots a:after{transition:none;animation:none!important}#constellation .edge,#constellation .star-pulse{animation:none!important}.reveal{opacity:1;transition:none;transform:none}.panel,#contact .panel.dawn{-webkit-backdrop-filter:none}.panel,body[data-shape-panels] .panel{background:#040a0985}body[data-shape-panels] #contact .panel.dawn{background:#e2ede9a8}}@media (width<=600px){section,#shore{padding-right:4rem}.section-dots--top{top:max(.55rem, env(safe-area-inset-top))}.section-dots--side{right:max(.25rem, env(safe-area-inset-right))}.section-dots a{width:2.1rem;height:2.1rem}.section-dots--side a:after{display:none}.constellation-lab{left:max(.55rem, env(safe-area-inset-left));bottom:max(.55rem, env(safe-area-inset-bottom));width:min(15rem,100vw - 4.25rem)}.constellation-lab summary{min-height:2.3rem}.constellation-lab select{min-height:2.1rem}.lab-toggles span{min-height:2rem}}body.no-gl #gl{display:none}body.no-gl{background:linear-gradient(#050113 0%,#0a0824 8%,#0a1128 21%,#16294f 38%,#2b3a67 49%,#b96a8c 57%,#ff9e6b 62%,#6ab7f0 71%,#d9f1fe 79%,#d3dbe1 90%,#c8ced3 100%) 0 0/100% 710vh}
