@font-face{font-family:Fraunces;font-style:italic;font-weight:100 900;font-display:swap;src:url(../media/50a3f1070da3c6cc-s.0xr8au8udm.h9.woff2)format("woff2");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:Fraunces;font-style:italic;font-weight:100 900;font-display:swap;src:url(../media/b887d91685b8c137-s.0z~ry.rim0raw.woff2)format("woff2");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:Fraunces;font-style:italic;font-weight:100 900;font-display:swap;src:url(../media/3c7c6164b2587822-s.p.0duriy8536ewt.woff2)format("woff2");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:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/1e219c03c996efbd-s.0vlx5hthn2t7i.woff2)format("woff2");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:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/b35b0dbffda7f2c4-s.0fu677rwbv-.g.woff2)format("woff2");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:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/03bda585a99c6450-s.p.0zzh68k1~whtc.woff2)format("woff2");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:Fraunces Fallback;src:local(Times New Roman);ascent-override:84.71%;descent-override:22.09%;line-gap-override:0.0%;size-adjust:115.45%}.fraunces_586281bf-module__HZukdG__className{font-family:Fraunces,Fraunces Fallback}.fraunces_586281bf-module__HZukdG__variable{--font-fraunces:"Fraunces", "Fraunces Fallback"}
@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2c55a0e60120577a-s.0bjc5tiuqdqro.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/9c72aa0f40e4eef8-s.0m6w47a4e5dy9.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/ad66f9afd8947f86-s.11u06r12fd6v_.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5476f68d60460930-s.0wxq9webf.ew4.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2bbe8d2671613f1f-s.067x_6k0k23tk.woff2)format("woff2");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:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/1bffadaabf893a1e-s.16ipb6fqu393i.woff2)format("woff2");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:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2)format("woff2");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:Inter Fallback;src:local(Arial);ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.0%;size-adjust:107.12%}.inter_98ad3912-module__9GIQTa__className{font-family:Inter,Inter Fallback;font-style:normal}.inter_98ad3912-module__9GIQTa__variable{--font-inter:"Inter", "Inter Fallback"}
:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:222 50% 4%;--surface:218 23% 7%;--text:0 0% 96%;--muted:213 15% 62%;--stroke:216 18% 14%;--accent:0 0% 96%;--sky:#89aacc;--sky-deep:#07111c;--sky-ice:#c9e8ff;--sky-blue:#4e85bf;--signal:#f3c06a;--font-body:var(--font-inter), "Inter", sans-serif;--font-display:var(--font-fraunces), "Fraunces", serif;--ease-out:cubic-bezier(.25, .1, .25, 1)}*{box-sizing:border-box}html{scroll-behavior:smooth;background:#05080f;min-width:320px;min-height:100%;overflow-x:clip}body{min-height:100vh;color:hsl(var(--text));font-family:var(--font-body);letter-spacing:0;background:#05080f;margin:0;overflow-x:clip}body::selection{background:var(--sky-ice);color:hsl(var(--bg))}a{color:inherit;text-decoration:none}button{color:inherit;font:inherit;border:0}button,a{-webkit-tap-highlight-color:transparent}h1,h2,h3,p{margin:0}img,video{max-width:100%;display:block}.galaxy-layer{z-index:0;pointer-events:none;background:#05080f;position:fixed;inset:0;overflow:hidden}.galaxy-layer canvas{display:block;width:100%!important;height:100%!important}.galaxy-scrim{background:radial-gradient(at 50% 32%,#0000 0 34%,#02050a75 100%),linear-gradient(#02050a38,#0000 22% 72%,#02050a80);position:absolute;inset:0}.galaxy-fallback{background:radial-gradient(at 38% 40%,#f3c06a1f,#0000 30rem),radial-gradient(at 62% 38%,#c9e8ff24,#0000 32rem),radial-gradient(at 50% 42%,#89aacc29,#0000 40rem),#05080f}.portfolio-page{z-index:1;min-height:100vh;color:hsl(var(--text));background:0 0;position:relative;overflow:hidden}.loading-screen{z-index:9999;background:linear-gradient(#05080fd1,#05080f80 42%,#05080fb8);place-items:center;display:grid;position:fixed;inset:0;overflow:hidden}.loading-label,.loading-counter,.loading-word{position:absolute}.loading-label{color:hsl(var(--muted));letter-spacing:.3em;text-transform:uppercase;font-size:.72rem;font-weight:600;line-height:1;top:28px;left:28px}.loading-word{color:hsl(var(--text) / .8);font-family:var(--font-display);font-size:clamp(2.5rem,7vw,6.8rem);font-style:italic;font-weight:400;line-height:.9}.loading-counter{color:hsl(var(--text));font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:clamp(4rem,12vw,10rem);font-weight:400;line-height:.8;bottom:28px;right:28px}.loading-progress{background:hsl(var(--stroke) / .5);height:3px;position:absolute;bottom:0;left:0;right:0}.loading-progress i{background:linear-gradient(90deg, var(--signal) 0%, var(--sky-ice) 56%, var(--sky-blue) 100%);transform-origin:0;width:100%;height:100%;display:block;box-shadow:0 0 12px #c9e8ff6b}.portfolio-nav{z-index:50;pointer-events:none;justify-content:center;padding:18px 16px 0;display:flex;position:fixed;top:0;left:0;right:0}.nav-pill{background:hsl(var(--surface) / .86);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);pointer-events:auto;border:1px solid #ffffff1a;border-radius:999px;align-items:center;max-width:100%;padding:8px;transition:box-shadow .25s,border-color .25s;display:inline-flex}.nav-pill.is-scrolled{box-shadow:0 18px 44px #00000042}.portfolio-logo{background:linear-gradient(90deg, var(--signal) 0%, var(--sky-ice) 58%, var(--sky-blue) 100%);border-radius:50%;place-items:center;width:36px;height:36px;padding:2px;transition:scale .25s,background .25s;display:grid}.portfolio-logo:hover,.portfolio-logo:focus-visible{background:linear-gradient(90deg, var(--sky-blue) 0%, var(--signal) 48%, var(--sky-ice) 100%);scale:1.1}.portfolio-logo span{border-radius:inherit;background:hsl(var(--bg));width:100%;height:100%;color:hsl(var(--text));font-family:var(--font-display);place-items:center;font-size:.82rem;font-style:italic;display:grid}.nav-divider{background:hsl(var(--stroke));width:1px;height:20px;margin:0 4px}.portfolio-nav nav{align-items:center;gap:2px;display:inline-flex}.portfolio-nav nav a,.say-hi{min-height:34px;color:hsl(var(--muted));white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;padding:0 15px;font-size:.82rem;font-weight:500;transition:color .2s,background .2s,scale .2s;display:inline-flex;position:relative}.portfolio-nav nav a:first-child,.portfolio-nav nav a:hover,.portfolio-nav nav a:focus-visible{color:hsl(var(--text));background:hsl(var(--stroke) / .5)}.say-hi{color:hsl(var(--text));gap:6px;overflow:hidden}.say-hi:before,.button:before,.section-action:before,.email-button:before{z-index:-1;border-radius:inherit;background:linear-gradient(90deg, var(--signal), var(--sky-ice), var(--sky-blue), var(--signal));opacity:0;content:"";background-size:200% 200%;transition:opacity .2s;animation:6s infinite gradient-shift;position:absolute;inset:-2px}.say-hi:hover:before,.say-hi:focus-visible:before,.button:hover:before,.button:focus-visible:before,.section-action:hover:before,.section-action:focus-visible:before,.email-button:hover:before,.email-button:focus-visible:before{opacity:1}.say-hi span,.say-hi b{z-index:1;position:relative}.sound-toggle{z-index:60;background:hsl(var(--surface) / .82);width:48px;height:48px;color:hsl(var(--muted));cursor:pointer;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid #ffffff1f;border-radius:50%;justify-content:center;align-items:center;gap:10px;padding:0;transition:color .2s,border-color .2s,background .2s,transform .2s;display:inline-flex;position:fixed;bottom:22px;right:22px;box-shadow:0 18px 44px #00000047}.sound-toggle:hover,.sound-toggle:focus-visible,.sound-toggle.is-on{background:hsl(var(--surface));color:hsl(var(--text));border-color:#89aacc6b}.sound-toggle:hover,.sound-toggle:focus-visible{transform:translateY(-2px)}.sound-toggle:disabled{cursor:not-allowed;opacity:.48}.sound-icon{justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex}.sound-icon svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.9px;width:100%;height:100%}.kinetic-text{display:inline}.kinetic-text+.kinetic-text{margin-left:.24em}.kinetic-word{vertical-align:bottom;margin-block:-.1em;padding-block:.1em;display:inline-flex;overflow:hidden}.kinetic-word:not(:last-child){margin-right:.24em}.kinetic-char{transform-origin:0 100%;will-change:transform;display:inline-block}.kinetic-text.is-italic .kinetic-char{font-style:italic}.mask-line{vertical-align:bottom;margin-block:-.08em;padding-block:.08em;display:inline-block;overflow:hidden}.mask-line-inner{display:inline-block}.hero-section{text-align:center;place-items:center;min-height:100vh;padding:130px 24px 92px;display:grid;position:relative;overflow:hidden}.hero-content{z-index:10;max-width:1080px;position:relative}.hero-eyebrow,.section-eyebrow{color:hsl(var(--muted));letter-spacing:.3em;text-transform:uppercase;align-items:center;gap:12px;font-size:.72rem;font-weight:600;line-height:1;display:inline-flex}.section-eyebrow i{background:hsl(var(--stroke));width:32px;height:1px}.hero-eyebrow{margin-bottom:32px}.hero-title,.section-heading h2,.gateway-game-copy h2,.footer-cta h2{font-family:var(--font-display);letter-spacing:-.01em;font-weight:400}.hero-title{color:hsl(var(--text));margin-bottom:26px;font-size:clamp(2.9rem,8vw,7.4rem);line-height:1.02}.hero-title em,.hero-title .is-italic{font-style:italic}.hero-line{display:block}.role-line{color:hsl(var(--text) / .84);margin-bottom:16px;font-size:clamp(1.08rem,2vw,1.45rem);line-height:1.4}.role-word{min-width:10ch;color:hsl(var(--text));font-family:var(--font-display);text-align:left;justify-items:start;font-style:italic;display:inline-grid}.role-word-inner{grid-area:1/1;display:inline-block}.hero-description{max-width:480px;color:hsl(var(--muted));margin:0 auto 46px;font-size:.96rem;line-height:1.7}.hero-actions{flex-wrap:wrap;justify-content:center;gap:14px;display:inline-flex}.button,.section-action,.email-button{border-radius:999px;justify-content:center;align-items:center;min-height:48px;padding:0 28px;font-size:.9rem;font-weight:600;transition:scale .2s,color .2s,background .2s,border-color .2s;display:inline-flex;position:relative;overflow:hidden}.button:hover,.button:focus-visible,.email-button:hover,.email-button:focus-visible{scale:1.05}.button-solid{background:hsl(var(--text));color:hsl(var(--bg));border:2px solid #0000}.button-solid:hover,.button-solid:focus-visible{background:hsl(var(--bg));color:hsl(var(--text))}.button-outline,.email-button{border:2px solid hsl(var(--stroke));background:hsl(var(--bg) / .6);color:hsl(var(--text))}.button-outline:hover,.button-outline:focus-visible,.email-button:hover,.email-button:focus-visible{border-color:#0000}.scroll-cue{z-index:10;color:hsl(var(--muted));letter-spacing:.2em;text-transform:uppercase;justify-items:center;gap:10px;font-size:.68rem;font-weight:600;display:grid;position:absolute;bottom:28px;left:50%;transform:translate(-50%)}.scroll-cue i{background:hsl(var(--stroke));width:1px;height:40px;position:relative;overflow:hidden}.scroll-cue b{background:hsl(var(--text));animation:1.5s ease-in-out infinite scroll-down;display:block;position:absolute;inset:0}.page-section{background:0 0;padding:96px 0;scroll-margin-top:96px}.gateway-game-section,.contact-footer{scroll-margin-top:96px}.section-inner{width:min(1200px,100% - 48px);margin:0 auto}.section-heading{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:24px;margin-bottom:34px;display:grid}.section-heading>div{gap:16px;display:grid}.section-heading h2,.gateway-game-copy h2,.footer-cta h2{color:hsl(var(--text));font-size:clamp(2.7rem,6.2vw,5.2rem);line-height:1}.section-heading h2 em,.gateway-game-copy h2 em,.footer-cta h2 em{font-style:italic}.section-heading p,.gateway-game-copy p{max-width:520px;color:hsl(var(--muted));font-size:.98rem;line-height:1.7}.section-action{border:1px solid hsl(var(--stroke));background:hsl(var(--surface) / .82);color:hsl(var(--text));gap:8px;display:inline-flex}.bento-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;display:grid}.project-card{border:1px solid hsl(var(--stroke));background:hsl(var(--surface));outline-offset:6px;isolation:isolate;border-radius:30px;grid-column:span 4;min-height:420px;display:block;position:relative;overflow:hidden}.project-card:before{z-index:2;content:"";pointer-events:none;background:linear-gradient(#0000,#000000b8);height:44%;position:absolute;bottom:0;left:0;right:0}.arm-preview{z-index:0;background:radial-gradient(circle at 24% 18%, rgba(var(--arm), .12), transparent 22rem), linear-gradient(180deg, hsl(var(--surface) / .9), hsl(var(--bg) / .96));padding:clamp(20px,3vw,32px);position:absolute;inset:0}.arm-preview-vault{--arm:243, 192, 106}.arm-preview-streak{--arm:201, 232, 255}.arm-preview-cadence{--arm:243, 192, 106;padding:0}.arm-preview-cadence img{object-fit:cover;object-position:center;opacity:.82;filter:saturate(1.1)contrast(1.04);width:100%;height:100%}.arm-preview-cadence:after{background:linear-gradient(180deg, #02060c0f, #02060c9e), radial-gradient(circle at 50% 48%, rgba(var(--arm), .14), transparent 18rem);content:"";position:absolute;inset:0}.preview-panel{border:1px solid rgba(var(--arm), .2);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:transform .55s var(--ease-out);background:#02060cbd;border-radius:20px;gap:10px;padding:18px;display:grid;position:absolute;box-shadow:0 18px 44px #0000004d,inset 0 1px #ffffff0a}.project-card:hover .preview-panel,.project-card:focus-visible .preview-panel{transform:translateY(calc(var(--lift,-6px)))}.preview-panel>span{color:hsl(var(--muted));letter-spacing:.18em;text-transform:uppercase;font-size:.64rem;font-weight:700}.preview-panel>small{color:hsl(var(--muted));font-size:.74rem}.preview-main{--lift:-10px;width:min(62%,300px);top:clamp(20px,3vw,32px);left:clamp(20px,3vw,32px)}.preview-main strong{color:hsl(var(--text));font-family:var(--font-display);font-size:clamp(1.7rem,2.6vw,2.3rem);font-weight:400;line-height:1}.preview-alert{border:1px solid rgba(var(--arm), .4);background:rgba(var(--arm), .1);color:rgb(var(--arm));border-radius:999px;justify-self:start;padding:6px 11px;font-size:.72rem;font-style:normal;font-weight:600}.preview-goal{--lift:-16px;width:min(34%,190px);transition-delay:50ms;top:clamp(44px,6vw,70px);right:clamp(20px,3vw,32px)}.preview-bar{background:#ffffff14;border-radius:999px;height:7px;overflow:hidden}.preview-bar i{background:linear-gradient(90deg, rgba(var(--arm), .55), rgb(var(--arm)));border-radius:999px;height:100%;display:block}.preview-spark{--lift:-13px;width:min(46%,240px);transition-delay:90ms;bottom:34%;left:clamp(34px,5vw,56px)}.preview-spark svg{width:100%;height:44px}.preview-spark polyline{fill:none;stroke:rgb(var(--arm));stroke-linecap:round;stroke-linejoin:round;stroke-width:2px}.preview-dots{grid-template-columns:repeat(7,1fr);gap:5px;display:grid}.preview-dots i{aspect-ratio:1;background:rgba(var(--arm), calc(.08 + var(--level,0) * .22));border-radius:5px}.preview-dots .level-0{--level:0}.preview-dots .level-1{--level:1}.preview-dots .level-2{--level:2}.preview-dots .level-3{--level:3}.preview-rhythm{--lift:-16px;width:min(34%,190px);transition-delay:50ms;top:clamp(44px,6vw,70px);right:clamp(20px,3vw,32px)}.preview-bars{align-items:end;gap:6px;height:52px;display:flex}.preview-bars i{background:linear-gradient(180deg, rgb(var(--arm)), rgba(var(--arm), .3));border-radius:4px 4px 2px 2px;flex:1}.preview-tasks{--lift:-13px;gap:8px;width:min(46%,240px);transition-delay:90ms;bottom:34%;left:clamp(34px,5vw,56px)}.preview-tasks p{color:hsl(var(--text) / .85);align-items:center;gap:9px;font-size:.8rem;display:flex}.preview-tasks i{background:rgba(var(--arm), .32);border-radius:50%;width:8px;height:8px}.preview-tasks .task-done i{background:rgb(var(--arm))}.preview-tasks .task-active i{background:rgba(var(--arm), .78);box-shadow:0 0 8px rgba(var(--arm), .6)}.preview-tasks .task-done{color:hsl(var(--muted));text-decoration:line-through}.preview-cadence-score{z-index:1;--lift:-12px;bottom:34%;left:clamp(20px,3vw,32px);right:clamp(20px,3vw,32px)}.preview-cadence-score strong{color:hsl(var(--text));font-family:var(--font-display);letter-spacing:.08em;font-size:clamp(2.4rem,5vw,4.2rem);font-weight:400;line-height:.9}.project-overlay{z-index:4;background:hsl(var(--bg) / .7);opacity:0;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);place-items:center;transition:opacity .28s;display:grid;position:absolute;inset:0}.project-card:hover .project-overlay,.project-card:focus-visible .project-overlay{opacity:1}.project-overlay span{background:linear-gradient(#fff, #fff) padding-box, linear-gradient(90deg, var(--signal) 0%, var(--sky-ice) 58%, var(--sky-blue) 100%) border-box;color:#050505;border:1px solid #0000;border-radius:999px;padding:13px 18px;font-size:.9rem;font-weight:600}.project-overlay em{font-family:var(--font-display);font-style:italic}.project-meta{z-index:3;color:hsl(var(--text));justify-content:space-between;align-items:end;gap:16px;display:flex;position:absolute;bottom:22px;left:22px;right:22px}.project-meta strong{font-family:var(--font-display);font-size:1.7rem;font-style:italic;font-weight:400;line-height:1}.project-meta small{color:hsl(var(--text) / .72);letter-spacing:.18em;text-transform:uppercase;font-size:.72rem;font-weight:600}.constellation-field{border:1px solid hsl(var(--stroke));background:radial-gradient(circle at 48% 50%, #89aacc24, transparent 17rem), radial-gradient(circle at 85% 16%, #f3c06a12, transparent 20rem), linear-gradient(180deg, hsl(var(--surface) / .78), hsl(var(--bg) / .94));border-radius:34px;height:clamp(480px,62vh,640px);position:relative;overflow:hidden;box-shadow:0 28px 80px #0000003d}.constellation-lines{width:100%;height:100%;position:absolute;inset:0}.constellation-line{stroke:#89aacc3d;stroke-width:1px;vector-effect:non-scaling-stroke;transition:stroke .25s}.constellation-line.line-core{stroke-dasharray:3 4}.constellation-line.line-vault.is-active{stroke:#f3c06ac7}.constellation-line.line-streak.is-active{stroke:#c9e8ffc7}.constellation-star{z-index:2;cursor:pointer;outline-offset:4px;background:0 0;place-items:center;width:44px;height:44px;padding:0;display:grid;position:absolute;transform:translate(-50%,-50%)}.constellation-star i{width:9px;height:9px;animation:3.4s ease-in-out infinite star-twinkle;animation-delay:var(--twinkle-delay,0s);transition:scale .25s var(--ease-out);border-radius:50%}.star-vault i{background:var(--signal);box-shadow:0 0 14px #f3c06a99}.star-streak i{background:var(--sky-ice);box-shadow:0 0 14px #c9e8ff99}.constellation-star span{color:hsl(var(--muted));letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;font-size:.66rem;font-weight:700;transition:color .25s;position:absolute;top:calc(100% - 8px)}.constellation-star:hover i,.constellation-star:focus-visible i,.constellation-star.is-active i{scale:1.7}.constellation-star:hover span,.constellation-star:focus-visible span,.constellation-star.is-active span{color:hsl(var(--text))}@keyframes star-twinkle{0%,to{opacity:.66}50%{opacity:1}}.constellation-cluster{z-index:1;pointer-events:none;justify-items:center;gap:3px;display:grid;position:absolute;transform:translate(-50%,-50%)}.constellation-cluster i{border-radius:50%;width:30px;height:30px;transition:box-shadow .3s}.cluster-vault i{background:radial-gradient(circle at 40% 32%,#fff0d7f2,#f3c06a59 62%,#0000 78%);box-shadow:0 0 26px #f3c06a59}.cluster-streak i{background:radial-gradient(circle at 40% 32%,#f0fafff2,#c9e8ff59 62%,#0000 78%);box-shadow:0 0 26px #c9e8ff59}.cluster-vault.is-active i{box-shadow:0 0 44px #f3c06aa6}.cluster-streak.is-active i{box-shadow:0 0 44px #c9e8ffa6}.constellation-cluster strong{color:hsl(var(--text));font-family:var(--font-display);margin-top:4px;font-size:1.3rem;font-style:italic;font-weight:400;line-height:1}.constellation-cluster span{color:hsl(var(--muted));letter-spacing:.16em;text-transform:uppercase;font-size:.62rem;font-weight:700}.constellation-core{z-index:1;width:60px;height:60px;color:hsl(var(--text));font-family:var(--font-display);background:radial-gradient(circle at 38% 28%,#c9e8ff3d,#0000 40%),#02060cd1;border:1px solid #c9e8ff52;border-radius:50%;place-items:center;font-size:1.1rem;font-style:italic;display:grid;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 36px #89aacc38}.constellation-detail{z-index:3;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#02060ccc;border:1px solid #89aacc3d;border-radius:22px;gap:7px;width:min(340px,100% - 44px);padding:16px 18px;display:grid;position:absolute;bottom:22px;left:50%;transform:translate(-50%)}.detail-tag,.signal-card span,.gateway-signal>span,.gateway-kicker,.game-summary>span{color:hsl(var(--muted));letter-spacing:.2em;text-transform:uppercase;font-size:.68rem;font-weight:700}.detail-tag.tag-vault{color:var(--signal)}.detail-tag.tag-streak{color:var(--sky-ice)}.constellation-detail strong{color:hsl(var(--text));font-family:var(--font-display);font-size:1.35rem;font-style:italic;font-weight:400;line-height:1}.constellation-detail p{color:hsl(var(--muted));font-size:.86rem;line-height:1.55}.constellation-game-link{z-index:3;min-height:44px;color:hsl(var(--text));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#02060c99;border:1px solid #89aacc3d;border-radius:999px;align-items:center;gap:8px;padding:0 18px;font-size:.82rem;font-weight:700;transition:border-color .2s,background .2s,transform .2s;display:inline-flex;position:absolute;top:22px;right:22px}.constellation-game-link:hover,.constellation-game-link:focus-visible{background:#89aacc29;border-color:#c9e8ff85;transform:translateY(-2px)}.signal-card h3,.game-summary h3{z-index:1;color:hsl(var(--text));font-size:clamp(1.35rem,2.4vw,2.2rem);line-height:1.02;position:relative}.summary-actions a,.summary-actions button{z-index:1;min-height:42px;color:hsl(var(--text));cursor:pointer;background:#ffffff0f;border:1px solid #89aacc3d;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-size:.82rem;font-weight:700;transition:border-color .2s,background .2s,transform .2s;display:inline-flex;position:relative}.summary-actions a:hover,.summary-actions a:focus-visible,.summary-actions button:hover,.summary-actions button:focus-visible{background:#89aacc29;border-color:#c9e8ff85;transform:translateY(-2px)}.gateway-game-section{position:relative}.gateway-hud{flex-direction:column;gap:18px;min-height:min(68vh,660px);display:flex}.gateway-hud-top{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.gateway-game-copy{gap:18px;max-width:520px;display:grid}.gateway-game-copy h2{color:hsl(var(--text));font-family:var(--font-display);font-weight:400;line-height:1}.gateway-game-copy h2 em{font-style:italic}.gateway-game-copy p{max-width:420px;color:hsl(var(--muted));line-height:1.7}.gateway-status{border:1px solid hsl(var(--stroke));min-height:48px;color:hsl(var(--muted));letter-spacing:.12em;text-transform:uppercase;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#02060ca8;border-radius:999px;align-items:center;gap:18px;padding:0 20px;font-size:.7rem;font-weight:700;display:flex}.gateway-status b{color:hsl(var(--text));letter-spacing:0;font-size:.92rem}.gateway-status button{color:hsl(var(--text));cursor:pointer;letter-spacing:.12em;text-transform:uppercase;background:#ffffff0f;border:1px solid #89aacc3d;border-radius:999px;padding:6px 12px;font-size:.68rem;font-weight:700;transition:border-color .2s,background .2s}.gateway-status button:hover,.gateway-status button:focus-visible{background:#89aacc29;border-color:#c9e8ff85}.gateway-intro{text-align:center;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#02060cb8;border:1px solid #89aacc3d;border-radius:30px;justify-items:center;gap:14px;width:min(580px,100%);margin:auto;padding:clamp(28px,4vw,46px);display:grid}.gateway-intro h3{color:hsl(var(--text));font-family:var(--font-display);font-size:clamp(1.6rem,3vw,2.4rem);font-weight:400;line-height:1.05}.gateway-intro p{max-width:460px;color:hsl(var(--muted));font-size:.95rem;line-height:1.65}.gateway-intro button{background:hsl(var(--text));color:#05080f;cursor:pointer;border-radius:999px;min-height:50px;margin-top:6px;padding:0 28px;font-size:.92rem;font-weight:700;transition:transform .2s,opacity .2s}.gateway-intro button:hover,.gateway-intro button:focus-visible{opacity:.9;transform:translateY(-2px)}.gateway-playfield{cursor:crosshair;touch-action:none;flex:1;min-height:180px;position:relative}.playfield-hint{color:hsl(var(--muted));letter-spacing:.2em;text-transform:uppercase;white-space:nowrap;pointer-events:none;font-size:.7rem;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.aim-line{pointer-events:none;transform-origin:0;background:linear-gradient(90deg,#f5f9ffe6,#f5f9ff1f);border-radius:2px;height:2px;position:absolute}.gateway-dock{justify-items:center;gap:12px;padding-bottom:6px;display:grid}.gateway-legend{gap:16px;display:flex}.gateway-legend span{color:hsl(var(--muted));letter-spacing:.16em;text-transform:uppercase;align-items:center;gap:7px;font-size:.64rem;font-weight:700;display:inline-flex}.gateway-legend span:before{content:"";border-radius:50%;width:9px;height:9px}.legend-vault:before{background:var(--signal);box-shadow:0 0 10px #f3c06a99}.legend-streak:before{background:var(--sky-ice);box-shadow:0 0 10px #c9e8ff99}.gateway-signal{text-align:center;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#02060cbd;border:1px solid #89aacc42;border-radius:22px;justify-items:center;gap:8px;padding:16px 28px;display:grid}.gateway-signal h3{max-width:560px;color:hsl(var(--text));font-family:var(--font-display);font-size:clamp(1.3rem,2.6vw,2rem);font-weight:400;line-height:1.05}.gateway-power{background:#ffffff1a;border-radius:999px;width:min(320px,70%);height:6px;overflow:hidden}.gateway-power i{background:linear-gradient(90deg, var(--sky-ice), var(--signal));border-radius:999px;height:100%;display:block}.gateway-toast{text-align:center;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#02060cd1;border:1px solid #89aacc4d;border-radius:18px;justify-items:center;gap:6px;max-width:520px;padding:14px 22px;display:grid}.gateway-toast strong{color:hsl(var(--text));font-size:.95rem}.gateway-toast p{color:hsl(var(--muted));font-size:.84rem;line-height:1.5}.gateway-toast.tone-capture{border-color:#69db7c73}.gateway-toast.tone-retry{border-color:#f3c06a73}.gateway-toast.tone-miss{border-color:#ff787866}.gateway-fallback{justify-items:stretch;gap:16px;width:min(640px,100%);margin:auto;display:grid}.gateway-fallback .gateway-toast{justify-self:center}.signal-card{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#02060cb8;border:1px solid #89aacc3d;border-radius:28px;align-content:center;gap:16px;min-height:170px;padding:clamp(22px,4vw,36px);display:grid;position:relative}.signal-card h3{max-width:680px;font-size:clamp(1.6rem,4vw,3rem);font-family:var(--font-display);font-weight:400}.route-buttons{z-index:1;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px;display:grid;position:relative}.route-buttons button{border:1px solid hsl(var(--stroke));min-height:96px;color:hsl(var(--text));cursor:pointer;text-align:left;background:#ffffff0d;border-radius:24px;justify-items:start;gap:8px;padding:18px;transition:border-color .2s,background .2s,transform .2s;display:grid}.route-buttons button:hover,.route-buttons button:focus-visible,.route-buttons button.is-selected{background:#89aacc24;border-color:#c9e8ff85;transform:translateY(-2px)}.route-buttons button:first-child:hover,.route-buttons button:first-child:focus-visible,.route-buttons button:first-child.is-selected{background:#f3c06a1a;border-color:#f3c06a85}.route-buttons button:disabled{cursor:default}.route-buttons span{color:hsl(var(--muted));letter-spacing:.14em;text-transform:uppercase;font-size:.72rem;font-weight:700}.route-buttons b{font-size:1.35rem}.game-summary{z-index:1;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#02060cc2;border:1px solid #89aacc3d;border-radius:30px;gap:22px;width:min(640px,100%);margin:auto;padding:clamp(24px,5vw,46px);display:grid;position:relative}.summary-counts{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.summary-counts strong{border:1px solid hsl(var(--stroke));color:hsl(var(--muted));border-radius:22px;gap:8px;padding:18px;font-size:.82rem;display:grid}.summary-counts b{color:hsl(var(--text));font-size:2rem}.summary-actions{flex-wrap:wrap;gap:10px;display:flex}.stats-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.stat-card{border:1px solid hsl(var(--stroke));background:hsl(var(--surface) / .52);text-align:center;border-radius:30px;gap:10px;padding:32px;display:grid}.stat-card strong{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:clamp(4rem,9vw,8rem);font-weight:400;line-height:.82}.stat-card span{color:hsl(var(--muted));letter-spacing:.2em;text-transform:uppercase;font-size:.78rem;font-weight:600}.contact-footer{background:0 0;align-content:end;min-height:86vh;padding:80px 24px 32px;display:grid;position:relative;overflow:hidden}.marquee{z-index:2;width:max-content;color:hsl(var(--text) / .08);font-family:var(--font-display);white-space:nowrap;will-change:transform;font-size:clamp(4rem,14vw,16rem);font-style:italic;display:flex;position:absolute;top:8%;left:0}.marquee span{animation:60s linear infinite marquee;display:inline-block}.footer-cta{z-index:4;text-align:center;justify-items:center;gap:22px;margin:0 auto 64px;display:grid;position:relative}.footer-cta .section-eyebrow{justify-content:center}.footer-actions{flex-wrap:wrap;justify-content:center;gap:12px;display:inline-flex}.email-button{background:hsl(var(--surface) / .72);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-width:1px}.footer-bar{z-index:4;border-top:1px solid hsl(var(--stroke));justify-content:space-between;align-items:center;gap:18px;width:min(1200px,100%);margin:0 auto;padding-top:24px;display:flex;position:relative}.footer-bar nav{flex-wrap:wrap;gap:14px;display:flex}.footer-bar nav a,.availability{color:hsl(var(--muted));font-size:.78rem;font-weight:600}.footer-bar nav a:hover,.footer-bar nav a:focus-visible{color:hsl(var(--text))}.availability{color:hsl(var(--text));align-items:center;gap:8px;display:inline-flex}.availability i{background:#69db7c;border-radius:50%;width:8px;height:8px;animation:1.7s ease-out infinite pulse-dot;box-shadow:0 0 #69db7c80}:focus-visible{outline:2px solid var(--sky-ice);outline-offset:3px}@keyframes scroll-down{0%{transform:translateY(-100%)}to{transform:translateY(200%)}}@keyframes gradient-shift{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}@keyframes pulse-dot{0%{box-shadow:0 0 #69db7c8c}to{box-shadow:0 0 0 12px #69db7c00}}@media (max-width:900px){.portfolio-nav{justify-content:flex-start}.nav-pill{justify-content:space-between;width:100%}.nav-divider{display:none}.portfolio-nav nav a,.say-hi{padding:0 10px;font-size:.76rem}.hero-section{padding-top:120px}.page-section{padding:84px 0}.section-heading,.stats-grid{grid-template-columns:minmax(0,1fr)}.section-action{display:none}.bento-grid{grid-template-columns:minmax(0,1fr)}.project-card{grid-column:auto;min-height:360px}.constellation-field{height:540px}.constellation-star span{font-size:.58rem}.gateway-hud-top{flex-direction:column;align-items:stretch}.gateway-status{justify-content:space-between;gap:10px}.footer-bar{flex-direction:column;align-items:flex-start}}@media (max-width:560px){.loading-label{top:20px;left:20px}.loading-counter{bottom:22px;right:20px}.portfolio-logo{width:34px;height:34px}.portfolio-nav nav{gap:0}.say-hi b{display:none}.hero-actions,.button{width:100%}.button{justify-content:center}.section-inner{width:min(100% - 28px,1200px)}.project-card{border-radius:24px;min-height:310px}.project-meta{display:grid}.route-buttons,.summary-counts{grid-template-columns:minmax(0,1fr)}.constellation-field{border-radius:26px;height:500px}.constellation-cluster strong{font-size:1.05rem}.constellation-core{width:48px;height:48px;font-size:.92rem}.constellation-game-link{min-height:38px;padding:0 14px;font-size:.74rem;top:16px;right:16px}.constellation-detail{width:calc(100% - 32px);bottom:16px}.gateway-game-section{padding-top:68px}.gateway-game-copy{gap:12px}.gateway-game-copy h2{font-size:clamp(2.85rem,14vw,3.55rem)}.gateway-game-copy p{font-size:.95rem;line-height:1.55}.gateway-status{flex-wrap:wrap;min-height:42px;padding:8px 14px;font-size:.62rem}.gateway-playfield{min-height:200px}.gateway-signal{padding:14px 18px}.signal-card{border-radius:22px;gap:12px;min-height:154px;padding:20px}.signal-card h3{font-size:clamp(1.55rem,9vw,2.15rem)}.route-buttons button{border-radius:20px;min-height:78px}.summary-actions{display:grid}.summary-actions a,.summary-actions button{width:100%}.stat-card{padding:24px}.footer-actions,.footer-actions .email-button{width:100%}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
