*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{height:100%}body{color:#ffffffd9;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;-webkit-tap-highlight-color:transparent;font-synthesis:none;background:#0d0b08;height:100%}::selection{color:#fff;background:#f725858c}:focus{outline:none}:focus-visible{outline-offset:3px;border-radius:2px;outline:2px solid #f72585d9}*{scrollbar-width:thin;scrollbar-color:#f7258559 transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#f725854d padding-box padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#f725858c padding-box padding-box}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.room-fixed{isolation:isolate}@keyframes cbWordGlitch{0%{text-shadow:1px 1px #1b120b;opacity:1;filter:none}10%{text-shadow:4px 0 #00e6fff2,-4px 0 #ff1482f2,1px 1px #1b120b}18%{opacity:.15}22%{opacity:1}32%{text-shadow:-5px 0 #00e6ffe6,5px 0 #ff1482e6,1px 1px #1b120b}45%{filter:invert(.85);text-shadow:1px 1px #1b120b}50%{filter:none;text-shadow:2px 0 #00e6ffb3,-2px 0 #ff1482b3,1px 1px #1b120b}62%{opacity:.25}66%{opacity:1}78%{text-shadow:3px 0 #00e6ffcc,-3px 0 #ff1482cc,1px 1px #1b120b}90%{text-shadow:1px 1px #1b120b}to{text-shadow:1px 1px #1b120b;opacity:1;filter:none}}@keyframes cbScrollHint{0%,to{opacity:.55;transform:translate(-50%)}50%{opacity:.95;transform:translate(-50%,6px)}}.cb-scroll-hint{z-index:5;pointer-events:none;letter-spacing:.22em;text-transform:uppercase;color:#ffffffb8;text-shadow:1px 1px #0b0a08,0 0 10px #000000d9;flex-direction:column;align-items:center;gap:4px;font-family:DM Mono,Courier New,monospace;font-size:10px;animation:2.2s ease-in-out infinite cbScrollHint;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.cb-scroll-hint .cb-scroll-chev{opacity:.85;font-size:16px;line-height:1}img{color:#0000}button,input,textarea,select{font-family:inherit}@keyframes cbWindowOutside{0%,14%{opacity:.18}15%{opacity:.78}17%{opacity:.18}18%{opacity:.55}20%,38%{opacity:.18}40%{opacity:.92}42%{opacity:.18}44%,66%{opacity:.22}68%{opacity:.65}70%{opacity:.18}85%{opacity:.45}87%{opacity:.18}to{opacity:.18}}@keyframes roomTilt{0%{transform:translate(0,0)scale(1)}25%{transform:translate(-3px,2px)scale(1.0025)}50%{transform:translate(2px,-2px)scale(1.004)}75%{transform:translate(2px,3px)scale(1.0025)}to{transform:translate(0,0)scale(1)}}@keyframes dotPulse{0%,to{opacity:1;box-shadow:0 0 5px 1px var(--cb-dot-glow-soft,#fff6), 0 0 0 28px transparent, 0 0 0 16px transparent;transform:scale(1)}40%{box-shadow:0 0 9px 2px var(--cb-dot-glow-soft,#ffffff8c), 0 0 0 28px transparent, 0 0 0 16px transparent;transform:scale(1.08)}78%{box-shadow:0 0 5px 1px var(--cb-dot-glow-soft,#fff6), 0 0 0 28px transparent, 0 0 0 16px transparent;transform:scale(1)}85%{box-shadow:0 0 10px 2px var(--cb-dot-glow,#f72585b3), 0 0 0 2px var(--cb-dot-glow-soft,#f725854d), 0 0 0 0 var(--cb-dot-glow-faint,#f725851f);transform:scale(1.4)}93%{box-shadow:0 0 6px 1px var(--cb-dot-glow-soft,#f725854d), 0 0 0 16px var(--cb-dot-glow-faint,#f725852e), 0 0 0 9px var(--cb-dot-glow-soft,#f7258540);transform:scale(1.05)}}@keyframes aboutReveal{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0% 0 0)}}@keyframes slinky{0%,to{transform:scaleY(1)translateY(0)}20%{transform:scaleY(1.45)translateY(-14px)}40%{transform:scaleY(.78)translateY(0)}60%{transform:scaleY(1.18)translateY(-6px)}80%{transform:scaleY(.94)translateY(0)}}@keyframes letterStretch{0%,to{letter-spacing:0;transform:scaleX(1)}50%{letter-spacing:.08em;transform:scaleX(1.04)}}@keyframes introFade{0%{opacity:0}to{opacity:1}}@keyframes introExit{0%{opacity:1}to{opacity:0}}@keyframes notifFade{0%{opacity:0;transform:translate(-50%,-50%)translateY(8px)}18%{opacity:1;transform:translate(-50%,-50%)translateY(0)}82%{opacity:1;transform:translate(-50%,-50%)translateY(0)}to{opacity:0;transform:translate(-50%,-50%)translateY(-6px)}}@keyframes dotSyncPulse{0%{opacity:1;box-shadow:0 0 #f72585d9}60%{opacity:1;box-shadow:0 0 0 36px #f7258500}to{opacity:1;box-shadow:0 0 #f7258500}}@keyframes portalBreathe{0%,to{opacity:.4;transform:scale(.95)}50%{opacity:.85;transform:scale(1.08)}}@keyframes portalSync{0%{opacity:.4;transform:scale(.95)}35%{opacity:1;transform:scale(1.35)}to{opacity:.4;transform:scale(.95)}}@keyframes cityFlicker{0%,to{opacity:.55}18%{opacity:1}32%{opacity:.72}47%{opacity:.95}61%{opacity:.6}78%{opacity:.88}}@keyframes carPass{0%,60%{opacity:0;transform:translate(0%)}65%{opacity:.4;transform:translate(40%)}72%{opacity:1;transform:translate(180%)}80%{opacity:.55;transform:translate(360%)}86%{opacity:0;transform:translate(480%)}to{opacity:0;transform:translate(480%)}}@keyframes lampBreathe{0%,to{opacity:.92}50%{opacity:1}}@keyframes cbCityFlicker{0%,to{opacity:.85}18%{opacity:1}32%{opacity:.7}47%{opacity:.95}61%{opacity:.6}78%{opacity:.88}}@keyframes cbWindowFlicker{0%,to{opacity:0}37%{opacity:0}38%{opacity:.8}39%{opacity:0}41%{opacity:.55}42%{opacity:0}72%{opacity:0}73%{opacity:.45}74%{opacity:0}}@keyframes cbLampBreathe{0%,to{opacity:.88}50%{opacity:1}}@keyframes cbGalaxySwirl{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes cbGalaxyRotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes cbStarTwinkle{0%,to{opacity:.25;transform:scale(.8)}50%{opacity:1;transform:scale(1.3)}}@keyframes cbPeaceBob{0%,to{transform:translate(-50%,-100%)scale(1)rotate(-6deg)}50%{transform:translate(-50%,-108%)scale(1.08)rotate(6deg)}}@keyframes windowFlicker{0%,to{opacity:0}37%{opacity:0}38%{opacity:.55}39%{opacity:0}41%{opacity:.4}42%{opacity:0}72%{opacity:0}73%{opacity:.35}74%{opacity:0}}.mobile-list,.mobile-top-bar,.mobile-spacer,.mobile-hero-overlay{display:none}.grid-projects{grid-template-columns:repeat(3,1fr);gap:56px 32px;display:grid}@media (max-width:900px){.grid-projects{grid-template-columns:repeat(2,1fr);gap:40px 24px}}@media (max-width:600px){.grid-projects{grid-template-columns:1fr;gap:36px}}.writeup-with-terminal{grid-template-columns:1fr 360px;gap:48px;max-width:1100px;margin:0 0 56px;display:grid}@media (max-width:900px){.writeup-with-terminal{grid-template-columns:1fr;gap:36px}}@keyframes cbCursorBlink{0%,to{opacity:1}50%{opacity:0}}@keyframes cbCascadeIn{0%{opacity:0;filter:blur(2px);transform:translateY(-6px)}60%{opacity:.85;filter:blur()}to{opacity:1;filter:blur();transform:translateY(0)}}@keyframes cbShimmer{0%{background-position:-150% 0}to{background-position:250% 0}}.cb-shimmer{-webkit-text-fill-color:transparent;background-image:linear-gradient(100deg,currentColor 0% 42%,#fffffff2 50%,currentColor 58% 100%);background-repeat:no-repeat;background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:4s ease-in-out infinite cbShimmer}@keyframes cbBsodGlitch{0%{opacity:0;transform:translate(0)}20%{opacity:.9;transform:translate(-4px)}40%{opacity:.6;transform:translate(6px)}60%{opacity:.85;transform:translate(-2px)}80%{opacity:1;transform:translate(3px)}to{opacity:1;transform:translate(0)}}.project-nav{border-top:1px solid #ffffff14;grid-template-columns:1fr 1fr;gap:16px;margin-top:60px;padding-top:32px;display:grid}@media (max-width:600px){.project-nav{grid-template-columns:1fr}}@keyframes cbEncounterFlash{0%{background-color:#000}20%{background-color:#fff}40%{background-color:#000}60%{background-color:#fff}80%{background-color:#000}to{background-color:#000}}@keyframes cbDmgPowerOff{0%{opacity:1;transform:scaleY(1)scaleX(1)}33%{opacity:1;transform:scaleY(.04)scaleX(1)}66%{opacity:1;transform:scaleY(.04)scaleX(.04)}to{opacity:0;transform:scaleY(0)scaleX(0)}}@keyframes cbCamSlideInSpin{0%{transform:translate(-180%)rotate(0)}to{transform:translate(0%)rotate(720deg)}}@keyframes cbBallArc{0%{transform:translate(0)rotate(0)}50%{transform:translate(70%,-110%)rotate(360deg)}to{transform:translate(140%,-20%)rotate(720deg)}}@keyframes cbBallWobble{0%,to{transform:translate(140%,-20%)rotate(0)}25%{transform:translate(140%,-20%)rotate(-22deg)}75%{transform:translate(140%,-20%)rotate(22deg)}}@keyframes cbBagSlideInLR{0%{transform:translate(-220%)}to{transform:translate(0)}}@keyframes cbCamSlideUp{0%{transform:translateY(60%)}to{transform:translateY(0%)}}@keyframes cbThrowRelease{0%{transform:translate(0)translateY(0)}15%{transform:translate(-2%)translateY(.5%)}35%{transform:translate(2%)translateY(-1%)}60%{transform:translate(1.5%)translateY(-.5%)}to{transform:translate(0)translateY(0)}}@keyframes cbBallArcV2{0%{transform:translate(0)rotate(0)}25%{transform:translate(8vmin,-12vmin)rotate(180deg)}50%{transform:translate(16vmin,-18vmin)rotate(360deg)}75%{transform:translate(24vmin,-20vmin)rotate(540deg)}to{transform:translate(30vmin,-18vmin)rotate(720deg)}}@keyframes cbBallWobbleV2{0%,to{transform:translate(0)rotate(0)}10%{transform:translate(-2%)rotate(-32deg)}25%{transform:translate(-3%,1%)rotate(-38deg)}40%{transform:translate(-1%)rotate(-12deg)}50%{transform:translate(0)rotate(0)}60%{transform:translate(1%)rotate(12deg)}75%{transform:translate(3%,1%)rotate(38deg)}90%{transform:translate(2%)rotate(32deg)}}@keyframes cbFadeIn{0%{opacity:0}to{opacity:1}}@keyframes cbSparkleTwinkle{0%,to{opacity:.4;transform:scale(.8)}50%{opacity:1;transform:scale(1.1)}}@keyframes cbSparkleReveal{0%{opacity:0;transform:scale(.4)}60%{opacity:1;transform:scale(1.2)}to{opacity:1;transform:scale(1)}}@keyframes cbPixelDissolveCell{to{opacity:1}}@keyframes cbCaughtFlash{0%{opacity:0}50%{opacity:.4}to{opacity:0}}@keyframes cbBlink{0%,to{opacity:1}50%{opacity:0}}@keyframes cbSoftBlink{0%,to{opacity:1}50%{opacity:.3}}@keyframes cbRainDrop{0%{transform:translateY(-30%)skew(-14deg)}to{transform:translateY(450%)skew(-14deg)}}@keyframes cbStormFlash{0%,96%{opacity:0}97%{opacity:.85}97.6%{opacity:0}98.4%{opacity:.55}99%{opacity:0}}@keyframes cbSnowFall{0%{transform:translateY(-10%)translate(0)}to{transform:translateY(1100%) translateX(var(--cb-snow-drift,0))}}@keyframes cbFogDrift{0%,to{transform:translate(-3%)scale(1.05)}50%{transform:translate(3%)scale(1.12)}}@keyframes cbRabbitJumpDown{0%{opacity:1;transform:translate(0)scale(1)}15%{opacity:1;transform:translate(2%,-28%)scale(1.03)}35%{opacity:1;transform:translate(10%,-8%)scale(1.05)}55%{opacity:1;transform:translate(22%,60%)scale(.96)}75%{opacity:.85;transform:translate(38%,220%)scale(.9)}to{opacity:0;transform:translate(60%,600%)scale(.7)}}@keyframes cbWindowBreathe{0%,to{opacity:.2}50%{opacity:.65}}@keyframes cbCityWindowLife{0%,9%{opacity:0}10%,38%{opacity:var(--cb-cwlife-peak,.7)}39%,54%{opacity:0}55%,72%{opacity:calc(var(--cb-cwlife-peak,.7) * .6)}73%,to{opacity:0}}@keyframes cbDustMote{0%,to{opacity:.55;transform:translate(0)scale(.85)}25%{opacity:.85;transform:translate(2px,-8px)scale(1)}50%{opacity:.7;transform:translate(-1px,-14px)scale(.9)}75%{opacity:1;transform:translate(-3px,-6px)scale(1.05)}}.cb-gb-ball{opacity:0;transition:opacity .22s ease-out}.cb-gb-ball-img{filter:drop-shadow(0 0 5px #9bbc0fa6)drop-shadow(0 0 12px #9bbc0f66)}html.cb-gb-cursor-near .cb-gb-ball,.cb-gb-ball[data-pen=true]{opacity:1}@keyframes cbTileVanish{0%{opacity:1}to{opacity:0}}@keyframes cbEntryBlink{0%{opacity:1}40%{opacity:1}50%{opacity:0}60%{opacity:1}to{opacity:1}}@keyframes cbRoomColorFlash{0%{background-color:#000}25%{background-color:#fff}50%{background-color:#000}75%{background-color:#fff}to{background-color:#000}}@keyframes cbGbRustle{0%{transform:translate(0,0)rotate(0)}22%{transform:translate(-1px)rotate(-.35deg)}44%{transform:translate(1px)rotate(.3deg)}66%{transform:translate(-.5px)rotate(-.18deg)}to{transform:translate(0,0)rotate(0)}}@keyframes cbGbLeafRise{0%{opacity:0;transform:translate(-50%, -50%) translate(0, 0) scale(var(--scale)) rotate(0)}18%{opacity:var(--peak)}72%{opacity:var(--peak)}to{opacity:0;transform:translate(-50%, -50%) translate(var(--dx), var(--dy)) scale(calc(var(--scale) * .92)) rotate(var(--rot))}}.cb-gb-rustle-host.cb-gb-rustle-active{transform-origin:50%;animation:.72s steps(2,end) cbGbRustle}.cb-gb-leaf{opacity:0;pointer-events:none;clip-path:polygon(50% 0%,100% 42%,62% 100%,12% 72%,0% 28%);width:5px;height:7px;image-rendering:pixelated;transform:translate(-50%, -50%) scale(var(--scale,1));will-change:transform, opacity;background:#6f9f3a;animation:.9s cubic-bezier(.2,.65,.2,1) forwards cbGbLeafRise;position:absolute;box-shadow:inset -1px -1px #284618d9}@media (pointer:fine){html.cb-gb-cursor-near,html.cb-gb-cursor-near *{cursor:none}}.cb-gb-cursor-follow{pointer-events:none;z-index:99999;opacity:0;will-change:transform;width:0;height:0;transition:opacity .12s ease-out;position:fixed;top:0;left:0;transform:translate(-9999px,-9999px)}html.cb-gb-cursor-near .cb-gb-cursor-follow{opacity:1}.cb-gb-cursor-follow-ball{filter:drop-shadow(0 0 4px #9bbc0f8c);width:24px;height:24px;animation:2s linear infinite cbGbCursorSpin,1.4s ease-in-out infinite cbGbCursorWobble;display:block;position:absolute;top:-12px;left:-12px}@keyframes cbGbCursorSpin{0%{rotate:none}to{rotate:360deg}}@keyframes cbGbCursorWobble{0%,to{translate:0}25%{translate:1px -.6px}50%{translate:0 1px}75%{translate:-1px -.6px}}@media (max-width:768px){body{height:auto;overflow-y:auto}.mobile-spacer{height:44px;display:block!important}.room-fixed{overflow:hidden;height:60vh!important;animation:none!important;position:relative!important;inset:auto!important}.room-pan-scroll{touch-action:pan-x;-webkit-overflow-scrolling:touch;scrollbar-width:none;position:absolute;inset:0;overflow:auto hidden}.room-pan-scroll::-webkit-scrollbar{display:none}.room-inner{aspect-ratio:6720/3782;min-width:100%;width:auto!important;height:100%!important;position:relative!important;inset:auto!important}.room-fixed img{object-fit:contain!important;object-position:center center!important}.room-fixed a{display:flex!important}.identity-plate{display:none!important}.mobile-hero-overlay{display:block!important}.mobile-list{display:block}.mobile-top-bar{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:100;pointer-events:auto;background:#0d0b08eb;border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;height:44px;padding:0 16px;position:fixed;top:0;left:0;right:0;display:flex!important}.grid-top-bar{display:none!important}.grid-content{padding-top:60px!important}.project-page-header{top:44px!important}.project-page-hero{padding-top:44px}}
