.site-header,.site-footer,.hero,.section{max-width:var(--content-max-width);margin:0 auto}.site-header,.site-footer{padding:var(--space-lg) var(--space-xl);justify-content:space-between;align-items:center;display:flex}.site-header{-webkit-backdrop-filter:blur(18px)saturate(145%);backdrop-filter:blur(18px)saturate(145%);color:#f8fbff;max-width:min(92vw,46rem);left:50%;top:max(.8rem, env(safe-area-inset-top));z-index:10;background:#1720338a;border:1px solid #ffffff4d;border-radius:999px;gap:.15rem;padding:.35rem .5rem;position:fixed;transform:translate(-50%);box-shadow:0 1rem 3rem #05091247}.site-header--disabled{opacity:0}.site-header--disabled a{cursor:progress;pointer-events:none}.site-header .wordmark,.site-header .navigation-list a{color:#f8fbff}.site-header .wordmark{border-radius:var(--radius-sm);font-family:inherit;font-size:inherit;font-weight:inherit;letter-spacing:normal;align-items:center;min-block-size:2.5rem;padding-inline:.8rem;display:inline-flex}.site-header .navigation-list{gap:.15rem}.site-header nav{align-items:center;display:flex}.site-header__mode-toggle{cursor:pointer;opacity:0;pointer-events:none;background:#08101dc7;border:1px solid #d2e4f55c;border-radius:50%;flex:0 0 0;justify-content:center;align-items:center;width:0;max-width:0;height:2.5rem;margin-left:0;padding:0;transition:flex-basis .34s cubic-bezier(.22,1,.36,1),max-width .34s cubic-bezier(.22,1,.36,1),margin-left .34s cubic-bezier(.22,1,.36,1),opacity .22s,transform .34s cubic-bezier(.22,1,.36,1),box-shadow .22s;display:inline-flex;overflow:hidden;transform:scale(.78);box-shadow:0 .35rem 1rem #00000038,inset 0 1px #ffffff26}.site-header__mode-toggle--visible{opacity:1;pointer-events:auto;flex-basis:2.5rem;width:2.5rem;max-width:2.5rem;margin-left:.3rem;transform:scale(1)}.site-header__mode-toggle-track{width:1.12rem;height:1.12rem;position:relative;overflow:hidden}.site-header__mode-toggle-viewport{width:1.12rem;height:1.12rem;display:block;overflow:hidden}.site-header__mode-toggle-rail{grid-template-rows:1.12rem 1.12rem;transition:transform .36s cubic-bezier(.22,1.35,.36,1);display:grid;transform:translateY(-1.12rem)}.site-header__mode-toggle-day,.site-header__mode-toggle-night{width:1.12rem;height:1.12rem;padding:0}.site-header__mode-toggle-day{color:#ffd54f}.site-header__mode-toggle-night{color:#5daeff}.site-header__mode-toggle--day .site-header__mode-toggle-rail{transform:translateY(0)}.site-header__mode-toggle--night{box-shadow:0 .35rem 1rem #00000038,inset 0 1px #ffffff26,0 0 .7rem #5daeff6b}.site-header__mode-toggle:hover,.site-header__mode-toggle:focus-visible{transform:scale(1.08)}.site-header__mode-toggle--night:hover,.site-header__mode-toggle--night:focus-visible{box-shadow:0 .35rem 1rem #00000038,inset 0 1px #ffffff26,0 0 1rem #5daeffb8}.site-header__mode-toggle--day{background:radial-gradient(circle at 50% 42%,#fffdf4 0 20%,#faedcf 53%,#e5bf6c 100%);border-color:#fff4cbd1;box-shadow:0 0 0 .1rem #ffedb142,0 .28rem .8rem #7045052e,inset 0 1px #ffffffd6,0 0 .72rem #ffcc4a8a,0 0 1.65rem #ffbe2d57}.site-header__mode-toggle--day:hover,.site-header__mode-toggle--day:focus-visible{box-shadow:0 0 0 .13rem #fff3c06b,0 .32rem .9rem #70450533,inset 0 1px #fff,0 0 1rem #ffd54fad,0 0 2.3rem #ffb92275}.site-header__mode-toggle:focus-visible{outline-offset:.2rem;outline:.18rem solid #fff}.site-header .navigation-list a{min-block-size:2.5rem;padding-inline:.8rem}.site-header .navigation-list a:hover,.site-header .navigation-list a:focus-visible,.site-header .navigation-list a.is-active,.site-header .wordmark:hover,.site-header .wordmark:focus-visible{background:#ffffff2e}.site-header .navigation-list a.is-active{color:#fff;box-shadow:inset 0 -2px #9fd2ff}.wordmark,.navigation-list a,.site-footer a{color:var(--color-ink);text-decoration:none}.wordmark{font-family:var(--font-display);font-weight:700}.navigation-list,.tag-list{gap:var(--space-sm);flex-wrap:wrap;list-style:none;display:flex}.navigation-list a{border-radius:var(--radius-sm);min-block-size:var(--touch-target-size);padding:var(--space-xs) var(--space-sm);align-items:center;display:inline-flex}.navigation-list a:hover,.navigation-list a:focus-visible{background:var(--color-leaf-soft)}.scene-experience{overscroll-behavior:none;height:235vh;position:relative}.scene-experience__sticky{z-index:5;background:#b9dff4;height:100dvh;position:fixed;inset:0;overflow:hidden}.scene-experience__sticky--released{display:none}.christmas-playroom-scene{opacity:0;pointer-events:none;z-index:0;background:#101827;transition:opacity .68s ease-out;position:fixed;inset:0;overflow:hidden}.christmas-playroom-scene[data-active=true]{opacity:1;pointer-events:auto}.playroom-camera-editing .christmas-playroom-scene{z-index:6}.playroom-camera-editing .site-header{pointer-events:none}.playroom-camera-readout{color:#edf5ff;pointer-events:auto;text-shadow:0 1px 5px #000;z-index:2;background:#0c1424d1;border:1px solid #c6dcff6b;border-radius:10px;gap:.2rem;padding:.65rem .75rem;font:.72rem/1.45 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;display:grid;position:fixed;bottom:1.25rem;left:1.25rem}.playroom-camera-readout strong{font-family:inherit;font-size:.76rem}.playroom-camera-readout span{color:#c4d4e9}.playroom-camera-readout pre{white-space:pre;margin:.25rem 0 0}.christmas-playroom-scene canvas{filter:blur(.25px);transform-origin:50%;width:100%;height:100svh;display:block;transform:scale(1.012)}.christmas-playroom-scene[data-scene-mode=day] canvas{filter:blur(.25px)}.portfolio-content{z-index:1;position:relative}.playroom-reveal{pointer-events:none;scroll-snap-align:start;min-height:100svh}.scene-experience canvas{touch-action:pan-y;width:100%;height:100dvh;display:block}.scene-experience[data-scene-mode=day] canvas{filter:blur(.16px)}.scene-scroll-cue{bottom:max(1.2rem, env(safe-area-inset-bottom));pointer-events:none;z-index:3;gap:.08rem;transition:opacity .18s ease-out;display:grid;position:absolute;left:50%;transform:translate(-50%)}.scene-scroll-cue i{filter:drop-shadow(0 .2rem .45rem #0000008c);border-bottom:2px solid #f8fbff;border-right:2px solid #f8fbff;width:.65rem;height:.65rem;display:block;transform:rotate(45deg)}.scene-scroll-cue i:first-child{animation:1.45s ease-in-out infinite scroll-chevron}.scene-scroll-cue i:last-child{animation:1.45s ease-in-out .16s infinite scroll-chevron}@keyframes scroll-chevron{0%,to{opacity:.35;transform:translateY(-.14rem)rotate(45deg)}50%{opacity:1;transform:translateY(.12rem)rotate(45deg)}}.scene-mode-cue{pointer-events:none;z-index:3;width:11.5rem;height:4.4rem;transition:opacity .18s ease-out;animation:1.23s ease-in-out infinite mode-cue-float;position:absolute;bottom:calc(100% + .45rem);right:.01rem}@keyframes mode-cue-float{0%,to{transform:translateY(0)}50%{transform:translateY(-.5rem)}}.scene-mode-cue--dismissing{animation:.56s cubic-bezier(.24,.78,.2,1) forwards mode-cue-throw}@keyframes mode-cue-throw{0%{opacity:1;transform:translate(0)rotate(0)}30%{opacity:1;transform:translate(-.35rem,.2rem)rotate(-7deg)}to{opacity:0;transform:translate(24vw,-18vh)rotate(34deg)scale(.72)}}.scene-mode-cue span{color:#f8fbff;font-family:var(--font-display);letter-spacing:.01em;text-shadow:0 .2rem .45rem #0000008c;font-size:clamp(.68rem,1.1vw,.82rem);font-weight:700;line-height:1.2;position:absolute;bottom:2.8rem;left:.3rem}.scene-mode-cue svg{fill:none;filter:drop-shadow(0 .2rem .45rem #0000008c);stroke:#f8fbff;stroke-linecap:round;stroke-linejoin:round;stroke-width:3px;width:5rem;height:4.4rem;position:absolute;bottom:0;right:0;overflow:visible}.scene-experience__curtain{pointer-events:none;background:#fff;height:100dvh;position:absolute;inset:0}.scene-experience[data-scene-mode=night] .scene-experience__curtain{background:#0b1220}.scene-loader{z-index:4;background:#71899a;justify-content:center;align-items:center;display:grid;position:absolute;inset:0}.playroom-loader{pointer-events:none;z-index:5;background:#08111d;justify-content:center;align-items:center;transition:opacity .42s;display:grid;position:fixed;inset:0}.playroom-loader--dismissing{opacity:0}.scene-loader__boxes{--duration:.8s;--size:32px;height:calc(var(--size) * 2);margin-top:calc(var(--size) * -1.5);transform-origin:50%;transform-style:preserve-3d;width:calc(var(--size) * 3);position:relative;transform:rotateX(60deg)rotate(45deg)}.scene-loader__boxes i{height:var(--size);transform-style:preserve-3d;width:var(--size);position:absolute;top:0;left:0}.scene-loader__boxes i:first-child{animation:loader-box-one var(--duration) linear infinite;transform:translate(100%)}.scene-loader__boxes i:nth-child(2){animation:loader-box-two var(--duration) linear infinite;transform:translateY(100%)}.scene-loader__boxes i:nth-child(3){animation:loader-box-three var(--duration) linear infinite;transform:translate(100%,100%)}.scene-loader__boxes i:nth-child(4){animation:loader-box-four var(--duration) linear infinite;transform:translate(200%)}.scene-loader__boxes i>b{--background:#b9dff4;--bottom:auto;--left:auto;--right:auto;--rotate-x:0deg;--rotate-y:0deg;--top:auto;--translate-z:calc(var(--size) / 2);background:var(--background);bottom:var(--bottom);height:100%;left:var(--left);right:var(--right);top:var(--top);transform:rotateY(var(--rotate-y)) rotateX(var(--rotate-x)) translateZ(var(--translate-z));width:100%;position:absolute}.scene-loader__boxes i>b:first-child{--left:0;--top:0}.scene-loader__boxes i>b:nth-child(2){--background:#78a8c0;--right:0;--rotate-y:90deg}.scene-loader__boxes i>b:nth-child(3){--background:#9dc8dc;--rotate-x:-90deg}.scene-loader__boxes i>b:nth-child(4){--background:#71899a;--left:0;--top:0;--translate-z:calc(var(--size) * -3);opacity:.38}@keyframes loader-box-one{0%,50%{transform:translate(100%)}to{transform:translate(200%)}}@keyframes loader-box-two{0%{transform:translateY(100%)}50%{transform:translate(0)}to{transform:translate(100%)}}@keyframes loader-box-three{0%,50%{transform:translate(100%,100%)}to{transform:translateY(100%)}}@keyframes loader-box-four{0%{transform:translate(200%)}50%{transform:translate(200%,100%)}to{transform:translate(100%,100%)}}.scene-mode-switch{cursor:pointer;pointer-events:auto;align-self:stretch;width:2.25rem;height:auto;transition:opacity .18s;display:inline-flex;position:relative}.scene-mode-switch input{opacity:0;position:absolute;inset:0}.scene-mode-switch input:focus-visible+.scene-mode-switch__toggle{outline-offset:.2rem;outline:.18rem solid #fff}.scene-mode-switch__toggle{--mode-switch-gutter:.28rem;--mode-switch-icon-size:1.7rem;padding:var(--mode-switch-gutter);background:#08101dc7;border:1px solid #d2e4f55c;border-radius:1.2rem;flex-direction:column;justify-content:space-between;align-items:center;width:100%;display:flex;position:relative;box-shadow:0 .35rem 1rem #00000038,inset 0 1px #ffffff26}.scene-mode-switch__toggle:after{content:"";height:var(--mode-switch-icon-size);left:50%;top:calc(100% - var(--mode-switch-gutter) - var(--mode-switch-icon-size) + 1px);width:var(--mode-switch-icon-size);background:linear-gradient(145deg,#ffffff7a,#8fbff247);border-radius:50%;transition:top .46s cubic-bezier(.22,1.35,.36,1),background .32s,box-shadow .32s;position:absolute;transform:translate(-50%);box-shadow:0 .18rem .45rem #00000040}.scene-mode-switch input:checked+.scene-mode-switch__toggle:after{top:calc(var(--mode-switch-gutter) + 1px);background:linear-gradient(145deg,#fff7b6b3,#ffbe3959);box-shadow:0 0 .75rem #ffd54f85}.scene-mode-switch__night,.scene-mode-switch__day{flex:0 0 var(--mode-switch-icon-size);height:var(--mode-switch-icon-size);width:var(--mode-switch-icon-size);border-radius:50%;padding:.26rem;transition:background .22s,color .22s,transform .22s;display:block}.scene-mode-switch__night{color:#5daeff}.scene-mode-switch__day{color:#ffd54f;z-index:1;position:relative}.scene-mode-switch__night{z-index:1;position:relative}.scene-mode-switch input:not(:checked)+.scene-mode-switch__toggle .scene-mode-switch__night,.scene-mode-switch input:checked+.scene-mode-switch__toggle .scene-mode-switch__day{background:#ffffff2e;box-shadow:0 0 .7rem}.scene-experience__identity-copy{justify-items:end;display:grid}.scene-experience__identity{color:#f8f5ee;pointer-events:none;text-align:right;text-shadow:0 .25rem 1.5rem #000000a8;z-index:2;align-items:flex-end;gap:.75rem;max-width:min(45vw,35rem);transition:opacity .18s ease-out;display:flex;position:absolute;bottom:clamp(1.25rem,7vh,4.5rem);right:clamp(1.25rem,5vw,5.5rem)}.scene-experience__identity p{letter-spacing:.14em;text-transform:uppercase;margin:0 0 .45rem;font-size:clamp(.62rem,1.2vw,.82rem);font-weight:700}.scene-experience__identity h2{-webkit-text-stroke:.32px #0426377a;color:#0a2c3d;font-family:var(--font-display);letter-spacing:normal;paint-order:stroke fill;text-shadow:0 0 1.45rem #53caffd1,0 0 2.6rem #41aeeb7a,0 .08rem .2rem #ffffff85;white-space:nowrap;margin:0;font-size:clamp(2rem,5vw,3.25rem);font-weight:700;line-height:normal}body[data-portfolio-mode=night] .scene-experience__identity h2{-webkit-text-stroke-color:#dcf7ff80;color:#f1f8ff;text-shadow:0 0 1.55rem #4ad1ffeb,0 0 2.75rem #2a86ff94,0 .08rem .2rem #00040cad}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.hero{background:linear-gradient(145deg, var(--color-leaf-soft), var(--color-sky), var(--color-sun));border-radius:var(--radius-lg);isolation:isolate;margin-top:var(--space-lg);padding:var(--space-3xl) var(--space-xl);position:relative;overflow:hidden}.hero>:not(.hero-visual){z-index:1;position:relative}.eyebrow{color:var(--color-ink-muted);letter-spacing:.08em;text-transform:uppercase;font-size:.875rem;font-weight:700}h1,h2,h3{font-family:var(--font-display)}h1{margin-top:var(--space-sm);font-size:clamp(2.75rem,8vw,5.5rem);line-height:.95}h2{font-size:clamp(2rem,5vw,3.25rem)}h3{font-size:1.25rem}.hero-copy{margin:var(--space-lg) 0;max-width:38rem;font-size:1.125rem;line-height:1.6}.button-link{background:var(--color-ink);border-radius:var(--radius-sm);color:var(--color-surface-raised);padding:var(--space-sm) var(--space-md);transition:transform var(--duration-fast) ease;font-weight:700;text-decoration:none;display:inline-block}.button-link:hover,.button-link:focus-visible{transform:translateY(-.125rem)}.contact-heading__fun{padding-bottom:.1em;display:inline-block;position:relative}.contact-heading__fun:after{content:"";background:url("data:image/svg+xml,%3Csvg viewBox='0 0 120 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2 7.7C33 5.6 79 4.8 118 2.4v5.8C82 8.8 40 10.9 2 13z' fill='%230a2c3d'/%3E%3C/svg%3E") 50%/100% 100% no-repeat;width:calc(100% + .1em);height:.29em;position:absolute;bottom:-.015em;left:-.05em;transform:rotate(-1.2deg)}body[data-portfolio-mode=night] .contact-heading__fun:after{filter:brightness(0)invert()}.contact-primary{text-align:center;justify-items:center;display:grid}.contact-copy{margin:var(--space-sm) 0 var(--space-lg);font-size:clamp(1.05rem,2vw,1.25rem);line-height:1.5}.contact-form-trigger{cursor:pointer;border:0;transition:max-height .3s,opacity .18s,padding .3s,transform .3s}.contact-form-trigger--hidden{opacity:0;pointer-events:none;max-height:0;padding-block:0;overflow:hidden;transform:translateY(-.5rem)}.contact-form-shell{opacity:0;visibility:hidden;grid-template-rows:0fr;width:min(100%,38rem);margin-top:0;transition:grid-template-rows .36s,margin-top .36s,opacity .22s,transform .36s,visibility 0s linear .36s;display:grid;transform:translateY(-.75rem)}.contact-form-shell--open{margin-top:var(--space-lg);opacity:1;visibility:visible;grid-template-rows:1fr;transition:grid-template-rows .36s,margin-top .36s,opacity .26s 80ms,transform .36s,visibility;transform:translateY(0)}.contact-form{gap:var(--space-md);text-align:left;width:min(100%,38rem);max-width:38rem;min-height:0;display:grid;overflow:hidden}.contact-email-shell{opacity:0;grid-template-rows:0fr;transition:grid-template-rows .32s,opacity .18s,transform .32s;display:grid;overflow:hidden;transform:translateY(-.75rem)}.contact-email-shell>.contact-field{min-height:0;overflow:hidden}.contact-email-shell--visible{opacity:1;grid-template-rows:1fr;transform:translateY(0)}.contact-field{gap:.45rem;font-weight:700;display:grid}.contact-field input,.contact-field textarea{background:var(--color-surface-raised);border:.125rem solid var(--color-outline);border-radius:var(--radius-sm);color:var(--color-ink);font:inherit;resize:vertical;min-height:3rem;padding:.75rem .875rem}.contact-field textarea{min-height:9rem;line-height:1.5}.contact-field input:focus-visible,.contact-field textarea:focus-visible{border-color:var(--color-blue);outline:.2rem solid color-mix(in srgb, var(--color-blue), transparent 72%);outline-offset:.12rem}.contact-anonymous-row{justify-content:space-between;align-items:center;gap:.9rem;display:flex}.contact-anonymous-label{font-weight:700}.contact-switch{width:5em;height:2.5em;font-size:.9rem;display:inline-block;position:relative}.contact-switch input{cursor:pointer;opacity:0;z-index:1;width:100%;height:100%;margin:0;position:absolute;inset:0}.contact-switch__toggle{box-shadow:none;cursor:pointer;bottom:0;text-transform:uppercase;background:#171717;border-radius:999px;padding:.2em;position:absolute;inset:0;overflow:hidden}.contact-switch__left,.contact-switch__right{background:#f3f3f3;justify-content:center;align-items:center;width:calc(50% - .2em);height:auto;transition:transform .15s,color .15s;display:flex;position:absolute;top:.2em;bottom:.2em}.contact-switch__left{color:#373737;transform-origin:100%;border-radius:999px 0 0 999px;left:.2em;transform:rotateX(10deg)}.contact-switch__right{color:#cecece;transform-origin:0;border-radius:0 999px 999px 0;right:.2em;transform:rotateX(10deg)rotateY(-45deg)}.contact-switch input:checked+.contact-switch__toggle .contact-switch__left{color:#cecece;transform:rotateX(10deg)rotateY(45deg)}.contact-switch input:checked+.contact-switch__toggle .contact-switch__right{color:#487bdb;transform:rotateX(10deg)}.contact-switch input:focus-visible+.contact-switch__toggle{outline:.2rem solid var(--color-blue);outline-offset:.25rem}.contact-form-hint{color:var(--color-ink-muted);margin:calc(var(--space-xs) * -1) 0 0;font-size:.9rem;line-height:1.5}.contact-form-actions{align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.contact-submit{color:#fff;cursor:pointer;background:#173c30;border:0}.contact-submit:hover,.contact-submit:focus-visible{background:#0f2d23}body[data-portfolio-mode=night] .contact-submit{color:#0a2c3d;background:#fff}body[data-portfolio-mode=night] .contact-submit:hover,body[data-portfolio-mode=night] .contact-submit:focus-visible{background:#e9f4fb}.contact-cancel{color:var(--color-ink-muted);cursor:pointer;font:inherit;padding:var(--space-sm);text-underline-offset:.2em;background:0 0;border:0;font-weight:700;text-decoration:underline}.contact-cancel:hover,.contact-cancel:focus-visible{color:var(--color-blue)}.contact-submit:disabled{cursor:wait;opacity:.68}.contact-form-status{color:#1e6f43;margin:0;font-weight:700}.contact-form-status--error{color:#a52d2d}.contact-social-panel{margin:var(--space-xl) calc(var(--space-xl) * -1) calc(var(--space-3xl) * -1);padding:var(--space-md) var(--space-xl) 3.5rem;text-align:center;justify-items:center;display:grid}.contact-social-panel p{margin:0 0 .85rem}.contact-links{align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.contact-tooltip{z-index:2}.contact-tooltip .simple-tooltip__label{transform-origin:top;top:calc(100% + .45rem);bottom:auto}.contact-social-link{color:var(--color-ink);height:2.7rem;transition:transform var(--duration-fast) ease, color var(--duration-fast) ease;background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;width:2.7rem;font-size:1.7rem;display:inline-flex}.contact-social-link:hover,.contact-social-link:focus-visible{color:var(--color-blue);transform:translateY(-.125rem)}.section{padding:var(--space-3xl) var(--space-xl)}.technical-placeholder{margin:var(--space-xl) 0 0;max-width:52rem;line-height:1.7}.project-grid{gap:var(--space-lg);margin-top:var(--space-xl);grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));display:grid}#experience{scroll-snap-align:start;min-height:calc(100svh + clamp(3rem,9vh,5.5rem));padding-top:clamp(3rem,9vh,5.5rem)}#projects{min-height:calc(100svh + clamp(3rem,9vh,5.5rem));padding-top:clamp(3rem,9vh,5.5rem);padding-bottom:max(var(--space-3xl), 14vh);scroll-snap-align:start;opacity:0;transition:opacity .52s ease-out,transform .52s ease-out;transform:translateY(1rem)}body.scene-handoff-complete #projects{opacity:1;transform:translateY(0)}.project-card,.experience-card,.skills{background:var(--color-surface-raised);border:.125rem solid var(--color-outline);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:var(--space-lg)}.project-card p,.experience-card ul,.skills p{margin-top:var(--space-sm);line-height:1.6}.tag-list{margin-top:var(--space-md)}.tag-list li{background:var(--color-lavender);border-radius:var(--radius-sm);padding:var(--space-2xs) var(--space-xs);font-size:.875rem}.experience-list{gap:var(--space-lg);margin-top:var(--space-xl);display:grid}.experience-card ul{padding-left:var(--space-lg)}.experience-card li+li{margin-top:var(--space-sm)}.skills,.section>.button-link{margin-top:var(--space-lg)}.site-footer{border-top:.125rem solid var(--color-outline);color:var(--color-ink-muted);gap:var(--space-md);flex-wrap:wrap}.project-grid:has(.aceternity-focus-card:hover) .aceternity-focus-card:not(:hover){filter:blur(2px)saturate(.65);opacity:.52;transform:scale(.985)}.aceternity-focus-card{background:linear-gradient(145deg,#fff,#f2f6ff);border:1px solid #1d304a24;min-height:17rem;transition:filter .18s,opacity .18s,transform .18s,box-shadow .18s;position:relative;overflow:hidden}.aceternity-focus-card:before{content:"";pointer-events:none;background:radial-gradient(circle at 100% 0,#56a0ff33,#0000 47%);position:absolute;inset:0}.aceternity-focus-card:hover{transform:translateY(-.35rem);box-shadow:0 1.5rem 3rem #23457129}.project-card>*{z-index:1;position:relative}.project-card__eyebrow,.experience-commit__meta{color:#337eb8;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;font-size:.75rem}.project-card__arrow{bottom:var(--space-lg);color:#337eb8;right:var(--space-lg);font-size:1.45rem;position:absolute}.experience-timeline{margin:var(--space-xl) 0 0 var(--space-sm);padding-left:clamp(1.7rem,5vw,3rem);position:relative}.experience-timeline:before{content:"";border-left:3px dotted #b9c4d3;position:absolute;top:.8rem;bottom:1rem;left:0;-webkit-mask-image:linear-gradient(#000 0% 78%,#00000080 90%,#0000 100%);mask-image:linear-gradient(#000 0% 78%,#00000080 90%,#0000 100%)}.experience-commit{margin-bottom:var(--space-lg);padding:var(--space-lg);background:linear-gradient(100deg,#fff,#f7f9fc);border:1px solid #e1e7ef;border-radius:1rem;position:relative;box-shadow:0 .65rem 1.5rem #1d304a12}.experience-node{color:#2370a9;background:#fff;font-size:1.6rem;line-height:1;position:absolute;top:50%;left:calc(-1*clamp(1.7rem,5vw,3rem) - .76rem);transform:translateY(-50%)}.experience-extra{max-height:6.25rem;transition:max-height .48s cubic-bezier(.22,.78,.28,1),-webkit-mask-image .18s,mask-image .18s;position:relative;overflow:hidden;-webkit-mask-image:linear-gradient(#000 0% 30%,#000000d1 58%,#00000047 82%,#0000 100%);mask-image:linear-gradient(#000 0% 30%,#000000d1 58%,#00000047 82%,#0000 100%)}.experience-extra:before{background:linear-gradient(to bottom, transparent 0%, color-mix(in srgb, var(--color-surface) 38%, transparent) 42%, var(--color-surface) 100%);content:"";pointer-events:none;z-index:2;width:.3rem;height:100%;transition:opacity .22s;position:absolute;top:0;left:calc(-1*clamp(1.7rem,5vw,3rem) - .12rem)}.experience-extra--expanded{max-height:none;overflow:visible;-webkit-mask-image:linear-gradient(#000,#000);mask-image:linear-gradient(#000,#000)}.experience-extra--expanded:before{opacity:0}.experience-disclosure-toggle{color:#075f98;cursor:pointer;margin:-2.5rem auto var(--space-lg);z-index:3;background:linear-gradient(145deg,#f0faffe0,#9fd3ebb8);border:1px solid #ffffffdb;border-radius:999px;flex-direction:column;justify-content:center;align-items:center;gap:.02rem;width:2.75rem;min-height:2.75rem;transition:background .18s,border-color .18s,box-shadow .18s,color .18s,transform .18s cubic-bezier(.22,.78,.28,1);display:flex;position:relative;box-shadow:0 .35rem 1rem #075f9838,inset 0 1px #ffffffc7}.experience-disclosure-toggle:hover,.experience-disclosure-toggle:focus-visible{color:#f4fcff;background:#0875aa;border-color:#e8f9ff;outline:0;transform:translateY(-.18rem)scale(1.06);box-shadow:0 0 0 .22rem #0875aa40,0 .75rem 1.6rem #0875aa85}.experience-disclosure-toggle:active{transform:translateY(.06rem)scale(.94);box-shadow:0 0 0 .15rem #0875aa38,0 .25rem .6rem #0875aa61}.experience-disclosure-toggle i{border-bottom:.16rem solid;border-right:.16rem solid;width:.58rem;height:.58rem;display:block;transform:rotate(45deg)}.experience-disclosure-toggle i:first-of-type{animation:1.4s ease-in-out infinite experience-chevron-bob}.experience-disclosure-toggle i:last-of-type{animation:1.4s ease-in-out .15s infinite experience-chevron-bob}.experience-disclosure-toggle--expanded{margin-top:calc(var(--space-xs) * -1);transform:rotate(180deg)}.experience-disclosure-toggle--expanded:hover,.experience-disclosure-toggle--expanded:focus-visible{transform:rotate(180deg)translateY(-.18rem)scale(1.06)}.experience-disclosure-toggle--expanded:active{transform:rotate(180deg)translateY(.06rem)scale(.94)}body[data-portfolio-mode=night] .experience-disclosure-toggle:hover,body[data-portfolio-mode=night] .experience-disclosure-toggle:focus-visible{color:#071b27;background:#1597ca;border-color:#d7f6ff}@keyframes experience-chevron-bob{0%,to{opacity:.42;translate:0 -.1rem}50%{opacity:1;translate:0 .1rem}}.experience-commit__meta{align-items:center;gap:var(--space-sm);justify-content:space-between;display:flex}.experience-commit__meta time strong{font-weight:800}.experience-commit h3{margin:var(--space-xs) 0 var(--space-sm)}.experience-commit h3 span{color:#9da9b7}.experience-commit__summary{margin:0;padding-left:1.1rem;line-height:1.6}.experience-commit__summary li+li{margin-top:var(--space-xs)}.role-skill-list,.skill-icon-list{gap:var(--space-xs);margin:var(--space-md) 0 0;flex-wrap:wrap;padding:0;list-style:none;display:flex}.simple-tooltip{display:inline-flex;position:relative}.tech-icon{color:#2370a9;cursor:default;background:#f4f8ff;border:1px solid #d5e2f1;border-radius:.6rem;justify-content:center;align-items:center;width:2.25rem;height:2.25rem;transition:border-color .15s,box-shadow .15s,transform .15s;display:inline-flex}.tech-icon svg,.tech-icon img{object-fit:contain;width:1.2rem;max-width:1.2rem;height:1.2rem}.tech-icon__text{letter-spacing:-.04em;font-size:.62rem;font-weight:800}.tech-icon:hover,.tech-icon:focus-visible{color:inherit;border-color:#2b6b9f;transform:translateY(-.12rem);box-shadow:0 0 0 .2rem #2b6b9f33,0 .35rem .7rem #17283d24}.simple-tooltip__label{color:#fff;opacity:0;pointer-events:none;transform-origin:bottom;visibility:hidden;white-space:nowrap;will-change:opacity, transform;z-index:8;background:#17283d;border-radius:.35rem;padding:.28rem .42rem;font-size:.72rem;position:absolute;bottom:calc(100% + .35rem);left:50%;transform:translate(-50%)translateY(.3rem)rotate(-4deg)}.simple-tooltip:hover .simple-tooltip__label,.simple-tooltip:focus-within .simple-tooltip__label{opacity:1;visibility:visible;animation:.64s cubic-bezier(.22,.78,.28,1) both tooltip-swing-settle}@keyframes tooltip-swing-settle{0%{opacity:0;transform:translate(-50%)translateY(.26rem)rotate(-4deg)}46%{opacity:1;transform:translate(-50%)translateY(-.02rem)rotate(1.7deg)}72%{opacity:1;transform:translate(-50%)translateY(0)rotate(-.55deg)}to{opacity:1;transform:translate(-50%)translateY(0)rotate(0)}}@media (prefers-reduced-motion:reduce){.simple-tooltip:hover .simple-tooltip__label,.simple-tooltip:focus-within .simple-tooltip__label{animation:none;transform:translate(-50%)}}.company-icon{flex:none;font-size:1.7rem;line-height:1;display:inline-flex}.company-icon svg,.company-icon img{width:1.7rem;height:1.7rem}.company-icon img{object-fit:contain;border-radius:.32rem}.experience-commit__heading{align-items:center;gap:var(--space-sm);display:flex}.experience-commit__heading h3{margin:var(--space-xs) 0 var(--space-sm)}.experience-commit__heading .simple-tooltip{margin-bottom:var(--space-sm)}.skills-grid{gap:var(--space-lg);margin-top:var(--space-xl);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.skill-group:last-child{grid-column:1/-1}.skill-group{padding:var(--space-lg);background:#fff;border:1px solid #e1e7ef;border-radius:1rem}.skill-icon-list li{align-items:center;gap:var(--space-xs);display:flex}.skill-icon-list li>span:last-child{font-size:.875rem}.contact-copy{max-width:42rem;font-size:clamp(1.05rem,2vw,1.3rem);line-height:1.65}@media (width<=48rem){.scene-experience__sticky,.scene-experience canvas,.scene-experience__curtain{height:100svh}.site-header{flex-direction:row;align-items:center;padding-left:.45rem}.site-header .wordmark{min-block-size:2.2rem;padding-inline:.5rem;font-size:.75rem;display:inline-flex}.site-header .navigation-list{flex-wrap:nowrap;gap:0}.site-header .navigation-list a{min-block-size:2.2rem;padding-inline:.5rem;font-size:.75rem}.skills-grid{grid-template-columns:1fr}.skill-group:last-child{grid-column:auto}.scene-scroll-cue{bottom:max(1.25rem, env(safe-area-inset-bottom));left:1.5rem;transform:none}.scene-experience__identity{max-width:86vw;bottom:1.25rem;right:1rem}}@media (width>=48rem){.hero,.section{padding-left:var(--space-2xl);padding-right:var(--space-2xl)}}body[data-portfolio-mode=night] .aceternity-focus-card,body[data-portfolio-mode=night] .experience-commit,body[data-portfolio-mode=night] .skill-group{color:var(--color-ink);background:linear-gradient(145deg,#152336,#101a29);border-color:#30465f}body[data-portfolio-mode=night] .tech-icon{color:#2370a9;background:#f4f8ff;border-color:#d5e2f1}body[data-portfolio-mode=night] .tech-icon:hover,body[data-portfolio-mode=night] .tech-icon:focus-visible{color:inherit;background:#f4f8ff;border-color:#2b6b9f;box-shadow:0 0 0 .2rem #72bced38,0 .35rem .7rem #00000038}.skills-showcase .tech-icon,.skills-showcase .tech-icon:hover,.skills-showcase .tech-icon:focus-visible{box-shadow:none!important;background:0 0!important;border:0!important;outline:none!important;transform:none!important}body[data-portfolio-mode=night] .skill-icon-list .tech-icon{box-shadow:none;background:0 0;border:0}body[data-portfolio-mode=night] .skill-icon-list .tech-icon:hover,body[data-portfolio-mode=night] .skill-icon-list .tech-icon:focus-visible{box-shadow:none;background:0 0;border-color:#0000;outline:none;transform:none}body[data-portfolio-mode=night] .tag-list li{color:#f5f1ff;background:#433b71}body[data-portfolio-mode=night] .experience-commit__meta{color:#8ecbff}body[data-portfolio-mode=night] .experience-node{color:#54abe0;text-shadow:0 0 .65rem #54abe05c;background:#0b1220}#skills,#contact{max-width:none;min-height:100svh;margin:0;padding-left:clamp(1.25rem,6vw,7rem);padding-right:clamp(1.25rem,8vw,10rem);position:relative}#contact{box-sizing:border-box;align-content:center;min-height:calc(100svh - 4.5rem);display:grid}#skills>h2,#contact>h2{color:#112f39;letter-spacing:-.055em;max-width:42rem;margin:0;font-size:clamp(2.35rem,4vw,4.2rem);line-height:.98}.skills-showcase__intro{color:#214955;align-items:baseline;gap:1rem;max-width:min(67rem,78vw);margin:1rem 0 1.75rem;display:flex}.skills-showcase__intro p,.contact-showcase__eyebrow,.skill-group__heading p{color:#086fb4;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.69rem;font-weight:800}.skills-showcase__intro span{font-size:.93rem;line-height:1.45}.skills-grid--glass{grid-template-columns:minmax(15rem,.78fr) minmax(20rem,1.22fr);align-items:stretch;gap:.85rem;max-width:min(72rem,84vw);margin:0;display:grid}.skill-group{-webkit-backdrop-filter:blur(8px);min-width:0;padding:var(--space-lg);background:linear-gradient(100deg,#ffffffe6,#f7f9fce6);border:1px solid #e1e7efe6;border-radius:1rem;box-shadow:0 .65rem 1.5rem #1d304a12}.skill-group--wide{grid-column:1/-1}.skill-group__heading{justify-content:space-between;align-items:center;gap:.7rem;display:flex}.skill-group h3{color:#112f39;margin:0;font-size:clamp(1.05rem,1.7vw,1.35rem)}.skill-icon-list{flex-wrap:wrap;gap:.55rem;margin:1rem 0 0;padding:0;list-style:none;display:flex}.skill-icon-list>li{min-width:0}.skill-icon-list .simple-tooltip{display:block}.skill-icon-list .tech-icon{box-shadow:none;background:0 0;border:0;border-radius:0;width:3.25rem;height:3.25rem;transition:none}.skill-icon-list .tech-icon:hover,.skill-icon-list .tech-icon:focus-visible{box-shadow:none;border-color:#0000;outline:none;transform:none}.skill-icon-list .tech-icon img{object-fit:contain;max-width:1.85rem;max-height:1.85rem}.contact-showcase{grid-template-columns:minmax(16rem,.68fr) minmax(21rem,1.32fr);align-items:stretch;gap:.9rem;max-width:min(67rem,80vw);margin-top:1.75rem;display:grid}.contact-showcase__lead,.contact-primary{-webkit-backdrop-filter:blur(18px)saturate(132%);background:linear-gradient(138deg,#e7f1f6b8,#afc5d075);border:1px solid #ffffffa8;border-radius:1.25rem;padding:clamp(1.15rem,2.2vw,1.65rem);box-shadow:0 1.25rem 2.8rem #1834442b,inset 0 1px #ffffff8c}.contact-showcase__lead{flex-direction:column;justify-content:space-between;display:flex}.contact-copy{color:#173e4b;text-align:left;max-width:21rem;margin:1rem 0 1.5rem;font-size:clamp(1.08rem,1.65vw,1.3rem)}.contact-primary{text-align:left;place-items:flex-start start}.contact-primary .button-link:not(.contact-submit){background:#086fb4;box-shadow:0 .5rem 1.5rem #086fb46b}.contact-primary .button-link:not(.contact-submit):hover,.contact-primary .button-link:not(.contact-submit):focus-visible{background:#063f69}.contact-form-shell,.contact-form{width:100%;max-width:none}.contact-form-shell--open{margin-top:.8rem}.contact-field{color:#173e4b}.contact-field input,.contact-field textarea{background:#fafdffb8;border-color:#ffffffbf}.contact-links{gap:.65rem}.contact-social-link{color:#163e4c;background:#f9fdffa8;border:1px solid #ffffffb8;border-radius:999px;box-shadow:0 .45rem 1rem #1c44581f}.contact-social-link:hover,.contact-social-link:focus-visible{color:#fff;background:#086fb4;transform:translateY(-.18rem)}body[data-portfolio-mode=night] #skills>h2,body[data-portfolio-mode=night] #contact>h2{color:#f1f8ff}body[data-portfolio-mode=night] .skills-showcase__intro,body[data-portfolio-mode=night] .contact-copy,body[data-portfolio-mode=night] .contact-field{color:#c8d9e9}body[data-portfolio-mode=night] .skill-group{-webkit-backdrop-filter:blur(8px);background:linear-gradient(145deg,#152336e6,#101a29e6);border-color:#30465fe6;box-shadow:0 .65rem 1.5rem #1d304a12}body[data-portfolio-mode=night] .contact-showcase__lead,body[data-portfolio-mode=night] .contact-primary{background:linear-gradient(135deg,#0f1f30d6,#1b3a4f8f);border-color:#a4dbf73d;border-radius:1.25rem;box-shadow:0 1.25rem 2.8rem #00040c6b,inset 0 1px #dcf6ff1a}body[data-portfolio-mode=night] .skill-group h3{color:#f1f8ff}body[data-portfolio-mode=night] .skill-icon-list .tech-icon,body[data-portfolio-mode=night] .contact-social-link{background:#ebf7ffeb;border-color:#ffffffc2}body[data-portfolio-mode=night] .contact-field input,body[data-portfolio-mode=night] .contact-field textarea{color:#eff8ff;background:#05111e9e;border-color:#acdcf542}@media (width<=720px){#skills,#contact{padding-left:1rem;padding-right:1rem}.skills-showcase__intro{flex-direction:column;align-items:flex-start;gap:.35rem;max-width:none}.skills-grid--glass,.contact-showcase{grid-template-columns:1fr;max-width:none}.skill-group--wide{grid-column:auto}.contact-copy{max-width:none}}@media (prefers-reduced-motion:reduce){.skill-icon-list .tech-icon,.contact-social-link{transition:none}}html,body{overflow-x:clip}#projects{max-width:none;margin:0;padding-left:clamp(.9rem,2vw,2rem);padding-right:clamp(.9rem,4vw,4rem)}.skill-icon-list .tech-icon{width:2.72rem;height:2.72rem}.role-skill-list .tech-icon{box-shadow:none;background:0 0;width:2.36rem;height:2.36rem}.skill-icon-list .tech-icon img,.skill-icon-list .tech-icon svg,.role-skill-list .tech-icon img,.role-skill-list .tech-icon svg{width:100%;max-width:none;height:100%;max-height:none}.role-skill-list .tech-icon img,.role-skill-list .tech-icon svg{box-sizing:border-box;padding:.12rem}.skill-group--wide{justify-self:start;width:min(100%,46rem);max-width:100%}.skills-showcase__note{color:#214955;max-width:46rem;margin:.85rem 0 0;font-size:.88rem;line-height:1.55}#contact{min-height:auto;padding-top:clamp(2.5rem,6vw,4rem);padding-bottom:clamp(2.5rem,6vw,5rem)}#contact>h2{max-width:31rem;font-size:clamp(2.25rem,3.4vw,3.5rem)}.contact-showcase{background:linear-gradient(138deg,#e7f1f6b8,#afc5d075);border:1px solid #ffffffa8;border-radius:1.2rem;max-width:min(35rem,48vw);margin-top:1.25rem;padding:clamp(1.2rem,2vw,1.55rem);display:block;box-shadow:0 1.25rem 2.8rem #1834442b,inset 0 1px #ffffff8c}.contact-showcase__lead,.contact-primary{-webkit-backdrop-filter:none;box-shadow:none;background:0 0;border:0;border-radius:0;padding:0}.contact-primary{margin-top:1.15rem;display:grid}.contact-quick-links{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.contact-quick-links__divider{background:color-mix(in srgb, currentColor 38%, transparent);width:1px;height:1.45rem}.contact-quick-links__copy{color:#173e4b;max-width:20rem;font-size:.92rem;line-height:1.35}.contact-quick-links .contact-form-trigger{min-height:2.55rem;margin:0;padding:.5rem .9rem}body[data-portfolio-mode=night] .contact-quick-links__copy{color:#d9ecf8}.contact-copy{max-width:31rem;margin:.7rem 0 1rem;font-size:1.02rem;line-height:1.55}body[data-portfolio-mode=night] .contact-showcase{background:linear-gradient(135deg,#0f1f30d6,#1b3a4f8f);border-color:#a4dbf73d;box-shadow:0 1.25rem 2.8rem #00040c6b,inset 0 1px #dcf6ff1a}body[data-portfolio-mode=night] .contact-showcase__lead,body[data-portfolio-mode=night] .contact-primary{box-shadow:none;background:0 0;border:0}.site-footer{-webkit-backdrop-filter:blur(10px)saturate(112%);border:1px solid #ffffffad;color:#173e4b;background:linear-gradient(128deg,#f6fbfea3,#cbe0eb70);border-inline:0;border-radius:0;max-width:none;min-height:0;margin:0;padding:.65rem clamp(.9rem,2vw,2rem);box-shadow:0 -.35rem 1.1rem #1d415426,inset 0 1px #ffffff94}body[data-portfolio-mode=night] .site-footer{-webkit-backdrop-filter:blur(10px)saturate(112%);color:#d6e7f2;background:linear-gradient(145deg,#152336b8,#101a298a);border-color:#6896b885;box-shadow:0 -.35rem 1.1rem #00040c61,inset 0 1px #dcf6ff1f}.site-footer p{margin:0}@media (width<=720px){.skill-group--wide,.contact-showcase{width:auto;max-width:none}#projects{padding-left:1rem;padding-right:1rem}}#experience.experience-showcase{max-width:none;margin:50svh 0 0;padding-left:clamp(.5rem,1.2vw,1.15rem);padding-right:1rem}.experience-showcase__content{max-width:min(57rem,73vw);margin:0}.experience-timeline{margin-left:0;padding-left:clamp(2.75rem,3.8vw,3.35rem)}.experience-timeline:before{left:clamp(.8rem,1.5vw,1.15rem)}.experience-node{left:calc(-1*clamp(2.75rem,3.8vw,3.35rem) + clamp(.8rem,1.5vw,1.15rem) - .55rem)}.experience-extra:before{left:calc(-1*clamp(2.75rem,3.8vw,3.35rem) + clamp(.8rem,1.5vw,1.15rem) - .12rem)}@media (width<=720px){#experience.experience-showcase{padding-left:.75rem;padding-right:.75rem}.experience-showcase__content{max-width:none}}#skills{padding-left:clamp(.5rem,1.2vw,1.15rem);padding-right:1rem}#skills>h2,.skills-showcase__intro{max-width:min(57rem,73vw)}@media (width<=720px){#skills{padding-left:.75rem;padding-right:.75rem}#skills>h2,.skills-showcase__intro,.skills-grid--glass,.skills-showcase__note{max-width:none}.skills-grid--glass,.skills-showcase__note{margin-left:0}}body[data-portfolio-mode=day] #experience,body[data-portfolio-mode=day] #skills,body[data-portfolio-mode=day] #contact{color:#102f40}body[data-portfolio-mode=day] .experience-showcase__intro p,body[data-portfolio-mode=day] .experience-showcase__intro span,body[data-portfolio-mode=day] .skills-showcase__intro,body[data-portfolio-mode=day] .skills-showcase__note{color:#31576b}body[data-portfolio-mode=day] .experience-showcase__intro h2,body[data-portfolio-mode=day] #skills>h2,body[data-portfolio-mode=day] #contact>h2{color:#0a2c3d}body[data-portfolio-mode=day] .experience-commit,body[data-portfolio-mode=day] .skill-group{-webkit-backdrop-filter:blur(10px)saturate(112%);background:linear-gradient(128deg,#f6fbfea3,#cbe0eb70);border-color:#ffffffad;box-shadow:0 1rem 2.4rem #1d415426,inset 0 1px #ffffff94}body[data-portfolio-mode=day] .contact-showcase{-webkit-backdrop-filter:blur(10px)saturate(112%);background:linear-gradient(128deg,#f6fbfeb8,#cbe0eb94);border-color:#ffffffb8;box-shadow:0 1rem 2.4rem #1d415426,inset 0 1px #ffffff9e}body[data-portfolio-mode=night] .experience-commit,body[data-portfolio-mode=night] .skill-group{-webkit-backdrop-filter:blur(10px)saturate(112%);background:linear-gradient(145deg,#152336b8,#101a298a);border-color:#6896b885;box-shadow:0 1rem 2.4rem #00040c61,inset 0 1px #dcf6ff1f}body[data-portfolio-mode=day] .experience-commit h3,body[data-portfolio-mode=day] .experience-commit__summary{color:#123547}body[data-portfolio-mode=day] .experience-commit h3 span{color:#7791a0}body[data-portfolio-mode=day] .experience-commit__meta,body[data-portfolio-mode=day] .skills-showcase__intro p,body[data-portfolio-mode=day] .skill-group__heading p,body[data-portfolio-mode=day] .contact-showcase__eyebrow{color:#075f98}body[data-portfolio-mode=day] .experience-timeline:before{border-color:#28658875}body[data-portfolio-mode=day] .experience-node{color:#075f98;text-shadow:0 0 .65rem #075f9833;background:#f4fafdeb}body[data-portfolio-mode=day] .tech-icon,body[data-portfolio-mode=day] .skill-icon-list .tech-icon{background:#f7fcffc7;border-color:#568eb242;box-shadow:0 .38rem .85rem #1d48601a,inset 0 1px #ffffffb8}body[data-portfolio-mode=day] .contact-copy{color:#224b60}body[data-portfolio-mode=day] .contact-social-link{color:#0b3d55;background:#f7fcffc7;border-color:#568eb242}.section-scene-continuity{position:relative}#experience.experience-showcase,#skills,#contact{padding-left:clamp(1rem,2vw,2rem)}.experience-timeline:before{border-left:3px dotted #336c8b9e;left:clamp(.8rem,1.5vw,1.15rem)}.experience-node{color:#0000;height:1.2rem;text-shadow:none;background:#ecf7fcbd;border:2px solid #1a6996db;border-radius:999px;justify-content:center;align-items:center;width:1.2rem;display:flex;box-shadow:0 .3rem .9rem #094b7133,inset 0 1px #ffffffb8}.experience-node i{background:currentColor;border-radius:999px;width:.34rem;height:.34rem;display:block}.experience-commit--current .experience-node{color:#f4fcff;background:#0875aa;border-color:#e8f9ff;box-shadow:0 0 0 .22rem #0875aa38,0 .45rem 1rem #0875aa57}.experience-showcase__intro p,.experience-showcase__intro span,.skills-showcase__intro,.skills-showcase__note{-webkit-text-stroke:.2px #04263757;paint-order:stroke fill;text-shadow:0 1px 1px #ffffff2e}.experience-showcase__intro h2,#skills>h2,#contact>h2{-webkit-text-stroke:.28px #0426376b;paint-order:stroke fill;text-shadow:0 0 .75rem #69c7f580,0 .08rem .18rem #ffffff70}body[data-portfolio-mode=night] .experience-showcase__intro p,body[data-portfolio-mode=night] .experience-showcase__intro span,body[data-portfolio-mode=night] .skills-showcase__intro,body[data-portfolio-mode=night] .skills-showcase__note{-webkit-text-stroke-color:#def6ff4d;text-shadow:0 1px 1px #00040a80}body[data-portfolio-mode=night] .skills-showcase__note{color:#d9ecf8}.experience-showcase__intro p,.skills-showcase__intro p{-webkit-text-stroke:.32px currentColor;color:#086fb4;font-family:var(--font-mono);letter-spacing:.12em;paint-order:stroke fill;text-transform:uppercase;margin:0;font-size:.69rem;font-weight:900}body[data-portfolio-mode=night] .experience-showcase__intro p{color:#9fe8ff}#contact{scroll-snap-align:start;min-height:calc(100svh + clamp(5rem,12vh,8rem));padding-top:clamp(6rem,13vh,9rem)}.experience-showcase__intro h2,.skills-showcase__intro h2,#contact>h2{-webkit-text-stroke:.32px #0426377a;paint-order:stroke fill;text-shadow:0 0 1.45rem #53caffd1,0 0 2.6rem #41aeeb7a,0 .08rem .2rem #ffffff85}body[data-portfolio-mode=night] .experience-showcase__intro h2,body[data-portfolio-mode=night] .skills-showcase__intro h2,body[data-portfolio-mode=night] #contact>h2{-webkit-text-stroke-color:#dcf7ff80;text-shadow:0 0 1.55rem #4ad1ffeb,0 0 2.75rem #2a86ff94,0 .08rem .2rem #00040cad}.experience-timeline>.experience-commit:first-child .experience-node{color:#f4fcff;background:#0875aa;border-color:#e8f9ff;box-shadow:0 0 0 .22rem #0875aa38,0 .45rem 1rem #0875aa57}.skills-showcase__intro h2{color:#0a2c3d;text-shadow:0 0 .9rem #53caff94,0 0 1.5rem #41aeeb4d,0 .08rem .2rem #ffffff6b}body[data-portfolio-mode=night] .skills-showcase__intro h2{color:#f1f8ff;text-shadow:0 0 1rem #4ad1ff9e,0 0 1.65rem #2a86ff57,0 .08rem .2rem #00040c99}.skills-showcase__intro p,.skills-showcase__intro span{-webkit-text-stroke:.2px #04263757;paint-order:stroke fill;text-shadow:0 1px 1px #ffffff2e}.skills-showcase__intro p{color:#086fb4;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;font-size:.69rem;font-weight:900}.skills-showcase__intro span{color:#31576b;font-size:.93rem;font-weight:700;line-height:1.45}body[data-portfolio-mode=night] .skills-showcase__intro p,body[data-portfolio-mode=night] .skills-showcase__intro span{-webkit-text-stroke-color:#def6ff4d;text-shadow:0 1px 1px #00040a80}body[data-portfolio-mode=night] .skills-showcase__intro p{color:#9fe8ff}body[data-portfolio-mode=night] .skills-showcase__intro span{color:#c8d9e9}.experience-showcase__intro h2{color:#0a2c3dcc;text-shadow:0 0 .9rem #53caff94,0 0 1.5rem #41aeeb4d,0 .08rem .2rem #ffffff6b}body[data-portfolio-mode=night] .experience-showcase__intro h2{color:#f1f8ffcc;text-shadow:0 0 1rem #4ad1ff9e,0 0 1.65rem #2a86ff57,0 .08rem .2rem #00040c99}.skills-showcase__intro{flex-direction:column;align-items:flex-start;gap:.38rem;margin:0 0 1.75rem}.skills-showcase__intro p{color:#086fb4;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.69rem;font-weight:800}.skills-showcase__intro h2{margin:0}.skills-showcase__intro,.skills-grid--glass,.skills-showcase__note{margin-left:0}.skills-grid--glass{max-width:min(46rem,73vw)}.skills-showcase__note{max-width:46rem}#contact{box-sizing:border-box;text-align:center;flex-direction:column;justify-content:center;align-items:center;padding-inline:1rem;display:flex}#contact>h2{text-align:center}.contact-showcase{width:min(35rem,92vw)}.contact-showcase__lead{align-items:center;gap:.85rem}.contact-quick-links{justify-content:center}.contact-quick-links__copy{max-width:29rem;margin:0}.contact-primary{justify-items:center}.contact-form{text-align:left}.experience-disclosure-toggle{color:#342004;background:linear-gradient(145deg,#ffd36a,#ef8f19);border-color:#fff3bf;box-shadow:0 0 0 .2rem #ffbb2f42,0 .7rem 1.6rem #e0760c75}.experience-disclosure-toggle:hover,.experience-disclosure-toggle:focus-visible{background:linear-gradient(145deg,#ffe497,#ff9f1f);box-shadow:0 0 0 .26rem #ffcd5757,0 .9rem 2rem #e0760c94}.experience-disclosure-toggle:active{background:#d97808}body[data-portfolio-mode=night] .experience-disclosure-toggle{color:#342004;background:linear-gradient(145deg,#ffd36a,#ef8f19);border-color:#fff3bf;box-shadow:0 0 0 .2rem #ffbb2f42,0 .7rem 1.6rem #e0760c75}body[data-portfolio-mode=night] .experience-disclosure-toggle:hover,body[data-portfolio-mode=night] .experience-disclosure-toggle:focus-visible{color:#342004;background:linear-gradient(145deg,#ffe497,#ff9f1f);box-shadow:0 0 0 .26rem #ffcd5757,0 .9rem 2rem #e0760c94}body[data-portfolio-mode=night] .experience-disclosure-toggle:active{background:#d97808}@media (width<=720px){#experience.experience-showcase,#skills,#contact{padding-left:1rem}.experience-showcase__intro,.skills-showcase__intro,.skills-showcase__note{width:auto;max-width:none}.skills-showcase__intro,.skills-grid--glass,.skills-showcase__note{margin-left:0}.skills-grid--glass{max-width:none}#contact{scroll-snap-stop:normal;min-height:100svh;padding-top:3rem;padding-bottom:3rem}.site-footer{scroll-snap-align:end;scroll-snap-stop:normal}}.experience-showcase__intro h2,#contact>h2,body[data-portfolio-mode=night] .experience-showcase__intro h2,body[data-portfolio-mode=night] #contact>h2{filter:none}@supports not (filter:drop-shadow(0 0 1px #fff)){.experience-showcase__intro h2,.skills-showcase__intro h2,#contact>h2{-webkit-text-stroke-width:.6px}}body[data-portfolio-mode=day] .experience-showcase__intro span{color:#093f5c;text-shadow:0 1px 1px #ffffffa3,0 0 .42rem #94ddfa85;font-weight:650}body[data-portfolio-mode=night] .skill-icon-list .tech-icon--aws{position:relative}body[data-portfolio-mode=night] .skill-icon-list .tech-icon--aws .tech-icon__aws-day{display:none}body[data-portfolio-mode=night] .skill-icon-list .tech-icon--aws .tech-icon__aws-night{display:block}.skill-icon-list .tech-icon--aws .tech-icon__aws-night{display:none}.skill-icon-list .tech-icon,.role-skill-list .tech-icon,.skill-icon-list .tech-icon:hover,.skill-icon-list .tech-icon:focus-visible,.role-skill-list .tech-icon:hover,.role-skill-list .tech-icon:focus-visible{box-shadow:none;background:0 0;border:0;outline:none}.skill-icon-list .tech-icon:hover,.skill-icon-list .tech-icon:focus-visible,.role-skill-list .tech-icon:hover,.role-skill-list .tech-icon:focus-visible{transform:none}.skill-icon-list .tech-icon,body[data-portfolio-mode=day] .skill-icon-list .tech-icon,body[data-portfolio-mode=night] .skill-icon-list .tech-icon{box-shadow:none;background:0 0}.skill-icon-list .tech-icon:hover,.skill-icon-list .tech-icon:focus-visible,body[data-portfolio-mode=night] .skill-icon-list .tech-icon:hover,body[data-portfolio-mode=night] .skill-icon-list .tech-icon:focus-visible{background:0 0;box-shadow:0 0 0 .2rem #086fb447,0 .6rem 1.1rem #086fb447}#projects.projects-showcase{color:#102f40;padding-left:clamp(1rem,2vw,2rem);padding-right:clamp(1rem,4vw,4rem)}.projects-showcase__intro{color:#31576b;flex-direction:column;align-items:flex-start;gap:.38rem;max-width:min(57rem,73vw);margin:0 0 1.75rem;display:flex}.projects-showcase__intro p{color:#086fb4;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.69rem;font-weight:800}.projects-showcase__intro h2{color:#0a2c3dcc;letter-spacing:-.055em;-webkit-text-stroke:.32px #0426377a;paint-order:stroke fill;text-shadow:0 0 .9rem #53caff94,0 0 1.5rem #41aeeb4d,0 .08rem .2rem #ffffff6b;margin:0;font-size:clamp(2.35rem,4vw,4.2rem);line-height:.98}.projects-showcase__intro span{color:#31576b;-webkit-text-stroke:.2px #04263757;paint-order:stroke fill;text-shadow:0 1px 1px #ffffff2e;font-size:.93rem;font-weight:700;line-height:1.45}.projects-showcase .project-grid{gap:.85rem;max-width:min(72rem,84vw);margin-top:0}.projects-showcase .aceternity-focus-card{-webkit-backdrop-filter:blur(10px)saturate(112%);color:#123547;background:linear-gradient(128deg,#f6fbfeb8,#cbe0eb94);border-color:#ffffffb8;border-radius:1rem;min-height:18rem;padding:clamp(1.15rem,2.2vw,1.65rem);box-shadow:0 1rem 2.4rem #1d415426,inset 0 1px #ffffff9e}.projects-showcase .aceternity-focus-card:before{background:radial-gradient(circle at 100% 0,#53caff29,#0000 50%)}.projects-showcase .project-card h3{color:#123547;margin:.3rem 0 0;font-size:clamp(1.25rem,1.8vw,1.55rem)}.projects-showcase .project-card p{color:#224b60;margin-top:1rem;font-size:.98rem;line-height:1.6}.projects-showcase .project-card__eyebrow,.projects-showcase .project-card__arrow{color:#075f98}.projects-showcase .tag-list{gap:.5rem;margin-top:1rem}.projects-showcase .tag-list li{color:#075f98;background:#086fb424;border:1px solid #086fb429;border-radius:999px;padding:.27rem .58rem;font-size:.78rem;font-weight:700}.projects-showcase .aceternity-focus-card:hover{box-shadow:0 1.35rem 2.8rem #1d41543b,inset 0 1px #ffffffad}body[data-portfolio-mode=night] #projects.projects-showcase{color:#d9ecf8}body[data-portfolio-mode=night] .projects-showcase__intro p{color:#9fe8ff}body[data-portfolio-mode=night] .projects-showcase__intro h2{color:#f1f8ffcc;-webkit-text-stroke-color:#dcf7ff80;text-shadow:0 0 1rem #4ad1ff9e,0 0 1.65rem #2a86ff57,0 .08rem .2rem #00040c99}body[data-portfolio-mode=night] .projects-showcase__intro span{color:#c8d9e9;-webkit-text-stroke-color:#def6ff4d;text-shadow:0 1px 1px #00040a80}body[data-portfolio-mode=night] .projects-showcase .aceternity-focus-card{-webkit-backdrop-filter:blur(10px)saturate(112%);color:#f1f8ff;background:linear-gradient(145deg,#152336e6,#101a29e6);border-color:#30465fe6;box-shadow:0 1rem 2.4rem #00040c6b,inset 0 1px #dcf6ff1a}body[data-portfolio-mode=night] .projects-showcase .aceternity-focus-card:before{background:radial-gradient(circle at 100% 0,#4ad1ff21,#0000 50%)}body[data-portfolio-mode=night] .projects-showcase .project-card h3{color:#f1f8ff}body[data-portfolio-mode=night] .projects-showcase .project-card p{color:#d9ecf8}body[data-portfolio-mode=night] .projects-showcase .project-card__eyebrow,body[data-portfolio-mode=night] .projects-showcase .project-card__arrow{color:#9fe8ff}body[data-portfolio-mode=night] .projects-showcase .tag-list li{color:#d9f5ff;background:#4babdb2e;border-color:#9fe8ff38}@media (width<=720px){#projects.projects-showcase{padding-left:1rem;padding-right:1rem}.projects-showcase__intro,.projects-showcase .project-grid{max-width:none}.projects-showcase .aceternity-focus-card{min-height:0}}.projects-showcase .project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem;max-width:min(76rem,88vw);display:grid}.projects-showcase .project-card{box-shadow:none;background:0 0;border:0;min-width:0;padding:0}.projects-showcase .project-card:nth-child(4){grid-column:span 2}.project-card__trigger{appearance:none;-webkit-backdrop-filter:blur(10px)saturate(112%);color:inherit;cursor:pointer;text-align:left;background:linear-gradient(128deg,#f6fbfeb8,#cbe0eb94);border:1px solid #ffffffb8;border-radius:1rem;flex-direction:column;align-items:stretch;width:100%;height:100%;min-height:20rem;padding:1.15rem;transition:border-color .22s,box-shadow .22s,transform .22s cubic-bezier(.22,.78,.28,1);display:flex;position:relative;overflow:hidden;box-shadow:0 1rem 2.4rem #1d415426,inset 0 1px #ffffff9e}.project-card__trigger:hover,.project-card__trigger:focus-visible,.project-card--active .project-card__trigger{border-color:#086fb48a;outline:none;transform:translateY(-.22rem);box-shadow:0 1.35rem 2.8rem #1d41543d,inset 0 1px #ffffffad}.project-card__visual{background:#115d7ce0;border:1px solid #d5f9ff57;border-radius:.72rem;height:clamp(6.8rem,11vw,9.25rem);margin-bottom:1rem;display:block;position:relative;overflow:hidden}.project-card__visual:after{content:"";background:repeating-linear-gradient(90deg,#0000 0 1.65rem,#edfeff24 1.65rem 1.72rem),repeating-linear-gradient(0deg,#0000 0 1.35rem,#edfeff1c 1.35rem 1.42rem);position:absolute;inset:0}.project-card__visual i{background:#daf9ffc2;border-radius:999px;width:2.8rem;height:.35rem;position:absolute;top:1rem;left:1rem}.project-card__visual i:nth-of-type(2){opacity:.5;width:4.4rem;top:1.75rem;left:1rem}.project-card__visual--image{background:#092436e0}.project-card__visual--image:after{background:linear-gradient(#030e1c0a,#030e1c29)}.project-card__visual--image img{object-fit:cover;object-position:center;width:100%;height:100%;display:block}.project-card__visual--contain img{object-fit:contain}.project-card__visual b{color:#ecfcffd1;font-family:var(--font-mono);letter-spacing:.08em;z-index:1;font-size:1.55rem;position:absolute;bottom:.75rem;right:.85rem}.project-card--cdc-helper .project-card__visual{background:#326b82}.project-card--lefty .project-card__visual{background:#277b70}.project-card--atlas .project-card__visual{background:#586a94}.project-card__eyebrow{color:#075f98;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.69rem;font-weight:800}.project-card__title-row{color:#123547;justify-content:space-between;align-items:center;margin-top:.38rem;font-size:clamp(1.15rem,1.65vw,1.45rem);line-height:1.15;display:flex}.project-card__arrow{color:#075f98;font-size:1.35rem;font-weight:500;transition:transform .22s}.project-card--active .project-card__arrow{transform:translateY(.12rem)}.project-card__summary{color:#224b60;margin-top:.7rem;font-size:.91rem;line-height:1.52;display:block}.project-card__trigger .tag-list{flex-wrap:wrap;gap:.45rem;margin-top:auto;padding-top:1rem;display:flex}.project-card__trigger .tag-list span{color:#075f98;background:#086fb424;border:1px solid #086fb429;border-radius:999px;padding:.23rem .52rem;font-size:.73rem;font-weight:700}.project-detail-shell{grid-template-rows:0fr;margin-top:0;transition:grid-template-rows .36s cubic-bezier(.22,.78,.28,1),margin-top .36s;display:grid;overflow:hidden}.project-detail-shell--open{grid-template-rows:1fr;margin-top:.9rem}.project-detail{-webkit-backdrop-filter:blur(12px)saturate(118%);background:linear-gradient(136deg,#ebf8fec7,#aad0e08a);border:1px solid #ffffffb8;border-radius:1.15rem;grid-template-columns:minmax(15rem,1.08fr) minmax(16rem,.92fr);min-height:0;display:grid;overflow:hidden;box-shadow:0 1.2rem 2.8rem #1d415433,inset 0 1px #fff9}.project-detail__visual{background:linear-gradient(135deg,#0a3d5a,#1690af);min-height:15rem;padding:clamp(1rem,2.4vw,2rem);position:relative}.project-detail__visual--cdc-helper{background:linear-gradient(135deg,#183851,#477f9f)}.project-detail__visual--lefty{background:linear-gradient(135deg,#104d59,#29a787)}.project-detail__visual--atlas{background:linear-gradient(135deg,#384a7d,#8868a5)}.project-detail__screen{background:#03142294;border:1px solid #d9f8ff52;border-radius:.8rem;height:100%;min-height:12rem;padding:1rem;position:relative;overflow:hidden}.project-detail__screen:before{content:"";background:repeating-linear-gradient(90deg,#0000 0 3rem,#dcfbff1f 3rem 3.08rem),repeating-linear-gradient(0deg,#0000 0 2.2rem,#dcfbff1c 2.2rem 2.28rem);position:absolute;inset:0}.project-detail__screen span{color:#dcfbffb3;font-family:var(--font-mono);letter-spacing:.11em;text-transform:uppercase;z-index:1;font-size:.68rem;font-weight:800;position:relative}.project-detail__screen b{color:#effcff;letter-spacing:-.1em;z-index:1;font-size:clamp(3.5rem,8vw,7rem);position:absolute;bottom:1rem;right:1.1rem}.project-detail__screen i{z-index:1;background:#d7f8ffb8;border-radius:999px;width:42%;height:.42rem;display:block;position:absolute;top:3.75rem;left:1rem}.project-detail__screen i:nth-of-type(2){opacity:.58;width:66%;top:4.55rem}.project-detail__screen i:nth-of-type(3){opacity:.4;width:31%;top:5.35rem}.project-detail__content{color:#123547;flex-direction:column;justify-content:center;align-items:flex-start;padding:clamp(1.25rem,3vw,2rem);display:flex}.project-detail__eyebrow{color:#075f98;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.69rem;font-weight:800}.project-detail h3{color:#123547;margin:.5rem 0 0;font-size:clamp(1.45rem,2.5vw,2.2rem);line-height:1}.project-detail__content>p:not(.project-detail__eyebrow){color:#224b60;max-width:34rem;margin:.8rem 0 0;line-height:1.62}.project-detail__controls{align-items:center;gap:.5rem;margin-top:1.25rem;display:flex}.project-detail__controls button,.project-detail__links button,.project-detail__links a{color:#075f98;cursor:pointer;font:inherit;background:#f7fcffad;border:1px solid #086fb433;border-radius:999px;justify-content:center;align-items:center;min-height:2.15rem;font-size:.8rem;font-weight:800;text-decoration:none;transition:background .16s,border-color .16s,color .16s,transform .16s;display:inline-flex}.project-detail__controls button:hover,.project-detail__controls button:focus-visible,.project-detail__links button:hover,.project-detail__links button:focus-visible,.project-detail__links a:hover,.project-detail__links a:focus-visible{color:#fff;background:#086fb4;border-color:#086fb4;outline:0;transform:translateY(-.1rem)}.project-detail__controls>button:not(.project-detail__dot){width:2.15rem}.project-detail__controls .project-detail__dot{width:.52rem;min-height:.52rem;padding:0}.project-detail__controls .project-detail__dot[aria-current=true]{background:#086fb4;border-color:#086fb4;transform:scale(1.22)}.project-detail__links{flex-wrap:wrap;gap:.55rem;margin-top:1.15rem;display:flex}.project-detail__links a,.project-detail__links button{padding:.42rem .78rem}body[data-portfolio-mode=night] .project-card__trigger{background:linear-gradient(145deg,#152336e6,#101a29e6);border-color:#30465fe6;box-shadow:0 1rem 2.4rem #00040c6b,inset 0 1px #dcf6ff1a}body[data-portfolio-mode=night] .project-card__trigger:hover,body[data-portfolio-mode=night] .project-card__trigger:focus-visible,body[data-portfolio-mode=night] .project-card--active .project-card__trigger{border-color:#9fe8ff85;box-shadow:0 1.35rem 2.8rem #00040c94,inset 0 1px #dcf6ff24}body[data-portfolio-mode=night] .project-card__title-row{color:#f1f8ff}body[data-portfolio-mode=night] .project-card__summary{color:#d9ecf8}body[data-portfolio-mode=night] .project-card__eyebrow,body[data-portfolio-mode=night] .project-card__arrow{color:#9fe8ff}body[data-portfolio-mode=night] .project-card__trigger .tag-list span{color:#d9f5ff;background:#4babdb2e;border-color:#9fe8ff38}body[data-portfolio-mode=night] .project-detail{background:linear-gradient(135deg,#0f1f30e0,#1b3a4f9e);border-color:#a4dbf73d;box-shadow:0 1.25rem 2.8rem #00040c7a,inset 0 1px #dcf6ff1a}body[data-portfolio-mode=night] .project-detail__content,body[data-portfolio-mode=night] .project-detail h3{color:#f1f8ff}body[data-portfolio-mode=night] .project-detail__content>p:not(.project-detail__eyebrow){color:#d9ecf8}body[data-portfolio-mode=night] .project-detail__eyebrow{color:#9fe8ff}body[data-portfolio-mode=night] .project-detail__controls button,body[data-portfolio-mode=night] .project-detail__links button,body[data-portfolio-mode=night] .project-detail__links a{color:#cdefff;background:#04111d85;border-color:#9fe8ff3d}@media (width<=860px){.projects-showcase .project-grid{grid-template-columns:repeat(2,minmax(0,1fr));max-width:min(48rem,100%)}.projects-showcase .project-card:nth-child(4){grid-column:span 1}.project-detail{grid-template-columns:1fr}.project-detail__visual{min-height:12rem}}@media (width<=560px){.projects-showcase .project-grid{grid-template-columns:1fr}.projects-showcase .project-card:nth-child(4){grid-column:auto}.project-card__trigger{min-height:0}.project-card__visual{height:8rem}.project-detail__content{padding:1.2rem}}.project-stage{max-width:min(76rem,88vw)}.projects-showcase--expanded .project-stage{min-height:clamp(31rem,48vw,37rem)}.projects-showcase--expanded .project-detail-shell--open{margin-top:0}.projects-showcase--expanded .project-detail{grid-template-columns:minmax(0,1.15fr) minmax(20rem,.85fr);min-height:clamp(31rem,48vw,37rem)}.projects-showcase--expanded .project-detail__visual{justify-content:center;align-items:center;min-height:0;padding:clamp(1.25rem,3vw,2.25rem);display:flex}.projects-showcase--expanded .project-detail__screen{width:100%;min-height:min(27rem,80%);box-shadow:0 1.5rem 3rem #0008145c}.project-detail__screen strong{color:#effcff;letter-spacing:-.06em;text-align:right;z-index:1;width:min-content;font-size:clamp(2rem,4vw,4.2rem);line-height:.9;position:absolute;bottom:1.35rem;right:1.2rem}.project-detail__carousel-arrow{color:#dff8ff;cursor:pointer;z-index:3;background:#041524b3;border:1px solid #c2f2ff57;border-radius:999px;justify-content:center;align-items:center;width:2.7rem;height:2.7rem;font-size:1.5rem;transition:background .16s,transform .16s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.project-detail__carousel-arrow:hover,.project-detail__carousel-arrow:focus-visible{background:#167da5;outline:0;transform:translateY(-50%)scale(1.08)}.project-detail__carousel-arrow--previous{left:.9rem}.project-detail__carousel-arrow--next{right:.9rem}.projects-showcase--expanded .project-detail__controls{z-index:3;margin:0;position:absolute;bottom:1.15rem;left:50%;transform:translate(-50%)}.projects-showcase--expanded .project-detail__controls .project-detail__dot{background:#d5f4ff6b;border-color:#0000}.projects-showcase--expanded .project-detail__controls .project-detail__dot[aria-current=true]{background:#75dcff}.projects-showcase--expanded .project-detail__content{background:linear-gradient(145deg,#e0f2fad6,#b4d6e4a3);padding:clamp(1.5rem,3vw,2.7rem);display:block}.project-detail__heading{justify-content:space-between;align-items:flex-start;display:flex}.project-detail__heading h3{margin-top:.42rem}.project-detail__close{color:#075f98;cursor:pointer;background:#f7fcffa3;border:1px solid #086fb44d;border-radius:.55rem;justify-content:center;align-items:center;width:2.65rem;height:2.65rem;font-size:2rem;font-weight:300;line-height:1;transition:background .16s,color .16s,transform .16s;display:flex}.project-detail__close>span{display:block;transform:translate(.03em,-.08em)}.project-detail__close:hover,.project-detail__close:focus-visible{color:#fff;background:#086fb4;outline:0;transform:rotate(90deg)}.project-detail__description,.project-detail__stacks,.project-detail__links{border-top:1px solid #086fb42e;margin-top:1.25rem;padding-top:1rem}.project-detail__label{color:#075f98;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.69rem;font-weight:800}.project-detail__description>p:not(.project-detail__label){color:#224b60;margin:.65rem 0 0;line-height:1.58}.project-detail__description button{color:#075f98;cursor:pointer;font:inherit;background:0 0;border:0;margin-top:.65rem;padding:0;font-size:.86rem;font-weight:800}.project-detail__description button:hover,.project-detail__description button:focus-visible{color:#034c7c;outline:0;text-decoration:underline}.project-detail__stacks .tag-list{flex-wrap:wrap;gap:.45rem;margin-top:.7rem;display:flex}.project-detail__stacks .tag-list span{color:#075f98;background:#086fb41f;border:1px solid #086fb42e;border-radius:999px;padding:.25rem .52rem;font-size:.76rem;font-weight:700}.projects-showcase--expanded .project-detail__links{flex-wrap:wrap;align-items:center;gap:.55rem;display:flex}.projects-showcase--expanded .project-detail__links .project-detail__label{flex-basis:100%}.project-detail__coming-soon{color:#48778c;border:1px dashed #086fb45c;border-radius:999px;align-items:center;min-height:2.15rem;padding:.42rem .78rem;font-size:.8rem;font-weight:700;display:inline-flex}body[data-portfolio-mode=night] .projects-showcase--expanded .project-detail{background:linear-gradient(145deg,#0f1f30eb,#153044d1);border-color:#a4dbf742;box-shadow:0 1.25rem 2.8rem #00040c8a,inset 0 1px #dcf6ff1a}body[data-portfolio-mode=night] .projects-showcase--expanded .project-detail__content{background:linear-gradient(145deg,#101e2feb,#163145d6)}body[data-portfolio-mode=night] .project-detail__description,body[data-portfolio-mode=night] .project-detail__stacks,body[data-portfolio-mode=night] .project-detail__links{border-color:#9fe8ff2e}body[data-portfolio-mode=night] .project-detail__label,body[data-portfolio-mode=night] .project-detail__description button{color:#9fe8ff}body[data-portfolio-mode=night] .project-detail__description>p:not(.project-detail__label){color:#d9ecf8}body[data-portfolio-mode=night] .project-detail__stacks .tag-list span{color:#d9f5ff;background:#4babdb2e;border-color:#9fe8ff38}body[data-portfolio-mode=night] .project-detail__coming-soon{color:#b8ddea;border-color:#9fe8ff4d}@media (width<=860px){.projects-showcase--expanded .project-detail{grid-template-columns:1fr}.projects-showcase--expanded .project-detail__visual{min-height:18rem}.projects-showcase--expanded .project-detail__screen{min-height:15rem}}@media (width<=560px){.project-stage{max-width:none}.projects-showcase--expanded .project-stage,.projects-showcase--expanded .project-detail{min-height:0}.projects-showcase--expanded .project-detail__visual{min-height:16rem}.project-detail__carousel-arrow{width:2.35rem;height:2.35rem}.project-detail__carousel-arrow--previous{left:.55rem}.project-detail__carousel-arrow--next{right:.55rem}}.projects-showcase__intro,.projects-showcase__intro p,.projects-showcase__intro h2,.projects-showcase__intro span,body[data-portfolio-mode=night] .projects-showcase__intro p,body[data-portfolio-mode=night] .projects-showcase__intro h2,body[data-portfolio-mode=night] .projects-showcase__intro span{color:#f8fcff;-webkit-text-stroke-color:#ffffff61;text-shadow:0 .08rem .35rem #020f1bbd,0 0 1.1rem #1a75a68f}.projects-showcase__intro h2{-webkit-text-stroke:.32px #ffffff6b}.projects-showcase__intro p{text-shadow:0 1px .2rem #020f1bb8}.projects-showcase .project-card__trigger,.projects-showcase--expanded .project-detail__content{background:linear-gradient(145deg,#f4eee0b8,#c6d3d7a3);border-color:#ffffffa3}body[data-portfolio-mode=day] .projects-showcase .project-card__trigger,body[data-portfolio-mode=day] .projects-showcase--expanded .project-detail__content{-webkit-backdrop-filter:blur(14px)saturate(46%)brightness(1.24);background:linear-gradient(128deg,#f6fbfecc,#cee0eaad);border-color:#ffffffbd;box-shadow:0 1rem 2.4rem #1d415426,inset 0 1px #ffffff9e}.project-stage{position:relative}.project-grid{opacity:1;transform-origin:top;max-height:400rem;transition:none;transform:none}.projects-showcase--expanded .project-grid{opacity:0;pointer-events:none;max-height:0;overflow:hidden;transform:none}.project-grid .project-card{transition:none}.projects-showcase--expanded .project-grid .project-card:first-child,.projects-showcase--expanded .project-grid .project-card:nth-child(2),.projects-showcase--expanded .project-grid .project-card:nth-child(3),.projects-showcase--expanded .project-grid .project-card:nth-child(4){opacity:0;transform:none}.project-detail-shell{opacity:0;visibility:hidden;border-radius:1.15rem;transition:grid-template-rows .28s cubic-bezier(.22,.78,.28,1),opacity .2s,transform .28s cubic-bezier(.22,.78,.28,1),visibility 0s linear .28s;overflow:hidden;transform:translateY(.8rem)scale(.975)}.project-detail-shell--open{opacity:1;visibility:visible;transition:grid-template-rows .28s cubic-bezier(.22,.78,.28,1),opacity .2s,transform .28s cubic-bezier(.22,.78,.28,1),visibility;transform:none}.project-detail__description-copy{grid-template-rows:auto 0fr;transition:grid-template-rows .3s cubic-bezier(.2,.8,.2,1);display:grid}.project-detail__description-copy>p,.project-detail__description-full{margin:.65rem 0 0}.project-detail__description-copy>div{min-height:0;overflow:hidden}.project-detail__description-copy>div p{opacity:0;margin:.65rem 0 0;transition:opacity .18s,transform .3s cubic-bezier(.2,.8,.2,1);transform:translateY(-.45rem)}.project-detail__description-copy--expanded{grid-template-rows:auto 1fr}.project-detail__description-copy--expanded>div p{opacity:1;transform:translateY(0)}.project-detail__carousel-arrow,.project-detail__close,.project-detail__description button,.project-detail__links a{color:#b56c09}.project-detail__carousel-arrow{color:#ffe5a3;background:#492904bd;border-color:#ffd1678f}.project-detail__carousel-arrow:hover,.project-detail__carousel-arrow:focus-visible{background:#c8821a}.project-detail__close{color:#a65f05;background:#ffdf976b;border-color:#ca891c75}.project-detail__close:hover,.project-detail__close:focus-visible{background:#c8821a}.project-detail__description button:hover,.project-detail__description button:focus-visible{color:#8f5100}.project-detail__links a{background:#ffe7ad57;border-color:#ca891c6b;align-items:center;width:2.4rem;padding:0;font-size:1.05rem}.project-detail__links a:hover,.project-detail__links a:focus-visible{color:#fff8e8;background:#c8821a;border-color:#c8821a}body[data-portfolio-mode=night] .projects-showcase .project-card__trigger,body[data-portfolio-mode=night] .projects-showcase--expanded .project-detail__content{background:linear-gradient(145deg,#111d2deb,#0f1927e6);border-color:#30465fe0}body[data-portfolio-mode=night] .project-detail__carousel-arrow{color:#ffe5a3;background:#5a3607b3;border-color:#ffd0676b}body[data-portfolio-mode=night] .project-detail__close{color:#ffe5a3;background:#683e078a;border-color:#ffd06766}body[data-portfolio-mode=night] .project-detail__description button{color:#ffcf75}body[data-portfolio-mode=night] .project-detail__links a{color:#ffdc8d;background:#683e075c;border-color:#ffd06761}@media (width>=861px){.projects-showcase--expanded .project-stage{height:clamp(34rem,43vw,48rem);min-height:0}.projects-showcase--expanded .project-detail-shell{margin:0;display:block;position:absolute;inset:0;overflow:visible}.projects-showcase--expanded .project-detail-shell--open{margin:0}.projects-showcase--expanded .project-detail{height:100%}.project-detail-shell--from-onenus,.project-detail-shell--from-cdc-helper,.project-detail-shell--from-lefty,.project-detail-shell--from-atlas{transform-origin:0 0}}@media (prefers-reduced-motion:reduce){.project-grid,.project-grid .project-card,.project-detail-shell,.project-detail__description-copy,.project-detail__description-copy>div p{transition-duration:1ms}}.projects-showcase--expanded .project-grid{opacity:1;transform:none}.projects-showcase--expanded .project-grid .project-card--active{transform-origin:0 0;animation:.42s cubic-bezier(.2,.8,.2,1) forwards project-card-expand-away}.project-detail-shell{transform:translateY(.5rem)scale(.7)}.project-detail-shell--open{transform:translateY(0)scale(1)}.project-detail-shell--from-onenus{transform-origin:0 0}.project-detail-shell--from-cdc-helper{transform-origin:top}.project-detail-shell--from-lefty{transform-origin:100% 0}.project-detail-shell--from-atlas{transform-origin:0 100%}@keyframes project-card-expand-away{0%{opacity:1;transform:scale(1)}62%{opacity:.88;transform:scale(1.035)}to{opacity:0;transform:scale(1.12)}}@media (width>=861px){.projects-showcase--closing .project-grid{pointer-events:none;max-height:400rem;overflow:visible}.projects-showcase--closing .project-grid .project-card:nth-child(n){opacity:1;animation:.28s cubic-bezier(.22,.78,.28,1) both project-card-return;transform:none}}@keyframes project-card-return{0%{opacity:0;transform:translateY(.7rem)scale(.975)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.projects-showcase--expanded .project-grid .project-card--active{opacity:0;animation:none}}.projects-showcase--expanded .project-stage{width:100%;max-width:none}.projects-showcase--expanded .project-detail{grid-template-columns:minmax(0,1.2fr) minmax(22rem,.8fr);width:100%;height:clamp(34rem,43vw,48rem);min-height:0}.project-detail__visual{overflow:hidden}.project-detail__media{isolation:isolate;background:#04111fc7;border:1px solid #e1f6ff4d;border-radius:.8rem;width:100%;height:100%;min-height:15rem;position:relative;overflow:hidden}.project-detail__media-backdrop{filter:blur(1.45rem)saturate(.85)brightness(.62);opacity:.9;z-index:0;background-position:50%;background-repeat:no-repeat;background-size:cover;position:absolute;inset:-2rem;transform:scale(1.1)}.project-detail__media:after{content:"";pointer-events:none;z-index:2;background:linear-gradient(135deg,#030e1c59,#030e1c14);position:absolute;inset:0}.project-detail__media img{object-fit:contain;z-index:1;width:100%;height:100%;display:block;position:relative}.project-detail__media--placeholder{background:#071c30eb}.project-detail__media--placeholder:after{background:0 0}.project-detail__media--placeholder:before{content:"";background:repeating-linear-gradient(90deg,#0000 0 3rem,#dcfbff1a 3rem 3.08rem),repeating-linear-gradient(0deg,#0000 0 2.2rem,#dcfbff14 2.2rem 2.28rem);position:absolute;inset:0}@media (width<=860px){.projects-showcase--expanded .project-detail{grid-template-columns:1fr;height:auto;min-height:0}.projects-showcase--expanded .project-detail__visual{height:clamp(19rem,62vw,28rem);min-height:0}}@media (width<=560px){.projects-showcase--expanded .project-detail__visual{min-height:17rem}.project-detail__media{min-height:14rem}}.projects-showcase--expanded .project-detail__visual{padding:0}.projects-showcase__intro p,body[data-portfolio-mode=night] .projects-showcase__intro p{color:#9fe8ff;-webkit-text-stroke-color:#def6ff4d;text-shadow:0 1px 1px #00040a80}.projects-showcase__intro h2,body[data-portfolio-mode=night] .projects-showcase__intro h2{color:#c8e3f0;-webkit-text-stroke:.32px #dcf7ff80;paint-order:stroke fill;text-shadow:0 0 1rem #4ad1ff9e,0 0 1.65rem #2a86ff57,0 .08rem .2rem #00040c99}.projects-showcase__intro span,body[data-portfolio-mode=night] .projects-showcase__intro span{color:#edf6fc;-webkit-text-stroke-color:#def6ff4d;text-shadow:0 1px 1px #00040a80}.projects-showcase--expanded .project-grid .project-card--active,.project-detail-shell--from-onenus,.project-detail-shell--from-cdc-helper,.project-detail-shell--from-lefty,.project-detail-shell--from-atlas{transform-origin:50%}.project-detail__media{border:0;border-radius:0}.project-detail__media img{object-fit:cover}.project-detail__media--contain img{object-fit:contain}*,:before,:after{box-sizing:border-box}html{overscroll-behavior-y:none;scroll-behavior:smooth;background:#070b18}body{background:var(--color-surface);overscroll-behavior-y:none}body,h1,h2,h3,p,ul{margin:0}ul{padding:0}button,a{font:inherit}:root{--color-ink:#17352a;--color-ink-muted:#4d665a;--color-surface:#fffdf7;--color-surface-raised:#fff;--color-leaf:#5fa777;--color-leaf-soft:#dff3df;--color-sky:#a9d9ed;--color-sun:#ffe08a;--color-peach:#ffc6a5;--color-lavender:#d8c8ff;--color-outline:#d7e4d7;--font-sans:Inter, ui-rounded, system-ui, sans-serif;--font-display:var(--font-sans);--font-mono:ui-monospace, SFMono-Regular, Menlo, monospace;--space-2xs:.25rem;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:5rem;--radius-sm:.75rem;--radius-md:1.25rem;--radius-lg:2rem;--shadow-card:0 .75rem 0 color-mix(in srgb, var(--color-ink) 12%, transparent);--content-max-width:72rem;--breakpoint-compact:48rem;--duration-fast:.16s;--duration-standard:.28s;--touch-target-size:2.75rem}body[data-portfolio-mode=night]{--color-ink:#e9f0f7;--color-ink-muted:#aab8c8;--color-surface:#0b1220;--color-surface-raised:#131e2d;--color-leaf:#7fc998;--color-leaf-soft:#173828;--color-sky:#1d4262;--color-sun:#604c24;--color-peach:#573a31;--color-lavender:#473f71;--color-outline:#294054;--shadow-card:0 .75rem 0 #00000052}html{scroll-snap-type:none}:root{color:var(--color-ink);background:var(--color-surface);font-family:var(--font-sans)}body{color:var(--color-ink);min-width:20rem}main{max-width:var(--content-max-width);padding:var(--space-xl);margin:0 auto}main#top{scroll-snap-align:start;max-width:none;margin:0;padding:0}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto;scroll-snap-type:none}}
