@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/_astro/figtree-latin-ext-wght-normal.DCwSJGxG.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/_astro/figtree-latin-wght-normal.D_ZTVpCC.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Azeret Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/azeret-mono-latin-ext-wght-normal.CaAVEd4C.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Azeret Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/azeret-mono-latin-wght-normal.BhHwRSCm.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial}}}@layer theme{:root,:host{--font-sans:var(--font-sans);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-geist-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\!visible{visibility:visible!important}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.static{position:static}.isolate{isolation:isolate}.block{display:block}.contents{display:contents}.hidden{display:none}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.rounded{border-radius:.25rem}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.scheme-only-dark{color-scheme:dark only}}:root{--font-sans:"Figtree Variable", ui-sans-serif, system-ui, sans-serif;--font-geist-mono:"Geist Mono Variable", ui-monospace, monospace;--font-azeret-mono:"Azeret Mono Variable", ui-monospace, monospace;color-scheme:dark;background:#090807}*,:before,:after{box-sizing:border-box}html,body{overscroll-behavior:none;scrollbar-width:none;touch-action:pan-x pan-y pinch-zoom;background:#090807;width:100%;height:100dvh;margin:0;position:fixed;inset:0;overflow:clip}html::-webkit-scrollbar{width:0;height:0;display:none}body::-webkit-scrollbar{width:0;height:0;display:none}::-webkit-scrollbar{width:0;height:0;display:none}body{font-family:var(--font-sans);color:#eee9df}a{color:inherit;text-decoration:none}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.azeret-mono{font-family:var(--font-azeret-mono)}.port-app{--port-inset:clamp(.2rem, .45vw, .4rem);--port-radius:clamp(1.15rem, 2.2vw, 2.35rem);isolation:isolate;view-transition-name:port-shell;background:#000;position:fixed;inset:0}.port-window{corner-shape:squircle;inset:var(--port-inset);border-radius:var(--port-radius);view-transition-name:port-scene;background:#110e0c;border:.5px solid #000;position:absolute;overflow:hidden}.home-root{padding:max(1.5rem, env(safe-area-inset-top)) clamp(1.1rem, 5vw, 4rem) max(1.2rem, env(safe-area-inset-bottom));text-align:center;background:radial-gradient(circle at 50% 35%,#211c19 0,#151210 56%,#0e0c0a 100%);flex-direction:column;align-items:center;display:flex;position:absolute;inset:0}.home-atmosphere,.underwater-atmosphere,.project-atmosphere{pointer-events:none;position:absolute;inset:0}.star-field{aspect-ratio:1;opacity:.78;transform-origin:50%;width:150vmax;animation:star-disk-rotate 1440s linear var(--sky-time-offset,0s) infinite;position:absolute;top:50%;left:50%}.star-field i{width:100%;height:1px;transform:rotate(var(--angle)) translateX(var(--distance));transform-origin:0;position:absolute;top:50%;left:50%}.star-field span{width:var(--size);aspect-ratio:1;background:var(--star-color,oklch(92.8% .018 78));box-shadow:0 0 .35rem var(--star-glow,oklch(86% .055 70/.65));animation:star-twinkle var(--duration) ease-in-out var(--delay) infinite alternate;border-radius:50%;position:absolute;top:50%;left:0}.star-field i[data-temperature=blue]{--star-color:oklch(88.4% .058 245);--star-glow:oklch(75% .105 250/.62)}.star-field i[data-temperature=red]{--star-color:oklch(86.5% .071 28);--star-glow:oklch(72% .12 25/.58)}.home-fire{position:absolute;inset:0;overflow:hidden}.home-fire__layer{transform-origin:50% 92%;will-change:transform, opacity;position:absolute;inset:24% -18% -38%}.home-fire__layer--one{filter:blur(34px);background:radial-gradient(62% 51% at 50% 82%,#ff7f398f,#0000 72%);animation:5.3s ease-in-out -1.1s infinite alternate fire-breathe-one}.home-fire__layer--two{filter:blur(48px);background:radial-gradient(50% 45% at 42% 83%,#ff532659,#0000 71%);animation:7.1s ease-in-out -4.2s infinite alternate fire-breathe-two}.home-fire__layer--three{filter:blur(56px);background:radial-gradient(42% 38% at 59% 87%,#ffc07447,#0000 73%);animation:4.7s ease-in-out -2.7s infinite alternate fire-breathe-three}.home-embers-canvas{contain:strict;width:100%;height:100%;position:absolute;inset:0}.home-content{z-index:2;flex-direction:column;align-items:center;gap:clamp(1rem,3vh,1.5rem);min-width:0;margin:auto 0;display:flex;position:relative}.home-logo{letter-spacing:clamp(.18rem,.8vw,.42rem);text-shadow:0 0 2rem #ffb0691f;font-size:clamp(2.25rem,7vw,4.5rem);font-weight:500}.home-logo__i{position:relative}.home-logo__i [data-wordmark-i-dot]{pointer-events:none;width:1px;height:1px;position:absolute;top:.24em;left:calc(50% - .08em);transform:translate(-50%,-50%)}.home-logo:focus-visible,.port-nav__link:focus-visible,.project-link:focus-visible{outline-offset:4px;outline:2px solid #e8a66a}.home-tagline{color:#aaa196;letter-spacing:clamp(.08rem,.45vw,.2rem);text-wrap:pretty;max-width:40ch;margin:0;font-size:clamp(.9rem,2.2vw,1.15rem)}.port-nav{z-index:5;pointer-events:none;display:flex;position:absolute;left:clamp(1rem,4vw,3rem);right:clamp(1rem,4vw,3rem)}.port-nav--top{top:max(4.6rem, calc(env(safe-area-inset-top) + 3.5rem))}.port-nav--bottom{bottom:max(1.5rem, env(safe-area-inset-bottom));justify-content:center;width:max-content;max-width:calc(100% - 2rem);left:50%;right:auto;transform:translate(-50%)}.port-nav--left{justify-content:flex-start}.port-nav--right{justify-content:flex-end}.port-nav__link{color:#eee9dfb8;letter-spacing:.15rem;pointer-events:auto;justify-content:center;align-items:center;min-height:3rem;padding:.65rem .8rem;font-size:1rem;display:inline-flex;position:relative}.port-nav__link:after{content:"";background:currentColor;height:1px;transition:transform .24s;position:absolute;bottom:.42rem;left:.8rem;right:.8rem;transform:scaleX(.28)}.port-nav__link:hover:after,.port-nav__link:focus-visible:after{transform:scaleX(1)}.underwater-atmosphere{background:radial-gradient(at 50% -8%,#fa965540,#0000 34%),linear-gradient(#123d49 0%,#092a38 42%,#051b28 100%)}.water-surface{background:repeating-radial-gradient(at 50% -20%,#0000 0 8%,#ffc18214 9%,#0000 12%);height:20%;animation:11s ease-in-out infinite alternate water-surface;position:absolute;inset:0 0 auto}.water-rays{opacity:.32;justify-content:space-around;display:flex;position:absolute;inset:-6% 8% 12%}.water-rays i{clip-path:polygon(34% 0,66% 0,100% 100%,0 100%);transform-origin:top;background:linear-gradient(#ffcf9740,#0000 82%);width:13%;animation:13s ease-in-out infinite alternate ray-drift}.water-rays i:nth-child(2){opacity:.55;animation-delay:-7s}.water-rays i:nth-child(3){opacity:.72;animation-delay:-3s}.water-rays i:nth-child(4){opacity:.46;animation-delay:-10s}.water-caustics{background:repeating-linear-gradient(112deg,#0000 0 12%,#7ad2d509 14%,#0000 17% 27%);animation:17s linear infinite alternate caustic-drift;position:absolute;inset:0}.water-particles{background-image:radial-gradient(circle at 11% 23%,#d9f2eb5c 0 1px,#0000 1.5px),radial-gradient(circle at 76% 41%,#d9f2eb4d 0 1px,#0000 1.5px),radial-gradient(circle at 34% 71%,#d9f2eb47 0 1px,#0000 1.5px),radial-gradient(circle at 89% 83%,#d9f2eb40 0 1px,#0000 1.5px);background-size:13rem 17rem,19rem 14rem,17rem 23rem,23rem 19rem;animation:24s linear infinite particle-rise;position:absolute;inset:0}.project-index{--visible-projects:4;--project-offset:0;z-index:2;inset:clamp(9.5rem, 24vh, 13rem) clamp(1.5rem, 7vw, 6rem) max(1.1rem, env(safe-area-inset-bottom));grid-template-rows:minmax(0,1fr) 4rem;gap:.6rem;display:grid;position:absolute}.project-index[data-scrollable=false]{grid-template-rows:minmax(0,1fr)}.project-index[data-scrollable=false] .project-rail{display:none}.project-list-mask{min-height:0;position:relative;overflow:hidden;mask-image:linear-gradient(#0000 0,#000 5% 88%,#0000 100%)}.project-list{transform:translateY(calc(var(--project-offset) * -1 * (100% / var(--visible-projects))));margin:0;padding:0;transition:transform .48s cubic-bezier(.2,.8,.2,1);position:absolute;inset:0}.project-list__item{height:calc(100% / var(--visible-projects));min-height:3rem}.project-link{color:#eee9dfc7;text-shadow:0 1px 12px #030407e0;border-top:1px solid #eee9df1c;align-items:center;gap:clamp(.75rem,2vw,1.5rem);min-width:0;height:100%;padding:0 clamp(.35rem,1vw,.8rem);transition:transform .15s ease-out;display:flex}.project-copy{flex-direction:column;gap:.18rem;min-width:0;display:flex}.project-copy strong{letter-spacing:.06rem;font-size:clamp(1.05rem,2.4vw,1.6rem);font-weight:500}.project-copy small{color:#d9dad2b3;font-family:var(--font-sans);overflow-wrap:break-word;text-wrap:pretty;font-size:clamp(.8rem,1.5vw,.95rem);line-height:1.4}.project-link:hover,.project-link:focus-visible,.project-list__item[data-selected] .project-link{color:#e7f2ee}.project-link:active{color:#fff7ed;transform:scale(.96)}.project-rail{grid-template-columns:minmax(0,1fr);align-items:center;gap:.8rem;display:grid}.project-rail input{appearance:none;touch-action:pan-x pinch-zoom;background:0 0;width:100%;height:3rem;margin:0}.project-rail input::-webkit-slider-runnable-track{background:#d6ede947;height:1px}.project-rail input::-webkit-slider-thumb{appearance:none;background:#dc9a6b;border:0;border-radius:999px;width:clamp(2.5rem,8vw,5rem);height:.32rem;margin-top:-.14rem}.project-rail input::-moz-range-track{background:#d6ede947;height:1px}.project-rail input::-moz-range-thumb{background:#dc9a6b;border:0;border-radius:999px;width:clamp(2.5rem,8vw,5rem);height:.32rem}.project-rail input:focus-visible{outline-offset:0;outline:2px solid #dc9a6b}.project-atmosphere{background:radial-gradient(circle at 65% 38%, var(--project-accent), transparent 35%), radial-gradient(circle at 25% 75%, var(--project-atmosphere), transparent 42%), var(--project-background)}@supports (color:color-mix(in lab, red, red)){.project-atmosphere{background:radial-gradient(circle at 65% 38%, color-mix(in oklab, var(--project-accent) 24%, transparent), transparent 35%), radial-gradient(circle at 25% 75%, color-mix(in oklab, var(--project-atmosphere) 42%, transparent), transparent 42%), var(--project-background)}}.project-detail{z-index:2;color:var(--project-foreground);grid-template-columns:minmax(0,4fr) minmax(0,5fr);align-items:center;gap:clamp(2rem,7vw,7rem);display:grid;position:absolute;inset:clamp(5rem,13vh,8rem) clamp(1.5rem,7vw,7rem) clamp(2rem,7vh,5rem)}.project-detail__copy{flex-direction:column;align-items:flex-start;gap:1.2rem;min-width:0;display:flex}.project-detail__eyebrow,.project-detail__summary,.project-detail__placeholder,.project-detail__media p{margin:0}.project-detail__eyebrow{color:var(--project-accent);letter-spacing:.18rem;text-transform:uppercase;font-size:.8rem}.project-detail__summary{max-width:40ch;font-family:var(--font-sans);text-wrap:pretty;font-size:clamp(1.1rem,2vw,1.45rem)}.project-detail__placeholder{max-width:56ch;color:var(--project-foreground)}@supports (color:color-mix(in lab, red, red)){.project-detail__placeholder{color:color-mix(in oklab, var(--project-foreground) 58%, transparent)}}.project-detail__placeholder{font-family:var(--font-sans);text-wrap:pretty;font-size:1rem}.project-detail__media{aspect-ratio:4/3;corner-shape:squircle;background:var(--project-atmosphere);border-radius:min(4vw,3rem);place-items:center;min-width:0;display:grid;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.project-detail__media{background:color-mix(in oklab, var(--project-atmosphere) 42%, transparent)}}.project-detail__media{box-shadow:inset 0 0 0 1px var(--project-rim)}@supports (color:color-mix(in lab, red, red)){.project-detail__media{box-shadow:inset 0 0 0 1px color-mix(in oklab, var(--project-rim) 18%, transparent)}}.project-detail__media p{z-index:1;color:var(--project-foreground)}@supports (color:color-mix(in lab, red, red)){.project-detail__media p{color:color-mix(in oklab, var(--project-foreground) 55%, transparent)}}.project-detail__media p{letter-spacing:.16rem;font-size:.8rem}.project-detail__orb{aspect-ratio:1;background:radial-gradient(circle at 35% 28%, var(--project-rim), var(--project-accent) 30%, transparent 70%);filter:blur(2px);opacity:.55;border-radius:50%;width:45%;animation:8s ease-in-out infinite alternate project-orb;position:absolute}::view-transition-old(port-scene),::view-transition-new(port-scene){backface-visibility:hidden;animation-duration:.62s;animation-timing-function:cubic-bezier(.76,0,.24,1)}::view-transition-group(port-shell),::view-transition-old(port-shell),::view-transition-new(port-shell){animation:none}::view-transition-old(port-shell){opacity:0}::view-transition-new(port-shell){opacity:1}html[data-route-direction=up]::view-transition-old(port-scene){animation-name:scene-leave-up}html[data-route-direction=up]::view-transition-new(port-scene){animation-name:scene-enter-up}html[data-route-direction=down]::view-transition-old(port-scene){animation-name:scene-leave-down}html[data-route-direction=down]::view-transition-new(port-scene){animation-name:scene-enter-down}html[data-route-direction=left]::view-transition-old(port-scene){animation-name:scene-leave-left}html[data-route-direction=left]::view-transition-new(port-scene){animation-name:scene-enter-left}html[data-route-direction=right]::view-transition-old(port-scene){animation-name:scene-leave-right}html[data-route-direction=right]::view-transition-new(port-scene){animation-name:scene-enter-right}@keyframes star-twinkle{0%{opacity:.2;transform:scale(.72)}to{opacity:1;transform:scale(1.08)}}@keyframes star-disk-rotate{0%{transform:translate(-50%,-50%)rotate(0)}to{transform:translate(-50%,-50%)rotate(360deg)}}@keyframes fire-breathe-one{0%{opacity:.58;transform:translate(-1%,1.5%)scale(.98)}to{opacity:.84;transform:translate(1%,-1%)scale(1.035)}}@keyframes fire-breathe-two{0%{opacity:.45;transform:translate(-2.5%)scale(.96)}to{opacity:.72;transform:translate(2%,-1.5%)scale(1.04)}}@keyframes fire-breathe-three{0%{opacity:.38;transform:translate(2%,1%)scale(1.03)}to{opacity:.66;transform:translate(-1%,-2%)scale(.97)}}@keyframes water-surface{0%{transform:translate(-2%,-1%)scale(1.03)}to{transform:translate(2%,1%)scale(1.08)}}@keyframes ray-drift{0%{opacity:.48;transform:skew(-4deg)scaleX(.88)}to{opacity:.82;transform:skew(5deg)scaleX(1.14)}}@keyframes caustic-drift{0%{transform:translate(-3%,-1%)}to{transform:translate(3%,1%)}}@keyframes particle-rise{0%{background-position:0 0,0 0,0 0,0 0}to{background-position:0 -17rem,0 -14rem,0 -23rem,0 -19rem}}@keyframes project-orb{0%{transform:translate(-8%,5%)scale(.94)}to{transform:translate(8%,-5%)scale(1.05)}}@keyframes scene-leave-up{to{transform:translateY(-100%)}}@keyframes scene-enter-up{0%{transform:translateY(100%)}}@keyframes scene-leave-down{to{transform:translateY(100%)}}@keyframes scene-enter-down{0%{transform:translateY(-100%)}}@keyframes scene-leave-left{to{transform:translate(-100%)}}@keyframes scene-enter-left{0%{transform:translate(100%)}}@keyframes scene-leave-right{to{transform:translate(100%)}}@keyframes scene-enter-right{0%{transform:translate(-100%)}}@media (width<=47.999rem){.port-app{--port-inset:.2rem;--port-radius:2.25rem}.project-index{top:6.5rem}.project-detail{grid-template-rows:auto minmax(0,1fr);grid-template-columns:1fr;align-items:stretch;gap:1.5rem}.project-detail__copy{gap:.75rem}.project-detail__placeholder{display:none}.project-detail__media{aspect-ratio:auto;max-height:42vh}}@media (height<=43rem){.project-index{top:6.5rem}}@media (width<=24rem){.home-tagline{max-width:24ch}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}.home-embers-canvas{display:none}}.port-window{background:#08090e;container-type:size}.route-content,.world-scene{position:absolute;inset:0}.route-content{z-index:20;pointer-events:none;view-transition-name:route-content}.route-content a,.route-content button,.route-content input{pointer-events:auto}.world-scene{z-index:0;contain:strict;background:radial-gradient(at 50% 20%,#171929 0,#0d101b 48%,#08090e 100%);overflow:hidden}.world-sky,.world-sky__canvas,.world-celestial{width:100%;height:100%;position:absolute;inset:0}.world-sky{z-index:1}.world-sky:after{content:"";background:radial-gradient(circle at 50% 52%,#0000 42%,#00000047 100%),linear-gradient(#0000 52%,#08090ea6 76%,#050607f2);position:absolute;inset:0}.world-sky__canvas{contain:strict}.world-celestial{z-index:2;pointer-events:none;overflow:visible}.world-scene[data-sky-ready=false] .world-sky__canvas,.world-scene[data-sky-ready=false] .world-celestial{visibility:hidden}.world-tracks path{fill:none;stroke:#d5ccb921;stroke-width:.75px;stroke-dasharray:2 7;display:none}.world-tracks path[data-visible]{display:block}.world-body{display:none}.world-body[data-visible]{display:block}.world-body__halo{fill:#f0ddb814}.world-body__disc{fill:#e8dfc8;stroke:#fff6e0b8;stroke-width:.75px;vector-effect:non-scaling-stroke}.world-body--sun .world-body__disc{fill:#020204;stroke:#a496817a}.world-body--moon .world-body__disc{fill:#ddd7ca;filter:drop-shadow(0 0 5px #dce0dd61)}.world-body__moon-shadow{fill:#07080cd1}.world-body--mars .world-body__disc{fill:#d98262}.world-body--jupiter .world-body__disc,.world-body--saturn .world-body__disc{fill:#d8c39e}.world-body--uranus .world-body__disc,.world-body--neptune .world-body__disc{fill:#86aab5}.world-body__label{fill:#eee9dfb8;font-family:var(--font-azeret-mono);letter-spacing:.08em;paint-order:stroke;stroke:#07080ce6;stroke-width:3px;stroke-linejoin:round;vector-effect:non-scaling-stroke;font-size:13px;display:none}.world-body[data-label-visible] .world-body__label{display:block}.world-fire-effects{z-index:4;filter:blur(28px);pointer-events:none;backface-visibility:hidden;background:radial-gradient(at 50% 84%,#ee753638,#0000 44%),radial-gradient(at 24% 100%,#d04d221a,#0000 40%),radial-gradient(at 74% 100%,#ff9c4e12,#0000 38%);animation:7.2s ease-in-out infinite alternate world-fire-effects;position:absolute;inset:48% -28% -38%;transform:translateZ(0)}.world-embers{z-index:5;pointer-events:none}.world-scene[data-fire-effects=false] .world-fire-effects,.world-scene[data-fire-effects=false] .world-embers{display:none}.time-controls{--time-control-radius:.9rem;--time-control-padding:.4rem;z-index:50;top:max(1rem, env(safe-area-inset-top));color:#eee9df;width:min(22rem,100% - 5rem);font-family:var(--font-azeret-mono);position:absolute;left:clamp(1rem,3vw,2.5rem)}.time-controls__summary{border-radius:calc(var(--time-control-radius) - var(--time-control-padding));color:#eee9dfc2;cursor:pointer;backdrop-filter:blur(10px);background:#0f10149e;align-items:center;gap:.55rem;min-height:2.25rem;padding:.4rem .65rem;font-size:.76rem;line-height:1.25;list-style:none;display:inline-flex;position:relative;box-shadow:inset 0 0 0 1px #ffffff0f}.time-controls__summary::-webkit-details-marker{display:none}.time-controls__summary svg{fill:none;stroke:currentColor;stroke-width:1.5px;flex:none;width:1rem;transition:transform .16s cubic-bezier(.2,0,0,1)}.time-controls[open] .time-controls__summary svg{transform:rotate(180deg)}.time-controls__target{width:max(100%,3rem);height:max(100%,3rem);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.time-controls__time,.time-controls__scale{font-variant-numeric:tabular-nums;white-space:nowrap}.time-controls__scale{color:#e6a064}.time-controls__panel{max-height:calc(100dvh - max(5.5rem, env(safe-area-inset-top)));overscroll-behavior:contain;scrollbar-color:#e8a66a75 transparent;scrollbar-width:thin;touch-action:pan-y;border-radius:var(--time-control-radius);backdrop-filter:blur(18px);background:#0c0d11f0;gap:1.15rem;margin-top:.5rem;padding:1rem;display:grid;overflow-y:auto;box-shadow:inset 0 0 0 1px #ffffff14,0 1rem 3rem #00000057}.time-controls__panel::-webkit-scrollbar{width:.35rem;display:block}.time-controls__panel::-webkit-scrollbar-thumb{background:#e8a66a75;border-radius:999px}.time-controls__heading{gap:.25rem;display:grid}.time-controls__heading h2,.time-controls__heading p,.time-controls__footer p{margin:0}.time-controls__heading h2{font-size:1rem;font-weight:500}.time-controls__heading p,.time-controls__footer p{color:#eee9df94;font-family:var(--font-sans);text-wrap:pretty;font-size:.8rem;line-height:1.5}.time-field{color:#eee9dfad;gap:.4rem;min-width:0;font-size:.76rem;display:grid}.time-field input,.time-field select{appearance:none;color:#eee9df;width:100%;min-width:0;height:2.5rem;font:inherit;font-variant-numeric:tabular-nums;background:#ffffff0f;border:0;border-radius:.5rem;padding:0 .7rem;font-size:1rem;box-shadow:inset 0 0 0 1px #ffffff14}.time-field select{appearance:auto}.time-field input:focus-visible,.time-field select:focus-visible{outline-offset:-1px;outline:2px solid #e8a66a}.time-field__unit{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.5rem;display:grid}.effects-toggle{cursor:pointer;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:.75rem;display:grid}.effects-toggle input{accent-color:#e8a66a;width:1.25rem;height:1.25rem;margin:.1rem 0 0}.effects-toggle span{gap:.2rem;min-width:0;display:grid}.effects-toggle strong{color:#eee9dfd1;font-size:.78rem;font-weight:500}.effects-toggle small{color:#eee9df8f;font-family:var(--font-sans);font-size:.8rem;line-height:1.45}.effects-toggle input:focus-visible{outline-offset:2px;outline:2px solid #e8a66a}.time-scale,.time-controls__development{border:0;min-width:0;margin:0;padding:0}.time-scale legend,.time-controls__development legend{color:#eee9dfad;margin-bottom:.55rem;font-size:.76rem}.time-scale__options{grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem;display:grid}.time-scale__options label{display:grid;position:relative}.time-scale__options input{opacity:0;pointer-events:none;position:absolute}.time-scale__options span{color:#eee9dfa8;cursor:pointer;background:#ffffff0b;border-radius:.5rem;place-items:center;min-height:2.5rem;font-size:.78rem;display:grid;box-shadow:inset 0 0 0 1px #ffffff12}.time-scale__options input:checked+span{color:#f0b783;background:#e8a66a29;box-shadow:inset 0 0 0 1px #e8a66a6b}.time-scale__options input:focus-visible+span{outline-offset:2px;outline:2px solid #e8a66a}.time-controls__development{border-top:1px solid #ffffff14;padding-top:1rem}.time-controls__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem;display:grid}.background-settings{gap:1.1rem;margin-top:1.1rem;display:grid}.background-settings__group{border:0;min-width:0;margin:0;padding:0}.background-settings__group legend{color:#eee9dfad;justify-content:space-between;align-items:center;gap:1rem;width:100%;margin-bottom:.55rem;font-size:.76rem;display:flex}.background-settings__indicator{color:#f0b783;letter-spacing:.06em;text-transform:uppercase;background:#e8a66a29;border-radius:999px;padding:.18rem .4rem;font-size:.66rem;font-weight:500;display:none;box-shadow:inset 0 0 0 1px #e8a66a5c}.background-settings__group[data-background-breakpoint=xs] .background-settings__indicator{display:inline-flex}@container (width>=48rem){.background-settings__group[data-background-breakpoint=xs] .background-settings__indicator{display:none}.background-settings__group[data-background-breakpoint=md] .background-settings__indicator{display:inline-flex}}@container (width>=80rem){.background-settings__group[data-background-breakpoint=md] .background-settings__indicator{display:none}.background-settings__group[data-background-breakpoint=xl] .background-settings__indicator{display:inline-flex}}.time-controls__footer{gap:.55rem;display:grid}.time-controls__footer button{color:#eee9df;min-height:2.5rem;font:inherit;cursor:pointer;background:#eee9df1a;border:0;border-radius:.55rem;padding:.55rem .8rem;font-size:.78rem;transition:transform .12s ease-out;box-shadow:inset 0 0 0 1px #ffffff17}.time-controls__footer button:active{transform:scale(.96)}.time-controls__summary:focus-visible,.time-controls__footer button:focus-visible{outline-offset:3px;outline:2px solid #e8a66a}.time-controls [hidden]{display:none}.motion-toggle{z-index:40;top:max(1.05rem, env(safe-area-inset-top));aspect-ratio:1;color:#eee9dfa8;cursor:pointer;backdrop-filter:blur(8px);background:#0f101475;border:0;border-radius:50%;place-items:center;width:2rem;padding:0;display:grid;position:absolute;right:clamp(1rem,3vw,2.5rem)}@media (width>=40rem){.time-field input,.time-field select{height:2.25rem;font-size:.8rem}.time-scale__options span,.time-controls__footer button{min-height:2.25rem}}@media (width<=31rem){.time-controls__panel{width:calc(100vw - 3rem)}.time-controls__grid{grid-template-columns:minmax(0,1fr)}}.motion-toggle svg{fill:currentColor;width:.85rem}.motion-toggle__target{aspect-ratio:1;width:max(100%,3rem);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.motion-toggle__play,.motion-toggle[data-paused=true] .motion-toggle__pause{display:none}.motion-toggle[data-paused=true] .motion-toggle__play{display:block}.motion-toggle:focus-visible{outline-offset:4px;outline:2px solid #e8a66a}.home-root,.project-atmosphere{background:0 0}.home-root{z-index:2}.home-content{transform:translateY(-7vh)}@keyframes world-fire-effects{0%{opacity:.52}to{opacity:.86}}@container (width<=48rem){.world-body__label{font-size:14px}.home-content{transform:translateY(-5vh)}}.world-scene[data-world-paused=true] *,.world-scene[data-sky-motion=reduced] *{animation-play-state:paused!important}@media (prefers-reduced-motion:reduce){.world-embers{display:none}.world-fire-effects{opacity:.7;animation:none}}.time-controls{z-index:50;top:max(.35rem, env(safe-area-inset-top));left:max(.35rem, env(safe-area-inset-left));color:#eee9df;width:max-content;max-width:calc(100% - 4.5rem);font-family:var(--font-azeret-mono);position:absolute}.time-controls__sky{width:max-content;max-width:100%;position:relative}.sky-time-button,.dev-settings-button{color:#eee9dfb8;min-height:0;font:inherit;cursor:pointer;text-shadow:0 1px .8rem #000000f2;background:0 0;border:0;padding:.2rem .3rem;font-size:.75rem}.sky-time-button{font-variant-numeric:tabular-nums;align-items:center;gap:.5rem;line-height:1;display:inline-flex;position:relative}.sky-time-button:before{content:"";position:absolute;inset:-.2rem -.15rem}.sky-calibrating{color:inherit;font-size:inherit;letter-spacing:.02em;opacity:.62}.sky-information__panel{background:#08090df0;border:1px solid #eee9df1f;border-radius:.7rem;gap:.75rem;width:min(20rem,100vw - 1rem);padding:.85rem .9rem;display:grid;position:absolute;top:calc(100% + .05rem);left:0;box-shadow:inset 0 0 0 1px #ffffff09}.sky-information__title{color:#eee9dfe6;font-family:var(--font-azeret-mono);margin:0;font-size:.88rem;line-height:1.35}.sky-information__details{gap:.55rem;margin:0;display:grid}.sky-information__details>div{grid-template-columns:5.25rem minmax(0,1fr);align-items:baseline;gap:.6rem;display:grid}.sky-information__details dt{color:#eee9df7a;font-family:var(--font-azeret-mono);font-size:.68rem}.sky-information__details dd{color:#eee9dfad;font-family:var(--font-sans);margin:0;font-size:.82rem;line-height:1.35}.sky-information__details>div:last-child dd{color:#e8a66adb;font-family:var(--font-azeret-mono);font-size:.72rem}.sky-information .effects-toggle{color:#eee9dfbd;font-family:var(--font-sans);margin-top:.1rem;padding-top:0;font-size:.8rem}.dev-settings-button{color:#eee9dfa3;justify-self:start;min-height:0;padding:0;font-size:.75rem}.site-github{z-index:50;top:max(.35rem, env(safe-area-inset-top));right:max(.35rem, env(safe-area-inset-right));color:#eee9dfb8;place-items:start center;width:auto;height:auto;padding:.2rem;display:grid;position:absolute}.site-github:before{content:"";position:absolute;inset:-.25rem}.site-github__mark{filter:drop-shadow(0 1px .55rem #000000e6);width:.9rem;height:.9rem;margin-top:.04rem;display:block}.site-github:hover,.site-github:focus-visible{color:#eee9dfeb}.sky-time-button:focus-visible,.dev-settings-button:focus-visible,.dev-settings__close:focus-visible,.site-github:focus-visible{outline-offset:2px;outline:2px solid #e8a66a}.dev-settings{inset:auto max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) auto;color:#eee9df;background:#08090df7;border:0;border-radius:1.15rem;width:min(34rem,100vw - 2rem);max-width:none;height:min(43rem,100dvh - 2rem);max-height:none;margin:0;padding:0;position:fixed;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff17,0 1.5rem 5rem #0000008c}.dev-settings::backdrop{backdrop-filter:blur(2px);background:#02030552}.dev-settings__shell{overscroll-behavior:contain;scrollbar-width:thin;grid-template-rows:auto auto auto auto;gap:1.15rem;height:100%;padding:1.15rem;display:grid;overflow-y:auto}.dev-settings__header{z-index:1;background:#08090df5;justify-content:space-between;align-items:flex-start;gap:1rem;margin:-1.15rem -1.15rem 0;padding:1.15rem;display:flex;position:sticky;top:-1.15rem}.dev-settings__header h2,.dev-settings__header p{margin:0}.dev-settings__header h2{font-size:1rem;font-weight:500}.dev-settings__header p{color:#eee9df8c;font-family:var(--font-sans);margin-top:.3rem;font-size:.8rem}.dev-settings__close{aspect-ratio:1;width:2.75rem;color:inherit;font:inherit;cursor:pointer;background:#ffffff0f;border:0;border-radius:50%;flex:none;place-items:center;font-size:1.25rem;display:grid}.world-star-hover{display:none}.world-star-hover[data-visible]{display:block}.world-star-hover__halo{fill:rgb(var(--star-highlight-color,245 241 220) / calc(.2 * var(--star-highlight-intensity,1)));filter:blur(2.5px);vector-effect:non-scaling-stroke}.world-star-hover__ring{fill:rgb(var(--star-highlight-color,245 241 220) / calc(.1 * var(--star-highlight-intensity,1)));stroke:rgb(var(--star-highlight-color,245 241 220) / calc(.42 * var(--star-highlight-intensity,1)));stroke-width:.8px;vector-effect:non-scaling-stroke}.world-star-hover text{fill:#eee9dfc7;font-family:var(--font-azeret-mono);letter-spacing:.06em;paint-order:stroke;stroke:#07080ceb;stroke-width:3px;stroke-linejoin:round;vector-effect:non-scaling-stroke;font-size:13px;display:none}.world-star-hover[data-label-visible] text{display:block}.home-actions{gap:.75rem}.home-actions .port-nav__link:after{transform-origin:50%;width:auto;left:.8rem;right:.8rem}.breadcrumbs{gap:.15rem}.breadcrumbs ol,.breadcrumbs li{align-items:center;display:flex}.breadcrumbs ol{gap:.15rem}.breadcrumbs__separator,.port-nav__current{color:#eee9dfb8;letter-spacing:.15rem;align-items:center;min-height:3rem;font-size:1rem;display:inline-flex}.breadcrumbs__separator{color:#eee9df61}.port-nav__current{padding:.65rem .8rem}.port-nav--top{top:max(3.8rem, calc(env(safe-area-inset-top) + 3.2rem));justify-content:flex-start;right:auto}.port-nav__link:after{transform-origin:0;width:calc(100% - 1.6rem);right:auto}.project-index,.project-detail{text-shadow:0 1px 1rem #000000db}.project-detail:before{z-index:-1;content:"";pointer-events:none;background:radial-gradient(at 35%,#06080ce6,#06080c6b 48%,#0000 74%);position:absolute;inset:-3rem -4rem}.project-link{color:#eee9dfeb;text-shadow:0 1px 1rem #000000f5}.project-copy small{color:#e1e1dad6}.project-detail__placeholder{color:var(--project-foreground)}@supports (color:color-mix(in lab, red, red)){.project-detail__placeholder{color:color-mix(in oklab, var(--project-foreground) 76%, transparent)}}.project-detail__media{background:var(--project-atmosphere)}@supports (color:color-mix(in lab, red, red)){.project-detail__media{background:color-mix(in oklab, var(--project-atmosphere) 70%, #05060985)}}@container (width<=35rem){.project-index{inset-block-start:6.5rem}.dev-settings-button{font-size:.68rem}.dev-settings{border-radius:1.15rem 1.15rem 0 0;width:100%;height:min(85dvh,43rem);inset:auto 0 0}.time-controls__grid{grid-template-columns:minmax(0,1fr)}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}
