:root{--water-mask-image:url(/assets/scene/water-mask.svg);color:#1f1f1f;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#fff;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}@font-face{font-family:Pixel Operator;src:url(/assets/fonts/pixel-operator.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}body{margin:0}*{box-sizing:border-box}.celestial-overlay{pointer-events:none;z-index:0;position:absolute;inset:0;overflow:hidden}.celestial-image,.celestial-reflection{left:var(--celestial-left);mix-blend-mode:screen;object-fit:contain;opacity:var(--celestial-opacity);top:var(--celestial-top);-webkit-user-select:none;user-select:none;width:75px;position:absolute}.celestial-image{transform:translate(-50%, -50%) scale(var(--celestial-scale));transition:left .16s ease-out,opacity .45s,top .16s ease-out,transform .45s;animation:.18s ease-out celestial-appear}.celestial-image-sun{filter:sepia()saturate(9)hue-rotate(350deg)brightness(1.46)contrast(1.05)drop-shadow(0 0 12px #ffd64de6)drop-shadow(0 0 24px #ff4f6b85)}.celestial-image-moon{filter:sepia(.35)saturate(2.6)hue-rotate(170deg)brightness(1.68)contrast(.92)drop-shadow(0 0 14px #4df5ffb8)drop-shadow(0 0 22px #ff4fc847)}.celestial-reflection-layer{-webkit-mask-image:var(--water-mask-image);-webkit-mask-mode:alpha;-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat;-webkit-mask-image:var(--water-mask-image);mask-image:var(--water-mask-image);pointer-events:none;position:absolute;inset:0;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-source-type:alpha;mask-mode:alpha}.celestial-reflection{filter:blur(.35px);transform:translate(-50%, -50%) scale(calc(var(--celestial-scale) * 1.12), calc(var(--celestial-scale) * -.42));transition:left .16s ease-out,opacity .45s,top .16s ease-out,transform .45s}.celestial-reflection-sun{filter:sepia()saturate(6)hue-rotate(350deg)brightness(1.24)contrast(.95)blur(.45px)}.celestial-reflection-moon{filter:sepia(.25)saturate(2.2)hue-rotate(170deg)brightness(1.5)contrast(.84)blur(.35px)}@keyframes celestial-appear{0%{opacity:0;transform:translate(-50%, -50%) scale(calc(var(--celestial-scale) * .96))}}.leaves-overlay{pointer-events:none;z-index:4;position:fixed;inset:-12vh 0 0;overflow:hidden}.falling-leaf-path{animation:leaf-fall var(--leaf-duration) linear infinite, leaf-drift var(--leaf-sway-duration) ease-in-out infinite;animation-delay:var(--leaf-delay);left:var(--leaf-left);opacity:.78;transform:translate3d(0, 0, 0) scale(var(--leaf-scale));position:absolute;top:-8vh}.falling-leaf{animation:leaf-flutter var(--leaf-flutter-duration) ease-in-out infinite;transform-origin:50% 45%;background:#d97624;width:10px;height:8px;display:block;transform:rotate(-18deg);box-shadow:2px 0 #0105125c,0 2px #01051247}.falling-leaf:before,.falling-leaf:after{content:"";position:absolute}.falling-leaf:before{background:inherit;width:6px;height:6px;top:-4px;left:2px}.falling-leaf:after{background:#01051280;width:1px;height:7px;top:2px;left:5px}.falling-leaf-gold{background:#d6a73f}.falling-leaf-amber{background:#c86f2b}.falling-leaf-red{background:#a94b34}@keyframes leaf-fall{0%{opacity:0;transform:translate3d(calc(var(--leaf-wind) * -.38), -8vh, 0) scale(var(--leaf-scale))}8%{opacity:.78}45%{transform:translate3d(calc(var(--leaf-wind) * .28), 50vh, 0) scale(var(--leaf-scale))}68%{transform:translate3d(calc(var(--leaf-wind) * -.12), 82vh, 0) scale(var(--leaf-scale))}88%{opacity:.78}to{opacity:0;transform:translate3d(calc(var(--leaf-wind) * .72), 132vh, 0) scale(var(--leaf-scale))}}@keyframes leaf-drift{0%,to{margin-left:calc(var(--leaf-sway) * -.5)}50%{margin-left:calc(var(--leaf-sway) * .5)}}@keyframes leaf-flutter{0%,to{transform:translate(-2px)rotate(-20deg)scaleX(1)}35%{transform:translate(3px)rotate(42deg)scaleX(.82)}70%{transform:translate(-1px)rotate(118deg)scaleX(1)}}@media (prefers-reduced-motion:reduce){.falling-leaf-path,.falling-leaf{opacity:0;animation:none}}.scene-controls{color:#eaffff;z-index:5;text-shadow:0 0 8px #22f6ff61,0 1px 8px #0000006b;background-color:#00000047;border-radius:4px;gap:.75rem;width:min(48rem,100vw - 2rem);padding:.85rem;font-family:Pixel Operator,Courier New,Courier,monospace;display:grid;position:fixed;bottom:1rem;left:auto;right:1rem}@media (width<=56rem){.scene-controls{left:1rem;right:auto}}.time-slider-text{text-align:right;text-shadow:0 1px 8px #00000047;white-space:nowrap;justify-content:flex-end;align-items:center;gap:.35rem;min-height:2.2rem;font-size:clamp(.95rem,1.6vw,1.2rem);line-height:1;display:flex}.control-field{gap:.32rem;display:grid}.scene-control-text-button,.date-toggle-button,.date-nav-button{appearance:none;color:inherit;cursor:pointer;font:inherit;background:0 0;border:0;padding:0;line-height:1}.scene-control-text-button:disabled{cursor:default}.live-button{color:color-mix(in srgb, var(--building-outline-color) 82%, white 18%);text-shadow:0 0 8px color-mix(in srgb, var(--building-outline-color) 62%, transparent), 0 1px 8px #00000075;font-weight:700}.live-button:not(:disabled):hover{color:color-mix(in srgb, var(--building-outline-color) 80%, white 20%)}.scene-control-text-button:not(.live-button):not(:disabled):hover,.date-toggle-button:hover,.date-nav-button:hover{color:#ffffffc7}.scene-control-text-button:focus-visible,.date-toggle-button:focus-visible,.date-nav-button:focus-visible{outline-offset:4px;outline:2px solid #ffffffc7}.scene-control-separator{color:#ffffffd1;margin:0 .32em}.date-nav-button{margin:0 .14em;font-size:.8em}.date-toggle-button,.time-display{white-space:nowrap}.time-slider{appearance:none;background:linear-gradient(90deg, color-mix(in srgb, var(--building-outline-color) 62%, #fff 12%), #ff4fc8);box-shadow:0 0 8px color-mix(in srgb, var(--building-outline-color) 42%, transparent), inset 0 0 4px #ffffff6b;cursor:pointer;border-radius:999px;width:100%;height:7px;margin:0}.time-slider::-webkit-slider-thumb{appearance:none;border:1px solid color-mix(in srgb, var(--building-outline-color) 72%, #fff);box-shadow:0 0 8px var(--building-outline-color), 0 0 14px #ff4fc8b8;cursor:pointer;background:#f8ffff;border-radius:50%;width:12px;height:12px}.time-slider::-moz-range-thumb{border:1px solid color-mix(in srgb, var(--building-outline-color) 72%, #fff);box-shadow:0 0 8px var(--building-outline-color), 0 0 14px #ff4fc8b8;cursor:pointer;background:#f8ffff;border-radius:50%;width:1.7rem;height:1.7rem}.time-slider:disabled{cursor:default}.time-slider:disabled::-webkit-slider-thumb{cursor:default}.time-slider:disabled::-moz-range-thumb{cursor:default}@media (width<=48rem),(height<=36rem) and (hover:none) and (pointer:coarse){.scene-controls{bottom:max(.5rem, env(safe-area-inset-bottom));left:max(.5rem, env(safe-area-inset-left));right:max(.5rem, env(safe-area-inset-right));gap:.55rem;width:auto;padding:.65rem .7rem}.time-slider-text{white-space:normal;flex-wrap:wrap;justify-content:center;gap:.15rem .18rem;min-height:2.75rem;font-size:.95rem}.scene-control-text-button,.date-toggle-button,.date-nav-button,.time-display{min-height:1.25rem}.date-toggle-button,.time-display{white-space:nowrap}.date-nav-button{min-width:1.25rem;margin:0;font-size:1em}.scene-control-separator{margin:0 .08em}.time-slider{height:9px}.time-slider::-webkit-slider-thumb{width:1.5rem;height:1.5rem}}.skyline-map{touch-action:none;justify-content:center;align-items:center;width:100vw;height:100svh;display:flex;overflow:hidden}.skyline-frame{--parallax-x:0px;--parallax-y:0px;--parallax-origin-x:50%;--parallax-origin-y:50%;--scene-zoom:1.01;aspect-ratio:3172/1344;will-change:transform;width:max(100vw,236.012svh);height:max(100svh,42.3707vw);transition:transform 80ms ease-out,transform-origin 80ms ease-out;position:relative}.skyline-image,.cloud-layer,.skyline-image-lighting,.skyline-lighting,.water-ripple-canvas,.building-map,.building-callout-text-layer{width:100%;height:100%;display:block;position:absolute;inset:0}.skyline-image{filter:saturate(1.55)contrast(1.12)brightness(1.08);object-fit:contain;-webkit-user-select:none;user-select:none;z-index:1}.skyline-image-lighting{background:radial-gradient(circle at 50% 34%, color-mix(in srgb, var(--scene-lighting-color) 44%, transparent) 0 18%, transparent 42%), linear-gradient(to bottom, color-mix(in srgb, var(--sky-color) 46%, var(--scene-lighting-color)) 0%, color-mix(in srgb, var(--sky-color) 42%, transparent) calc(var(--waterline) - 18%), color-mix(in srgb, var(--building-outline-color) 22%, transparent) calc(var(--waterline) - 4%), color-mix(in srgb, var(--water-color) 54%, var(--scene-lighting-color)) calc(var(--waterline) + 7%), color-mix(in srgb, var(--water-color) 64%, #02030d) 100%);mix-blend-mode:soft-light;opacity:calc(.32 + var(--scene-lighting-opacity) * 1.25);pointer-events:none;z-index:1;transition:background-color .6s,opacity .6s}.skyline-image-lighting:after{background:linear-gradient(90deg, transparent 0 16%, color-mix(in srgb, var(--building-outline-color) 18%, transparent) 38%, #ff4fc824 55%, color-mix(in srgb, var(--building-outline-color) 16%, transparent) 70%, transparent 88% 100%), linear-gradient(to bottom, transparent 0 calc(var(--waterline) - 8%), color-mix(in srgb, var(--building-outline-color) 20%, transparent) var(--waterline), transparent calc(var(--waterline) + 20%));content:"";mix-blend-mode:screen;opacity:calc(.26 + var(--scene-lighting-opacity) * .9);position:absolute;inset:0}.cloud-layer{pointer-events:none;z-index:1;overflow:hidden}.skyline-cloud{animation:cloud-cross var(--cloud-travel-duration) linear infinite;filter:saturate(1.35)contrast(1.08)drop-shadow(0 0 8px #22f6ff29);image-rendering:auto;height:auto;left:var(--cloud-start-left);opacity:var(--cloud-opacity);top:var(--cloud-top);-webkit-user-select:none;user-select:none;width:var(--cloud-width);position:absolute;transform:translateY(-50%)}.cloud-reflection-layer{-webkit-mask-image:var(--water-mask-image);-webkit-mask-mode:alpha;-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat;-webkit-mask-image:var(--water-mask-image);mask-image:var(--water-mask-image);pointer-events:none;position:absolute;inset:0;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-source-type:alpha;mask-mode:alpha}.skyline-cloud-reflection{filter:saturate(1.55)contrast(1.08)blur(.45px);mix-blend-mode:screen;opacity:var(--cloud-reflection-opacity);top:var(--cloud-reflection-top);animation-name:cloud-reflection-cross}.skyline-lighting{background:var(--scene-lighting-color);mix-blend-mode:color-burn;opacity:var(--scene-lighting-opacity);pointer-events:none;z-index:2;transition:background-color .6s,opacity .6s}.water-ripple-canvas{-webkit-mask-image:var(--water-mask-image);-webkit-mask-mode:alpha;-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat;-webkit-mask-image:var(--water-mask-image);mask-image:var(--water-mask-image);image-rendering:pixelated;mix-blend-mode:screen;opacity:.92;pointer-events:none;z-index:3;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-source-type:alpha;mask-mode:alpha}.building-map{z-index:4;overflow:visible}.building-callout-text-layer{pointer-events:none;z-index:5;overflow:visible}.building-hit-link{cursor:pointer;outline:none}.building-hit-area,.building-outline{fill:#0000;stroke-linejoin:round;vector-effect:non-scaling-stroke}.building-hit-area{pointer-events:all;stroke:#0000;stroke-width:12px}.building-outline{pointer-events:none;transition:fill .14s,stroke-opacity .14s,stroke-width .14s}.building-outline-backdrop{stroke:#010512f5;stroke-width:4.4px}.building-outline-accent{filter:drop-shadow(0 0 2px #000000e6) drop-shadow(0 0 5px var(--building-outline-color)) drop-shadow(0 0 13px color-mix(in srgb, var(--building-outline-color) 74%, #ff4fc8));stroke:var(--building-outline-color);stroke-opacity:1;stroke-width:1.9px}.building-hit-link:hover .building-outline-backdrop,.building-hit-link:focus-visible .building-outline-backdrop{stroke-width:5.4px}.building-hit-link:hover .building-outline-accent,.building-hit-link:focus-visible .building-outline-accent{fill:color-mix(in srgb, var(--building-outline-color) 22%, transparent);stroke-opacity:1;stroke-width:2.9px}.building-callout{color:var(--building-outline-color);opacity:0;pointer-events:none;transition:opacity 0s linear .56s}.building-callout-layer{pointer-events:none}.building-callout-line{fill:none;filter:drop-shadow(0 0 6px color-mix(in srgb, currentColor 44%, transparent));stroke:currentColor;stroke-dasharray:1;stroke-dashoffset:1px;stroke-linecap:square;stroke-width:2.2px;vector-effect:non-scaling-stroke;transition:stroke-dashoffset .24s cubic-bezier(.55,0,.7,.3) 70ms}.building-callout-label{color:#f8ffff;opacity:0;text-shadow:1px 1px #010512f5,2px 2px #010512b8;white-space:nowrap;align-items:center;min-height:1.75rem;padding:.26rem .58rem;font-family:Pixel Operator,PixelOperator,Pixel Operator Mono,Courier New,Courier,monospace;font-size:24px;font-weight:700;line-height:1;transition:opacity 0s linear .52s;display:flex;position:absolute;transform:translateY(-50%)}.building-callout-label:before{background:color-mix(in srgb, var(--building-outline-color) 30%, transparent);border:2px solid color-mix(in srgb, var(--building-outline-color) 74%, #fff);box-shadow:0 0 12px color-mix(in srgb, var(--building-outline-color) 90%, transparent), inset 0 0 12px color-mix(in srgb, var(--building-outline-color) 16%, transparent);content:"";border-radius:3px;transition:transform .21s cubic-bezier(.55,0,.7,.3) 70ms;position:absolute;inset:0;transform:scaleX(0)}.building-callout-label-left{transform:translate(-100%,-50%)}.building-callout-label-right:before{transform-origin:0}.building-callout-label-left:before{transform-origin:100%}.building-callout-label-text{opacity:0;transition:opacity 90ms;position:relative}.building-callout-active{opacity:1;transition-delay:0s}.building-callout-active .building-callout-line{stroke-dashoffset:0;transition-duration:.24s;transition-delay:0s;transition-timing-function:cubic-bezier(.16,1,.3,1)}.building-callout-label-active{opacity:1;transition-delay:0s}.building-callout-label-active:before{transition-duration:.23s;transition-delay:.185s;transition-timing-function:cubic-bezier(.16,1,.3,1);transform:scaleX(1)}.building-callout-label-active .building-callout-label-text{opacity:1;transition-duration:.22s;transition-delay:.26s}@media (prefers-reduced-motion:reduce){.building-callout,.building-callout-line,.building-callout-label,.building-callout-label:before,.building-callout-label-text{transition:none}.building-callout-active .building-callout-line{stroke-dashoffset:0}.building-callout-label-active:before{opacity:1;transform:scaleX(1)}}@keyframes cloud-cross{0%{left:var(--cloud-start-left);transform:translateY(-50%)}24%{transform:translateY(calc(-50% - var(--cloud-bob-offset)))}50%{transform:translateY(-50%)}76%{transform:translateY(calc(-50% + var(--cloud-bob-offset)))}to{left:var(--cloud-end-left);transform:translateY(-50%)}}@keyframes cloud-reflection-cross{0%{left:var(--cloud-start-left);transform:translateY(-50%)scaleY(-.3)}24%{transform:translateY(calc(-50% + var(--cloud-reflection-bob-offset))) scale(1, -.3)}50%{transform:translateY(-50%)scaleY(-.3)}76%{transform:translateY(calc(-50% - var(--cloud-reflection-bob-offset))) scale(1, -.3)}to{left:var(--cloud-end-left);transform:translateY(-50%)scaleY(-.3)}}@media (width<=48rem),(height<=36rem) and (hover:none) and (pointer:coarse){.skyline-map{overscroll-behavior-x:contain;scrollbar-width:none;touch-action:pan-x;-webkit-overflow-scrolling:touch;justify-content:flex-start;align-items:center;overflow:auto hidden}.skyline-map::-webkit-scrollbar{display:none}.skyline-frame{flex:none}.building-hit-area{stroke-width:28px}.building-callout-label{font-size:28px}}.stars-overlay,.stars-reflection{mix-blend-mode:screen;pointer-events:none;z-index:1;background-image:radial-gradient(circle,#ffffffe6 0 1px,#0000 1.5px),radial-gradient(circle,#4df5ffc7 0 1px,#0000 1.5px),radial-gradient(circle,#ffd65cbd 0 1px,#0000 1.5px);background-position:7% 18%,31% 10%,61% 23%;background-size:13rem 9rem,18rem 12rem,23rem 15rem;height:100%;transition:opacity .7s;position:absolute;inset:0}.stars-overlay{-webkit-mask-image:linear-gradient(to bottom, #000 0%, #000 calc(var(--waterline,76%) - 28%), transparent calc(var(--waterline,76%) - 7%));-webkit-mask-image:linear-gradient(to bottom, #000 0%, #000 calc(var(--waterline,76%) - 28%), transparent calc(var(--waterline,76%) - 7%));mask-image:linear-gradient(to bottom, #000 0%, #000 calc(var(--waterline,76%) - 28%), transparent calc(var(--waterline,76%) - 7%));opacity:calc(var(--stars-opacity) * 1)}.stars-reflection{-webkit-mask-image:var(--water-mask-image);-webkit-mask-mode:alpha;filter:blur(.2px);-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat;-webkit-mask-image:var(--water-mask-image);mask-image:var(--water-mask-image);opacity:calc(var(--stars-opacity) * .34);background-position:7% 82%,31% 90%,61% 77%;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-source-type:alpha;mask-mode:alpha}.stars-overlay:before,.stars-reflection:before{content:"";pointer-events:none;background-image:radial-gradient(circle,#ffffffd1 0 1px,#0000 1.5px),radial-gradient(circle,#ff4fc8b8 0 1px,#0000 1.5px);background-position:18% 30%,76% 15%;background-size:16rem 11rem,21rem 14rem;animation:4.8s ease-in-out infinite alternate stars-twinkle;position:absolute;inset:0}.stars-reflection:before{opacity:.66;background-position:18% 70%,76% 85%}@keyframes stars-twinkle{0%{opacity:.46}to{opacity:.88}}.weather-overlay{pointer-events:none;z-index:3;position:fixed;inset:0}.weather-overlay-rain,.weather-overlay-thunder,.weather-overlay-snow{overflow:hidden}.weather-rainfall-plane{transform:rotate(var(--rain-angle));transform-origin:50%;position:absolute;inset:-24vh -18vw}.weather-rainfall-plane>div{width:100%;height:100%}.weather-rainfall-plane *{animation-duration:var(--rain-speed)!important;-moz-animation-duration:var(--rain-speed)!important;-webkit-animation-duration:var(--rain-speed)!important}.weather-overlay-fog{mix-blend-mode:screen;background:linear-gradient(#0000 0 22%,#3feeff29 48%,#0000 72%),linear-gradient(90deg,#0000,#ff4fc824,#3feeff33,#0000)}.weather-lightning{animation:lightning-flash var(--thunder-cycle,7.5s) linear infinite;mix-blend-mode:screen;opacity:0;pointer-events:none;background:#bff9fff5;position:absolute;inset:0}.weather-overlay-thunder:after{animation:storm-dim var(--thunder-cycle,7.5s) linear infinite;content:"";pointer-events:none;background:#02081833;position:absolute;inset:0}@keyframes rain-fall{0%{background-position:0 0}to{background-position:-32px 120px}}@keyframes snow-fall{0%{background-position:0 -100px,36px -48px}to{background-position:0 100vh,36px calc(100vh + 48px)}}@keyframes lightning-flash{0%,70%,73%,76%,to{opacity:0}71%{opacity:.95}72%{opacity:.18}74%{opacity:.72}75%{opacity:.08}}@keyframes storm-dim{0%,68%,72%,76%,to{opacity:1}71%,74%{opacity:0}}.building-panel{color:#eaffff;pointer-events:auto;z-index:6;position:fixed;inset:0;overflow:hidden}.building-panel:before{-webkit-backdrop-filter:blur();backdrop-filter:blur();content:"";background:#01051200;animation:.52s forwards building-panel-backdrop-in;position:absolute;inset:0}.building-panel-section{position:absolute;inset:0}.building-panel-image{height:max(100svh,42.3707vw);image-rendering:pixelated;pointer-events:none;width:max(100vw,236.012svh);max-width:none;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(1.01)}.building-panel-image-hit,.building-panel-image-outline{pointer-events:none}.building-panel-outline{fill:#0000;pointer-events:none;stroke-linejoin:round;vector-effect:non-scaling-stroke}.building-panel-outline-backdrop{stroke:#010512f5;stroke-width:4.4px}.building-panel-outline-accent{filter:drop-shadow(0 0 2px #000000e6) drop-shadow(0 0 5px var(--building-outline-color)) drop-shadow(0 0 13px color-mix(in srgb, var(--building-outline-color) 74%, #ff4fc8));stroke:var(--building-outline-color);stroke-width:1.9px}.building-panel-image-hit-area{fill:#0000;pointer-events:all;stroke:#0000;stroke-width:28px;vector-effect:non-scaling-stroke}.building-panel-section-about .building-panel-image{transform-origin:42.4%;animation:.68s cubic-bezier(.16,1,.3,1) forwards building-panel-image-about-in}.building-panel-section-projects .building-panel-image{transform-origin:43% 82%;animation:.68s cubic-bezier(.16,1,.3,1) forwards building-panel-image-projects-in}.building-panel-section-skills .building-panel-image{transform-origin:7% 70%;animation:.68s cubic-bezier(.16,1,.3,1) forwards building-panel-image-skills-in}.building-panel-section-experience .building-panel-image{transform-origin:55% 69%;animation:.68s cubic-bezier(.16,1,.3,1) forwards building-panel-image-experience-in}.building-panel-section-contact .building-panel-image{transform-origin:63% 70%;animation:.68s cubic-bezier(.16,1,.3,1) forwards building-panel-image-contact-in}.building-panel-card{background:linear-gradient(135deg, color-mix(in srgb, var(--building-outline-color) 12%, #050212eb), #080318c7);border:3px solid color-mix(in srgb, var(--building-outline-color) 76%, #fff);box-shadow:0 0 18px color-mix(in srgb, var(--building-outline-color) 30%, transparent), inset 0 0 18px color-mix(in srgb, var(--building-outline-color) 10%, transparent);clip-path:polygon(0 10px,10px 10px,10px 0,calc(100% - 16px) 0,calc(100% - 16px) 8px,100% 8px,100% calc(100% - 20px),calc(100% - 8px) calc(100% - 20px),calc(100% - 8px) 100%,14px 100%,14px calc(100% - 8px),0 calc(100% - 8px));opacity:0;pointer-events:auto;z-index:1;width:min(42rem,48vw);min-height:18rem;padding:2rem 2.25rem;animation:.68s cubic-bezier(.16,1,.3,1) 80ms forwards building-panel-card-in;position:absolute;transform:translate(9vw,4vh)scale(.92)}.building-panel-card-close-button{border:1.5px solid color-mix(in srgb, var(--building-outline-color) 76%, #fff);color:color-mix(in srgb, var(--building-outline-color) 72%, #fff);cursor:pointer;pointer-events:auto;z-index:1;background:0 0;border-radius:10px;width:44px;height:44px;transition:background .16s,transform .12s;position:absolute;top:1rem;right:1rem}.building-panel-card-close-button:before,.building-panel-card-close-button:after{content:"";background:currentColor;border-radius:2px;width:16px;height:2px;position:absolute;top:50%;left:50%}.building-panel-card-close-button:before{transform:translate(-50%,-50%)rotate(45deg)}.building-panel-card-close-button:after{transform:translate(-50%,-50%)rotate(-45deg)}.building-panel-card-close-button:hover{background:color-mix(in srgb, currentColor 12%, transparent)}.building-panel-card-close-button:focus-visible{outline:3px solid color-mix(in srgb, var(--building-outline-color) 72%, #fff);outline-offset:2px;box-shadow:0 0 0 6px #010512f2, 0 0 0 9px color-mix(in srgb, var(--building-outline-color) 72%, #fff)}.building-panel-card-close-button:active{transform:scale(.95)}.building-panel-cat-button{cursor:pointer;pointer-events:auto;z-index:1;background:0 0;border:0;justify-content:center;align-items:center;width:clamp(4.7rem,7vw,6.2rem);height:clamp(4.7rem,7vw,6.2rem);padding:0;transition:transform .16s,filter .16s;display:flex;position:absolute;top:4.15rem;right:1.35rem}.building-panel-cat-button img{height:100%;image-rendering:pixelated;object-fit:contain;width:100%;display:block}.building-panel-cat-button:hover{filter:drop-shadow(0 0 8px color-mix(in srgb, var(--building-outline-color) 42%, transparent));transform:translateY(-2px)}.building-panel-cat-button:focus-visible{outline:2px solid color-mix(in srgb, var(--building-outline-color) 76%, #fff);outline-offset:4px}.building-panel-section-about .building-panel-card{top:12vh;right:9vw}.building-panel-section-projects .building-panel-card,.building-panel-section-experience .building-panel-card,.building-panel-section-contact .building-panel-card{top:11vh;right:8vw}.building-panel-section-projects .building-panel-card{scrollbar-color:color-mix(in srgb, var(--building-outline-color) 76%, #fff) #0105128f;scrollbar-width:thin;width:min(52rem,48vw);max-height:calc(100svh - 8rem);right:5vw;overflow:auto}.building-panel-section-projects .building-panel-card::-webkit-scrollbar{width:12px}.building-panel-section-projects .building-panel-card::-webkit-scrollbar-track{border-left:1px solid color-mix(in srgb, var(--building-outline-color) 24%, #fff);background:#0105128f}.building-panel-section-projects .building-panel-card::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--building-outline-color) 76%, #fff);border:3px solid #010512db}.building-panel-section-projects .building-panel-card::-webkit-scrollbar-corner{background:#0105128f}.building-panel-section-skills .building-panel-card{top:14vh;right:10vw}.building-panel-card h2{color:#f8d7ff;text-shadow:2px 2px 0 #010512e6, 0 0 14px color-mix(in srgb, var(--building-outline-color) 36%, transparent);text-transform:lowercase;margin:0;font-family:Pixel Operator,Courier New,Courier,monospace;font-size:clamp(2.6rem,5vw,4.6rem);line-height:.85}.building-panel-kicker{color:color-mix(in srgb, var(--building-outline-color) 68%, #fff);margin:0 0 .55rem;font-family:Pixel Operator,Courier New,Courier,monospace;font-size:1.55rem}.building-panel-body{border-top:1px solid color-mix(in srgb, var(--building-outline-color) 42%, transparent);color:#f3fbff;text-shadow:2px 2px #010512c7;margin:1.6rem 0 0;padding-top:1.35rem;font-family:Pixel Operator,Courier New,Courier,monospace;font-size:1.2rem;line-height:1.28}.building-panel-body p{margin:0}.building-panel-body p+p{margin-top:1rem}.building-panel-education{background:color-mix(in srgb, var(--building-outline-color) 8%, #0d1223b8);border:1px solid color-mix(in srgb, var(--building-outline-color) 26%, #fff);color:#f3fbff;margin-top:1.25rem;padding:1rem 1.15rem;font-family:Pixel Operator,Courier New,Courier,monospace}.building-panel-education-heading{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.building-panel-education-heading h3{color:#f3fbff;margin:0;font-size:1.16rem;line-height:1}.building-panel-education-heading span{color:color-mix(in srgb, #f3fbff 62%, var(--building-outline-color));white-space:nowrap;font-size:.95rem}.building-panel-education-school{color:var(--building-outline-color);margin:.7rem 0 1rem}.building-panel-education p{text-shadow:2px 2px #010512c7;margin:0;font-size:1.05rem;line-height:1.2}.building-panel-projects{border-top:1px solid color-mix(in srgb, var(--building-outline-color) 42%, transparent);gap:1rem;margin-top:1.6rem;padding-top:1.35rem;display:grid}.building-panel-project{background:color-mix(in srgb, var(--building-outline-color) 8%, #0d1223b8);border:1px solid color-mix(in srgb, var(--building-outline-color) 26%, #fff);color:#f3fbff;padding:1rem 1.15rem;font-family:Pixel Operator,Courier New,Courier,monospace}.building-panel-project-heading{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.building-panel-project-heading h3{color:color-mix(in srgb, var(--building-outline-color) 82%, #fff);text-transform:uppercase;margin:0;font-size:1.32rem;line-height:1}.building-panel-project-heading span{color:color-mix(in srgb, #f3fbff 68%, var(--building-outline-color));text-align:right;font-size:.95rem}.building-panel-project p{text-shadow:2px 2px #010512c7;margin:.8rem 0 0;font-size:1.05rem;line-height:1.2}.building-panel-project-frame{aspect-ratio:16/9;border:1px solid color-mix(in srgb, var(--building-outline-color) 42%, #fff);background:#010512b8;width:100%;margin-top:.9rem;display:block}.building-panel-project ul{flex-wrap:wrap;gap:.45rem;margin:.9rem 0 0;padding:0;list-style:none;display:flex}.building-panel-project li{background:color-mix(in srgb, var(--building-outline-color) 14%, #010512b8);border:1px solid color-mix(in srgb, var(--building-outline-color) 48%, #fff);color:#f3fbff;text-shadow:2px 2px #010512c7;padding:.32rem .5rem;font-size:1rem;line-height:1}.building-panel-project-link{border:1px solid color-mix(in srgb, var(--building-outline-color) 54%, #fff);color:var(--building-outline-color);text-shadow:2px 2px #010512c7;align-items:center;gap:.45rem;margin-top:.9rem;padding:.48rem .62rem;font-size:1.05rem;text-decoration:none;transition:background .17s,border-color .17s;display:inline-flex}.building-panel-project-link-icon{height:1rem;-webkit-mask:var(--contact-icon) center / contain no-repeat;-webkit-mask:var(--contact-icon) center / contain no-repeat;mask:var(--contact-icon) center / contain no-repeat;background:currentColor;flex:none;width:1rem}.building-panel-project-link:hover,.building-panel-project-link:focus-visible{background:color-mix(in srgb, var(--building-outline-color) 14%, #0105126b);border-color:color-mix(in srgb, var(--building-outline-color) 78%, #fff);text-decoration:underline}.building-panel-skills{border-top:1px solid color-mix(in srgb, var(--building-outline-color) 42%, transparent);gap:1.15rem;margin-top:1.6rem;padding-top:1.35rem;display:grid}.building-panel-skill-group h3{color:color-mix(in srgb, var(--building-outline-color) 82%, #fff);letter-spacing:0;text-transform:uppercase;margin:0 0 .65rem;font-family:Pixel Operator,Courier New,Courier,monospace;font-size:1.35rem}.building-panel-skill-group ul{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.building-panel-skill-group li{background:color-mix(in srgb, var(--building-outline-color) 16%, #010512b8);border:1px solid color-mix(in srgb, var(--building-outline-color) 58%, #fff);color:#f3fbff;text-shadow:2px 2px #010512c7;padding:.38rem .58rem;font-family:Pixel Operator,Courier New,Courier,monospace;font-size:1.15rem;line-height:1}.building-panel-experience{border-top:1px solid color-mix(in srgb, var(--building-outline-color) 42%, transparent);margin-top:1.6rem;padding-top:1.35rem}.building-panel-experience-item{font-family:Pixel Operator,Courier New,Courier,monospace}.building-panel-experience-item+.building-panel-experience-item{margin-top:1.5rem}.building-panel-experience-heading{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.building-panel-experience-heading h3{color:color-mix(in srgb, var(--building-outline-color) 82%, #fff);text-transform:uppercase;margin:0;font-size:1.45rem;line-height:1}.building-panel-experience-heading span,.building-panel-experience-meta{color:color-mix(in srgb, #f3fbff 76%, var(--building-outline-color));font-size:1.05rem}.building-panel-experience-meta{margin:.42rem 0 .9rem}.building-panel-experience-item ul{gap:.65rem;margin:0;padding:0;list-style:none;display:grid}.building-panel-experience-item li{color:#f3fbff;text-shadow:2px 2px #010512c7;padding-left:1rem;font-size:1.08rem;line-height:1.2;position:relative}.building-panel-experience-item li:before{color:var(--building-outline-color);content:">";position:absolute;left:0}.building-panel-contact-links{border-top:1px solid color-mix(in srgb, var(--building-outline-color) 42%, transparent);flex-wrap:wrap;gap:.6rem;margin-top:1.6rem;padding-top:1.35rem;display:flex}.building-panel-contact-link{border:1px solid color-mix(in srgb, var(--building-outline-color) 42%, #fff);color:#f3fbff;text-shadow:2px 2px #010512c7;background:#0105123d;align-items:center;gap:.55rem;padding:.72rem .85rem;font-family:Pixel Operator,Courier New,Courier,monospace;font-size:1.2rem;line-height:1;text-decoration:none;transition:background .17s,border-color .17s,color .17s;display:inline-flex}.building-panel-contact-link-icon,.building-panel-contact-link svg{flex:none;width:1.1rem;height:1.1rem}.building-panel-contact-link-icon{-webkit-mask:var(--contact-icon) center / contain no-repeat;-webkit-mask:var(--contact-icon) center / contain no-repeat;mask:var(--contact-icon) center / contain no-repeat;background:currentColor}.building-panel-contact-link svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px}.building-panel-contact-link:hover{background:color-mix(in srgb, var(--building-outline-color) 16%, #0105126b);border-color:color-mix(in srgb, var(--building-outline-color) 76%, #fff);color:var(--building-outline-color)}.building-panel-contact-link:focus-visible{outline:2px solid color-mix(in srgb, var(--building-outline-color) 76%, #fff);outline-offset:3px}@keyframes building-panel-backdrop-in{to{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#0105124d}}@keyframes building-panel-image-about-in{to{transform:translate(calc(-50% - 25vw),calc(4vh - 50%))scale(2.05)}}@keyframes building-panel-image-projects-in{to{transform:translate(calc(-50% - 13vw),calc(-50% - 3vh))scale(2.45)}}@keyframes building-panel-image-skills-in{to{transform:translate(calc(-50% - 27vw),calc(-50% - 2vh))scale(2.6)}}@keyframes building-panel-image-experience-in{to{transform:translate(calc(-50% - 18vw),calc(-50% - 8vh))scale(3)}}@keyframes building-panel-image-contact-in{to{transform:translate(calc(-50% - 28vw),calc(-50% - 6vh))scale(3.2)}}@keyframes building-panel-card-in{to{opacity:1;transform:translate(0)scale(1)}}@media (prefers-reduced-motion:reduce){.building-panel:before,.building-panel-image,.building-panel-card{animation-duration:1ms}.building-panel-card-close-button{transition:none}}@media (forced-colors:active){.building-panel-card-close-button{color:buttontext;border-color:buttontext}.building-panel-card-close-button:before,.building-panel-card-close-button:after{background:buttontext}}@media (width<=48rem),(height<=36rem) and (hover:none) and (pointer:coarse){.building-panel{overflow:hidden}.building-panel:before{background:#01051280}.building-panel-image{opacity:.3;animation:none!important;transform:translate(-50%,-50%)scale(1.01)!important}.building-panel-card,.building-panel-section-about .building-panel-card,.building-panel-section-projects .building-panel-card,.building-panel-section-skills .building-panel-card,.building-panel-section-experience .building-panel-card,.building-panel-section-contact .building-panel-card{bottom:max(.75rem, env(safe-area-inset-bottom));left:max(.75rem, env(safe-area-inset-left));min-height:0;max-height:none;right:max(.75rem, env(safe-area-inset-right));scrollbar-color:color-mix(in srgb, var(--building-outline-color) 76%, #fff) #0105128f;scrollbar-width:thin;top:max(.75rem, env(safe-area-inset-top));width:auto;padding:1.25rem;overflow:hidden auto}.building-panel-card-close-button{width:44px;height:44px;top:.75rem;right:.75rem}.building-panel-card h2{max-width:calc(100% - 3.5rem);font-size:clamp(2.35rem,13vw,3.4rem)}.building-panel-kicker{max-width:calc(100% - 3.5rem);font-size:1.15rem}.building-panel-body{margin-top:1.15rem;padding-top:1rem;font-size:1.05rem;line-height:1.35}.building-panel-cat-button{width:3.75rem;height:3.75rem;top:4rem;right:.75rem}.building-panel-education{padding:.85rem}.building-panel-education-heading,.building-panel-project-heading,.building-panel-experience-heading{flex-direction:column;align-items:flex-start;gap:.35rem}.building-panel-education-heading span,.building-panel-project-heading span,.building-panel-experience-heading span{text-align:left;white-space:normal}.building-panel-projects,.building-panel-skills,.building-panel-experience,.building-panel-contact-links{margin-top:1.15rem;padding-top:1rem}.building-panel-project{padding:.85rem}.building-panel-project li,.building-panel-skill-group li{font-size:1rem}.building-panel-experience-item li{font-size:1rem;line-height:1.3}.building-panel-contact-link{flex:calc(50% - .3rem);justify-content:center;min-height:2.75rem;padding:.65rem;font-size:1.05rem}}.identity-panel{--identity-corner-cut:10px;border:2px solid color-mix(in srgb, var(--building-outline-color) 76%, #fff);clip-path:polygon(var(--identity-corner-cut) 0, calc(100% - var(--identity-corner-cut)) 0, 100% var(--identity-corner-cut), 100% calc(100% - var(--identity-corner-cut)), calc(100% - var(--identity-corner-cut)) 100%, var(--identity-corner-cut) 100%, 0 calc(100% - var(--identity-corner-cut)), 0 var(--identity-corner-cut));color:#f7ffff;left:max(2rem, env(safe-area-inset-left));top:max(2rem, env(safe-area-inset-top));z-index:6;background-color:#00000047;width:min(30rem,100vw - 8rem);padding:1rem 1.15rem;font-family:Pixel Operator,Courier New,Courier,monospace;position:fixed}.identity-panel__content{grid-template-columns:auto 1fr;align-items:center;gap:.9rem;display:grid;position:relative}.identity-panel__avatar{background:color-mix(in srgb, var(--building-outline-color) 20%, #020d20f2);border:2px solid color-mix(in srgb, var(--building-outline-color) 82%, #fff);box-shadow:0 0 14px color-mix(in srgb, var(--building-outline-color) 28%, transparent), inset 0 0 10px color-mix(in srgb, var(--building-outline-color) 16%, transparent);color:var(--building-outline-color);text-shadow:0 0 8px;place-items:center;width:3.6rem;height:3.6rem;font-size:1.2rem;display:grid}.identity-panel__name{color:#fff;letter-spacing:.025em;text-shadow:3px 3px #22f6ff38,0 0 16px #22f6ff33;text-transform:uppercase;margin:0;font-size:clamp(1.9rem,3.6vw,3.15rem);font-weight:700;line-height:.92}.identity-panel__role,.identity-panel__university,.identity-panel__bio{margin:0}.identity-panel__role{color:var(--building-outline-color);letter-spacing:.04em;margin-top:.85rem;font-size:clamp(1.1rem,1.8vw,1.4rem)}.identity-panel__university{color:#b7deee;letter-spacing:.03em;margin-top:.4rem;font-size:clamp(.95rem,1.5vw,1.15rem)}.identity-panel__bio{color:#e2f3f7;max-width:34ch;margin-top:.75rem;font-size:clamp(.9rem,1.3vw,1.05rem);line-height:1.35}@media (width<=48rem){.identity-panel{--identity-corner-cut:9px;left:max(.5rem, env(safe-area-inset-left));top:max(.5rem, env(safe-area-inset-top));width:min(25rem, calc(100vw - 4.75rem - env(safe-area-inset-left) - env(safe-area-inset-right)));padding:.75rem .85rem .9rem}.identity-panel__content{gap:.7rem}.identity-panel__avatar{width:3rem;height:3rem;font-size:1rem}.identity-panel__name{font-size:clamp(1.45rem,7.3vw,2.15rem)}.identity-panel__role{margin-top:.5rem;font-size:.94rem}.identity-panel__university{margin-top:.2rem;font-size:.82rem}.identity-panel__bio{margin-top:.5rem;font-size:.78rem}}@media (height<=36rem) and (hover:none) and (pointer:coarse){.identity-panel{left:max(.5rem, env(safe-area-inset-left));top:max(.5rem, env(safe-area-inset-top));width:min(22rem,100vw - 4.75rem);padding:.7rem .9rem .8rem}.identity-panel__avatar{width:2.8rem;height:2.8rem}.identity-panel__name{font-size:1.7rem}.identity-panel__role{margin-top:.35rem;font-size:.9rem}.identity-panel__university{font-size:.78rem}.identity-panel__bio{font-size:.74rem;line-height:1.25}}.mute-button{appearance:none;bottom:max(1rem, env(safe-area-inset-bottom));box-sizing:border-box;color:#11120e;cursor:pointer;height:52px;left:max(1rem, env(safe-area-inset-left));z-index:8;background:#7c835d;border:2px solid #11130e;border-radius:0;width:52px;padding:5px;position:fixed;box-shadow:3px 3px #080a07d1,inset 2px 2px #c9ce9e,inset -2px -2px #454a34}.mute-button:hover{background:#8f966b}.mute-button:active{transform:translate(2px,2px);box-shadow:1px 1px #080a07d1,inset 2px 2px #454a34,inset -2px -2px #c9ce9e}.mute-button:focus-visible{outline-offset:4px;outline:2px solid #fff}.mute-button__face{box-sizing:border-box;background:#f1ebba;border:2px solid #11120e;justify-content:center;align-items:center;width:100%;height:100%;display:flex;box-shadow:inset 3px 3px #fffbd9,inset -3px -3px #9d9a70}.mute-button__icon{fill:currentColor;flex:0 0 24px;width:24px;height:24px;display:block;overflow:visible}@media (prefers-reduced-motion:reduce){.mute-button:active{transform:none}}@media (width<=48rem),(height<=36rem) and (hover:none) and (pointer:coarse){.mute-button{height:46px;bottom:auto;left:auto;right:max(.5rem, env(safe-area-inset-right));top:max(.5rem, env(safe-area-inset-top));width:46px;padding:4px}.mute-button__icon{flex-basis:22px;width:22px;height:22px}}.site-shell{--sky-color:#06142f;--water-color:#052344;--waterline:76%;--building-outline-color:#22f6ff;--scene-lighting-color:#fff;--scene-lighting-opacity:0;background:linear-gradient(to bottom, color-mix(in srgb, var(--sky-color) 82%, #1cecff) 0%, var(--sky-color) calc(var(--waterline) * .5), color-mix(in srgb, var(--sky-color) 74%, #ff4fc8) calc(var(--waterline) - 9%), color-mix(in srgb, var(--sky-color) 56%, var(--water-color)) var(--waterline), color-mix(in srgb, var(--water-color) 70%, #19f2ff) calc(var(--waterline) + 4%), var(--water-color) calc(var(--waterline) + 15%), color-mix(in srgb, var(--water-color) 72%, #02030d) 100%);justify-content:center;align-items:center;width:100%;min-height:100svh;display:flex;position:relative;overflow:hidden}.quicklinks-bar{background:color-mix(in srgb, var(--building-outline-color) 30%, transparent);border:3px solid color-mix(in srgb, var(--building-outline-color) 74%, #fff);box-shadow:0 0 12px color-mix(in srgb, var(--building-outline-color) 36%, transparent), inset 0 0 12px color-mix(in srgb, var(--building-outline-color) 16%, transparent);z-index:7;border-right:none;border-top-left-radius:3px;border-bottom-left-radius:3px;align-items:center;gap:.45rem;padding:.55rem .5rem;display:grid;position:fixed;top:49%;right:0;transform:translateY(-50%)}.quicklink-button{appearance:none;color:#000;cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;width:2rem;height:2rem;padding:0;transition:color .18s;animation:.5s quicklink-animation;display:inline-flex;position:relative}.quicklink-button:hover{color:var(--building-outline-color)}.quicklink-button svg,.quicklink-button img{width:1.85rem;height:1.85rem;display:block}.quicklink-button svg{fill:currentColor}.quicklink-button img{filter:none;opacity:0}.quicklink-button:before{content:"";height:1.85rem;-webkit-mask-position:50%;-webkit-mask-image:var(--quicklink-icon);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-image:var(--quicklink-icon);mask-image:var(--quicklink-icon);background:currentColor;width:1.85rem;transition:background-color .18s;display:block;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.quicklink-button:focus-visible{outline:2px solid color-mix(in srgb, var(--building-outline-color) 74%, #fff);outline-offset:3px}@media (width<=48rem),(height<=36rem) and (hover:none) and (pointer:coarse){.site-shell{min-height:100svh}.quicklinks-bar{border:2px solid color-mix(in srgb, var(--building-outline-color) 74%, #fff);right:env(safe-area-inset-right);border-right:0;gap:.35rem;padding:.45rem .35rem}.quicklink-button{width:2.25rem;height:2.25rem}.quicklink-button svg,.quicklink-button img,.quicklink-button:before{width:1.75rem;height:1.75rem}:is(.site-shell:has(.building-panel) .quicklinks-bar,.site-shell:has(.building-panel) .mute-button,.site-shell:has(.building-panel) .identity-panel){visibility:hidden}}
