html[data-site-motion=on] .site-motion-enter{animation:portfolio-arrive .48s cubic-bezier(.2,.65,.25,1) both}@keyframes portfolio-arrive{0%{opacity:1;translate:0 5px}to{opacity:1;translate:0 0}}html[data-site-motion=on] :is(.retro-button,.contact-channel-button,.bracket-button,.navigation-dropdown>summary,.navigation-dropdown-button,.project-accordion>summary,.project-diagrams>summary,.intranet-layer>summary,.architecture-node[href],.stack-badge,.home-work-card){transition:background-color .18s ease,border-color .18s ease,color .18s ease,box-shadow .18s ease}html[data-site-motion=on] :is(.retro-button,.contact-channel-button,.bracket-button,.architecture-node[href]){position:relative;isolation:isolate}html[data-site-motion=on] :is(.retro-button,.contact-channel-button,.bracket-button,.architecture-node[href]):after{content:"";position:absolute;inset:-1px;pointer-events:none;border-radius:inherit;box-shadow:inset 0 0 0 1px #b0e7fc;opacity:0;transition:opacity .18s ease}html[data-site-motion=on] :is(.retro-button,.contact-channel-button,.bracket-button,.architecture-node[href]):focus-visible:after{opacity:.7}html[data-site-motion=on] :is(.text-link,.site-nav nav a,.ocean-footer nav a){transition:color .18s ease,text-decoration-color .18s ease}html[data-site-motion=on] :is(.external-arrow,.architecture-link-cue){transition:translate .18s ease,color .18s ease}@media(hover:hover)and (pointer:fine){html[data-site-motion=on] :is(.retro-button,.contact-channel-button,.bracket-button,.architecture-node[href]):hover:after{opacity:.6}html[data-site-motion=on] :is(a,button):hover>.external-arrow,html[data-site-motion=on] :is(a,button):hover>span>.external-arrow{translate:1px -1px}html[data-site-motion=on] .architecture-node[href]:hover>.architecture-link-cue{translate:2px 0}html[data-site-motion=on] .home-work-card:hover{border-color:#95cbe6;box-shadow:0 6px 22px #071a2433}html[data-site-motion=on] .stack-badge:hover{background:#153244;border-color:#759fb6}}html[data-site-motion=off] .site-motion-enter,.motion-paused .site-motion-enter{animation:none}html[data-site-motion=off] .architecture-beam{animation-play-state:paused}html[data-site-motion=on] :is(a,button,input,textarea,select,summary):focus-visible{transition:none}.site-motion-enter:focus-within{animation:none!important}@media(prefers-reduced-motion:reduce){.site-motion-enter{animation:none!important}html[data-site-motion] :is(.retro-button,.contact-channel-button,.bracket-button,.architecture-node[href],.external-arrow,.architecture-link-cue,.stack-badge,.home-work-card,.text-link){transition:none!important}html[data-site-motion] :is(.retro-button,.contact-channel-button,.bracket-button,.architecture-node[href]):after{transition:none!important}}@media(forced-colors:active){html[data-site-motion] :is(.retro-button,.contact-channel-button,.bracket-button,.architecture-node[href]):after{display:none}}@media(hover:hover)and (pointer:fine){html[data-site-motion=on] .site-pointer-lit:not(img){position:relative;isolation:isolate}html[data-site-motion=on] .site-pointer-lit:not(img):before{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(220px circle at var(--site-pointer-x,50%) var(--site-pointer-y,50%),#87dcff12,transparent 72%);pointer-events:none;z-index:-1}html[data-site-motion=on] .about-headshot{transition:filter .2s ease}html[data-site-motion=on] .about-headshot.site-pointer-lit{filter:var(--media-shadow-filter) brightness(1.035)}html[data-site-motion=on] main :is(h1,h2,h3,p):hover{text-shadow:0 0 18px #a8dbf412}}.site-destination:not(:focus-visible){outline:1px solid #9ddaf0;outline-offset:7px;animation:portfolio-destination 1.6s ease-out both}@keyframes portfolio-destination{0%,55%{outline-color:#9ddaf0}to{outline-color:transparent}}@media(prefers-reduced-motion:reduce){.site-destination{animation:none!important}.site-pointer-lit:before{display:none}}html[data-site-motion=off]{scroll-behavior:auto}html[data-site-motion=off] *,html[data-site-motion=off] *:before,html[data-site-motion=off] *:after{animation:none!important;transition:none!important}html[data-site-motion=off] :is(.retro-button,.navigation-toggle):hover{transform:none}html[data-site-motion=off] :is(.external-arrow,.architecture-link-cue){translate:none}html[data-site-motion=off] .site-destination{animation:none}html[data-site-motion=on] :is(.education-path,.education-course,.education-provider,.education-area>summary,.education-interests article){transition:background-color .18s ease,border-color .18s ease,color .18s ease}@media(hover:hover)and (pointer:fine){html[data-site-motion=on] .education-path:hover{border-color:#9bcce3}html[data-site-motion=on] .education-area>summary:hover{background:#19334480}html[data-site-motion=on] :is(.education-provider,.education-course-provider):hover{color:#ebf7ff}}@media(forced-colors:active){.site-nav .navigation-toggle-icon span{height:0;border-top:1px solid ButtonText;background:none}}.architecture-figure{padding:26px;background:radial-gradient(ellipse at 45% 10%,#102b3b88,transparent 65%),#06111b;border:1px solid #3e6178;border-radius:var(--surface-radius);overflow:hidden}.architecture-figure figcaption{margin-bottom:26px;max-width:70ch}.architecture-figure h3{font-size:25px;line-height:1.3;margin-bottom:10px}.architecture-figure figcaption p{font-size:15px;color:#c9dbe5;line-height:1.6;margin:0}.architecture-figure .architecture-layout{grid-template-columns:repeat(var(--architecture-columns),minmax(0,1fr));gap:44px;isolation:isolate}.architecture-tier{z-index:1}.architecture-figure .architecture-tier>h4{display:flex;align-items:center;gap:10px;border:0;margin:0 0 18px;padding:0;font-size:13px;letter-spacing:.035em;text-transform:uppercase;color:#b3d4e3}.architecture-step{font-size:11px;color:#8ab8cb;border:1px solid #416278;border-radius:50%;width:25px;height:25px;display:inline-flex;align-items:center;justify-content:center;flex:none}.architecture-nodes{display:grid;gap:14px}.architecture-node.diagram-node{display:flex;align-items:center;gap:12px;min-height:86px;margin:0;padding:16px;background:linear-gradient(140deg,#112b3b,#0b1b28);border:1px solid #52778d;border-radius:var(--surface-radius);box-shadow:0 5px 24px #0003;color:#ebf5fa;text-decoration:none}.architecture-node-icon{width:24px;height:24px;flex:none;color:#9bddf3}.architecture-node-copy{min-width:0}.architecture-node-copy strong{display:block;font-size:16px;line-height:1.4;margin:0;font-weight:500}.architecture-node-copy>span{display:block;font-size:13px;line-height:1.5;color:#bcd0dc;margin-top:4px}.architecture-link-cue{margin-left:auto;color:#a6dded}.architecture-node[href]:hover{border-color:#b5eaff;background:#17394e}.architecture-node[href]:focus-visible{outline:3px solid #c9f2ff;outline-offset:4px}.architecture-connections{z-index:0}.architecture-wire{fill:none;stroke:#678fa5;stroke-width:1.5;stroke-opacity:.8}.architecture-beam{fill:none;stroke:#aaeaff;stroke-width:2.2;stroke-dasharray:8 92;stroke-linecap:round;opacity:0}.architecture-moving .architecture-beam{opacity:.85;animation:architecture-flow 5s linear infinite}@keyframes architecture-flow{0%{stroke-dashoffset:100}to{stroke-dashoffset:0}}.architecture-layout.architecture-vertical{display:block}.architecture-vertical .architecture-tier+.architecture-tier{margin-top:54px}.architecture-vertical .architecture-nodes{grid-template-columns:repeat(var(--architecture-nodes),minmax(0,1fr))}.architecture-vertical .architecture-tier:has(.architecture-nodes[style*="--architecture-nodes: 1"]) .architecture-nodes{max-width:380px;margin-inline:auto}.architecture-legend{display:flex;gap:9px;align-items:baseline;font-size:13px!important;color:#b5cdd9;margin:22px 0 0;line-height:1.6}.architecture-legend>span{color:#9bddf3}.architecture-connections-list{margin-top:10px;font-size:14px}.architecture-connections-list>summary{display:inline-flex;align-items:center;min-height:44px;cursor:pointer;color:#a5dcf0;text-decoration:underline;text-underline-offset:4px}.architecture-connections-list>summary:before{content:"+";margin-right:8px}.architecture-connections-list[open]>summary:before{content:"−"}.architecture-connections-list ul{list-style:none;padding:0;margin:10px 0 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 24px}.architecture-connections-list li strong,.architecture-connections-list li>span{display:block;line-height:1.5;font-size:13px}.architecture-connections-list li>span{color:#bfd3de;margin-top:3px}.architecture-decisions{margin-top:16px}.architecture-decisions p{font-size:14px;line-height:1.6;color:#c9dbe5}.intranet-account.intranet-account-polished{max-width:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 36px;margin-top:28px}.intranet-account-polished section{margin:0!important}.intranet-account-polished h3{font-size:19px;line-height:1.4}.intranet-account-polished p{font-size:15px;line-height:1.7}.intranet-layer{margin-top:22px;border:1px solid #385b72;border-radius:var(--surface-radius);background:#07131ee8}.intranet-layer>summary{min-height:48px;cursor:pointer;padding:13px 18px;color:#b3e1f3}.intranet-layer-content{padding:0 18px 18px}.stack-groups{display:grid;gap:14px;margin:22px 0}.stack-group>.stack-group-label{font-size:12px;letter-spacing:.045em;text-transform:uppercase;line-height:1.6;color:#a6ccdf;margin:0 0 9px}.stack-badges{display:flex;gap:7px;flex-wrap:wrap;list-style:none;padding:0;margin:0}.stack-badge{display:inline-flex;align-items:center;gap:7px;padding:6px 9px;border:1px solid #3c6078;background:#0a1c2ae0;border-radius:var(--surface-radius);font-size:12px;line-height:1.5;color:#daebf4}.stack-badge svg{width:15px;height:15px;flex:none;fill:currentColor}.stack-badge-monogram{width:16px;height:16px;display:flex;align-items:center;justify-content:center;font-size:10px;color:#9dd4e8;border:1px solid #53778b;border-radius:3px}.stack-groups-note{font-size:13px;color:#bdd0dc;max-width:80ch;margin-top:8px}.project-map-index{margin:26px 0 32px}.project-map-index .index-controls{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin:0 0 20px}.project-map-index .index-controls label{display:flex;flex-direction:column;gap:7px;font-size:13px;color:#b6d5e3;min-width:170px;flex:1}.project-map-index .index-controls input,.project-map-index .index-controls select{width:100%;min-height:44px;color:#e6f2f8;background:#071520;border:1px solid #52778d;border-radius:var(--surface-radius);padding:9px 12px;font-size:15px}.project-map-index .index-controls button{min-height:44px}.project-map-index [role=status]{font-size:13px;color:#bfd3de}@media(max-width:1000px){.architecture-figure .architecture-layout{gap:28px}.architecture-node.diagram-node{padding:13px;gap:9px}.architecture-node-copy strong{font-size:15px}.architecture-node-icon{width:20px;height:20px}.architecture-vertical .architecture-nodes{grid-template-columns:repeat(2,minmax(0,1fr))}.architecture-vertical .architecture-connections{display:none}}@media(max-width:760px){.architecture-figure{padding:18px;border-radius:var(--surface-radius)}.architecture-figure .architecture-layout{grid-template-columns:1fr;gap:22px}.architecture-connections{display:none}.architecture-nodes{gap:10px}.architecture-node.diagram-node{min-height:72px}.architecture-vertical .architecture-tier+.architecture-tier{margin-top:24px}.architecture-connections-list ul{grid-template-columns:1fr}.architecture-legend{margin-top:16px}.intranet-account.intranet-account-polished{grid-template-columns:1fr;gap:22px}.architecture-figure h3{font-size:22px}.intranet-layer-content{padding:0 10px 10px}}@media(max-width:480px){.architecture-vertical .architecture-nodes{grid-template-columns:1fr}.architecture-node-copy>span{font-size:13px}.architecture-figure{padding:14px}.architecture-vertical .architecture-tier:has(.architecture-nodes[style*="--architecture-nodes: 1"]) .architecture-nodes{max-width:none}}@media(prefers-reduced-motion:reduce){.architecture-moving .architecture-beam{animation:none;opacity:0}}.motion-paused .architecture-beam{animation-play-state:paused;opacity:0}@media(forced-colors:active){.architecture-node.diagram-node,.architecture-figure{border-color:CanvasText;background:Canvas;color:CanvasText;box-shadow:none}.architecture-wire{stroke:CanvasText}.architecture-beam{display:none}.architecture-step,.stack-badge{border-color:CanvasText}.architecture-node-copy>span,.architecture-tier>h4,.architecture-legend{color:CanvasText}}.stack-brand-image{width:16px;height:16px;object-fit:contain;flex:none}.project-index-map .architecture-layout{grid-template-columns:minmax(0,.8fr) minmax(0,1.4fr)}.project-index-map .architecture-tier:nth-of-type(1){align-self:center}.project-index-map .architecture-node{min-height:72px}.project-index-map>summary span{color:#a0c8dc;font-size:13px}@media(max-width:760px){.project-index-map .architecture-layout{grid-template-columns:1fr}.project-index-map .architecture-tier:nth-of-type(1){align-self:auto}}.architecture-moving .architecture-beam{animation-duration:3.2s}.architecture-moving .architecture-beam-return{animation-direction:reverse;stroke:#61b7d9}.project-proof figure.app-interface,.project-proof .app-interface a{padding:0;border:0;background:transparent;box-shadow:none}.project-proof .app-interface img,.project-proof .native-shot-grid img,.project-proof .context-shot-grid img{display:block;max-width:100%;height:auto;border:0;background:transparent;box-shadow:none}.project-proof .app-interface img,.project-proof .native-shot-grid img{border-radius:var(--surface-radius)}.viewport-video{position:relative}.viewport-video video{margin-inline:auto}.project-proof .cinematic-video video:not(:fullscreen){aspect-ratio:16 / 9;max-height:none;object-fit:contain}.video-play-fallback{margin-top:12px}.project-proof .media-description{max-width:70ch}.education-container{width:100%;max-width:1320px;margin:auto}.education-intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,.4fr);gap:56px;align-items:end;margin-bottom:34px}.education-intro .page-intro h1{font-size:clamp(44px,5.8vw,76px)}.education-lede{max-width:64ch;color:#d5e5ed;font-size:18px;line-height:1.8}.education-record-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;padding:24px;border-left:1px solid #55798f;background:linear-gradient(135deg,#193243b3,#0a1925a0)}.education-record-summary>div{display:flex;flex-direction:column;gap:5px;font-size:13px;color:#c4dce9}.education-record-number{font:500 43px/1.1 ui-monospace,monospace;letter-spacing:-.055em;color:#d4edf7}.education-record-summary>p{grid-column:1/-1;font-size:13px;color:#c4dce9;line-height:1.7;margin:0}.education-provider-strip{display:flex;flex-wrap:wrap;gap:16px 28px;border-top:1px solid #36566b;border-bottom:1px solid #36566b;padding:20px 0;margin-bottom:54px}.education-provider{display:inline-flex;align-items:center;gap:9px;color:#c6dfeb;font-size:14px}.education-provider svg,.education-course-provider svg{width:18px;height:18px;fill:currentColor;flex:none}.education-provider-initial{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #6a8b9d;border-radius:var(--surface-radius);font:10px/1 ui-monospace,monospace;color:#c6dfeb;flex:none}.education-section{margin-top:54px}.education-section .section-heading{margin-top:0}.education-section .section-heading h2{font-size:clamp(26px,3.2vw,38px);letter-spacing:-.025em}.education-paths{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.education-path{display:flex;flex-direction:column;align-items:start;padding:24px;border:1px solid #4a6d82;border-radius:var(--surface-radius);background:linear-gradient(150deg,#183043,#0b1a26)}.education-path-heading{display:flex;align-items:center;justify-content:space-between;width:100%;margin-bottom:24px;color:#a7ccdf}.education-path-heading svg{height:28px;width:28px;fill:currentColor}.education-path-number{font:13px/1 ui-monospace,monospace;border-bottom:1px solid #608198;padding-bottom:8px}.education-path .eyebrow{font-size:11px;margin:0 0 10px}.education-path h3{font-size:23px;line-height:1.3;margin:0 0 13px}.education-path>p:not(.eyebrow){font-size:14px;line-height:1.7;color:#d0e1ea}.education-path .stack-groups{margin:4px 0 22px}.education-path .stack-group-label{display:none}.education-path .stack-badge{padding:4px 6px;font-size:11px}.education-path>.text-link{font-size:13px;min-height:44px;display:inline-flex;align-items:center;margin-top:auto}.education-page .architecture-tier:nth-of-type(2){align-self:center}.education-catalog-note{font-size:14px;line-height:1.7;max-width:86ch;color:#c1d8e5;margin:0 0 22px}.education-filters{display:flex;gap:16px;align-items:end;flex-wrap:wrap;background:#0a1823;border:1px solid #3b6077;border-radius:var(--surface-radius);padding:20px}.education-filters label{display:flex;flex-direction:column;gap:8px;min-width:160px;flex:1;font-size:13px;color:#c8e0ed}.education-filters input,.education-filters select{width:100%;font:inherit;font-size:15px;min-height:44px;border:1px solid #5e8199;background:#081420;color:#ecf6fb;padding:10px 12px;border-radius:var(--surface-radius)}.education-filters label:first-child{flex:2}.education-filters button{min-height:44px}.education-result-count{font-size:13px;color:#bfdae8;margin:16px 0}.education-areas{display:grid;gap:16px}.education-area{border:1px solid #40647c;border-radius:var(--surface-radius);background:#091824b8;scroll-margin-top:36px}.education-area>summary{display:grid;grid-template-columns:28px minmax(0,1fr) auto 20px;align-items:center;gap:18px;min-height:88px;padding:22px 24px;cursor:pointer;list-style:none}.education-area>summary::-webkit-details-marker{display:none}.education-area>summary h3{font-size:21px;line-height:1.35;margin:0 0 5px}.education-area-summary{font-size:13px;line-height:1.6;color:#bdd5e3}.education-area-number{font:12px/1.4 ui-monospace,monospace;color:#8dc4de}.education-area-count{display:inline-flex;align-items:center;justify-content:center;min-width:32px;min-height:32px;padding:4px 7px;border:1px solid #527c91;border-radius:var(--surface-radius);font:12px/1 ui-monospace,monospace;color:#bfe5f5}.education-area-toggle{font-size:23px;line-height:1;color:#b4dcec;text-align:center}.education-area[open] .education-area-toggle{font-size:0}.education-area[open] .education-area-toggle:after{content:"−";font-size:23px}.education-courses{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 32px;margin:0;padding:0 24px 16px;list-style:none;border-top:1px solid #34536a}.education-course{padding:23px 0;border-bottom:1px solid #29495f;min-width:0}.education-course-provider{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:#b1d1e2;font-size:12px;margin-bottom:11px}.education-record-kind{margin-left:auto;padding:3px 7px;border:1px solid #466d84;border-radius:var(--surface-radius);font-size:10px;color:#bcdce9}.education-course h4{font-size:17px;line-height:1.5;font-weight:500;margin:0 0 9px;color:#e3f0f7;overflow-wrap:anywhere}.education-course p{font-size:14px;line-height:1.65;color:#c0d7e3;margin:0}.education-course-source{display:inline-flex;align-items:center;font-size:12px;min-height:40px;margin-top:5px}.education-interests{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:26px}.education-interests article{border-left:2px solid #668fa8;padding:4px 0 4px 18px}.education-interests h3{font-size:18px;line-height:1.4;margin:0 0 12px}.education-interests p{font-size:14px;line-height:1.75;color:#c7dde8;margin:0}.education-next{display:flex;align-items:center;justify-content:space-between;gap:24px;border-top:1px solid #52778f;padding-top:26px;margin-top:48px}.education-next p{font-size:18px;margin:0}@media(max-width:1100px){.education-paths,.education-interests{grid-template-columns:repeat(2,minmax(0,1fr))}.education-intro{gap:32px}.education-record-summary{padding:20px}.education-record-number{font-size:36px}}@media(max-width:760px){.education-intro{grid-template-columns:1fr;gap:22px}.education-record-summary{max-width:520px}.education-lede{font-size:16px}.education-intro .page-intro h1{font-size:clamp(39px,10vw,60px)}.education-courses{grid-template-columns:1fr;padding-inline:18px}.education-provider-strip{gap:16px 20px;margin-bottom:38px}.education-area>summary{gap:12px;padding:20px 18px;grid-template-columns:22px minmax(0,1fr) auto 16px}.education-area>summary h3{font-size:19px}.education-area-summary{font-size:12px}.education-section{margin-top:40px}.education-section .section-heading{align-items:start}.education-filters{padding:16px}.education-next{align-items:start;flex-direction:column}}@media(max-width:480px){.education-paths,.education-interests{grid-template-columns:1fr}.education-path{padding:20px}.education-path-heading{margin-bottom:20px}.education-filters{gap:14px}.education-filters label{min-width:100%}.education-filters button{width:100%}.education-area>summary{grid-template-columns:minmax(0,1fr) auto 16px;gap:10px;padding:18px 14px}.education-area-number{display:none}.education-area-summary{display:block;margin-top:8px}.education-courses{padding-inline:14px}.education-record-kind{margin-left:0}.education-course h4{font-size:16px}}@media(forced-colors:active){.education-path,.education-record-summary,.education-area,.education-filters{background:Canvas;color:CanvasText;border-color:CanvasText}.education-record-summary{border:1px solid CanvasText}.education-provider,.education-provider-initial,.education-area-number,.education-area-summary,.education-area-count,.education-area-toggle,.education-course-provider,.education-course p,.education-course h4,.education-interests p{color:CanvasText}.education-filters input,.education-filters select{background:Field;color:FieldText;border-color:FieldText}.education-record-kind,.education-area-count{border-color:CanvasText}.education-path-heading{color:CanvasText}}.education-interests .stack-groups{margin:16px 0 0}.education-interests .stack-group-label{display:none}.education-interests .stack-badge{font-size:11px;padding:4px 6px}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/space-grotesk-1.ttf) format("truetype")}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/space-grotesk-2.ttf) format("truetype")}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/space-grotesk-3.ttf) format("truetype")}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/space-grotesk-4.ttf) format("truetype")}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.static{position:static}.block{display:block}.contents{display:contents}.grid{display:grid}.hidden{display:none}.table{display:table}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.resize{resize:both}.rounded-none{border-radius:0}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-black{border-color:var(--color-black)}.bg-white{background-color:var(--color-white)}.p-6{padding:calc(var(--spacing)*6)}.shadow-\[8px_8px_0px_0px_rgba\(0\,0\,0\,1\)\]{--tw-shadow:8px 8px 0px 0px var(--tw-shadow-color,#000);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(min-width:40rem){.sm\:p-8{padding:calc(var(--spacing)*8)}}@media(min-width:48rem){.md\:col-span-2{grid-column:span 2/span 2}}}@font-face{font-family:Sentient;src:url(/Sentient-Extralight.woff2)format("woff2");font-weight:200;font-display:swap}@font-face{font-family:Sentient;src:url(/Sentient-LightItalic.woff2)format("woff2");font-weight:300;font-style:italic;font-display:swap}:root{font-synthesis:none;color-scheme:dark;color:#e8ebec;--paper:#e8ebec;--logo-white:#e8ebec;--muted:#bfceda;--ocean:#2080c0;--line:#52748c;background:#050b11;font-family:Space Grotesk,Arial,sans-serif;font-size:16px}*{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-color:#668ba5 #08131e;scrollbar-width:auto;scroll-padding-top:24px}body{min-width:280px;margin:0}::selection{color:#fff;background:#235c85}::-webkit-scrollbar{width:14px;height:14px}::-webkit-scrollbar-track{background:#08131e}::-webkit-scrollbar-thumb{background:#668ba5;border:3px solid #08131e;border-radius:8px}a{color:inherit;text-underline-offset:.25em;text-decoration-color:#7ab2d7}a:hover{color:#a3ddff}button,input,textarea,select{font:inherit}button{cursor:pointer;min-width:24px;min-height:44px}button:disabled{cursor:default}a,button,summary{touch-action:manipulation}:focus-visible{outline-offset:5px;outline:3px solid #7dd3fc}main:focus{outline-offset:6px;outline:3px solid #7dd3fc}p,li,dd{line-height:1.7}p{margin:0 0 1.25rem}p:last-child{margin-bottom:0}h1,h2,h3,h4{margin-top:0}h2,h3{letter-spacing:-.035em;line-height:1.2}h2{margin-bottom:1.25rem;font-size:clamp(30px,3vw,44px)}h3{margin-bottom:1rem;font-size:clamp(23px,2.1vw,30px)}em,.accent,.signature{font-family:Sentient,Georgia,serif;font-weight:300}.accent{color:#a9d8ec;font-size:24px}.eyebrow{letter-spacing:.07em;color:#a9d8ec;margin:0 0 1rem;font:500 14px/1.5 ui-monospace,monospace}.visually-hidden{clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.personal-logo{object-fit:contain;box-shadow:none;filter:none;clip-path:ellipse(44% 45% at 50% 49%);background:0 0;border-radius:0;display:block}.header-logo{flex-shrink:0;width:48px;height:auto}.site-nav{background:#0b141c;border-bottom:1px solid #344b5c;justify-content:space-between;align-items:center;gap:24px;min-height:96px;padding:16px max(24px,50% - 600px);display:flex}.site-nav.light{z-index:5;background:linear-gradient(#050b11ed,#050b1170);border-color:#25435455;position:absolute;inset:0 0 auto}.wordmark{flex-shrink:0;align-items:center;gap:8px;min-height:48px;text-decoration:none;display:flex}.wordmark .brand-name{letter-spacing:-.04em;white-space:nowrap;font:italic 300 clamp(20px,1.7vw,25px)/1.12 Sentient,Georgia,serif}.site-nav nav{flex-wrap:wrap;align-items:center;gap:8px 24px;font-size:15px;display:flex}.site-nav nav a{border-bottom:2px solid #0000;align-items:center;min-height:44px;padding:8px 2px;text-decoration:none;display:inline-flex}.site-nav nav a:hover{border-bottom-color:#6dafda}.site-nav nav a[aria-current=page]{border-bottom-color:#e8ebec}.github-access{min-height:44px;color:inherit;font:inherit;white-space:nowrap;background:0 0;border:0;justify-content:center;align-items:center;gap:8px;padding:8px 2px;display:inline-flex}.github-access svg{flex-shrink:0}.site-nav nav .github-access{border-bottom:2px solid #0000}.site-nav nav .github-access:hover{color:#a3ddff;border-bottom-color:#6dafda}.ocean-footer .github-access{font-size:14px}.ocean-footer .github-access:hover{color:#a3ddff;text-underline-offset:.3em;text-decoration:underline}.github-dialog{width:min(560px,100% - 40px);max-height:calc(100svh - 40px);color:var(--paper);background:linear-gradient(145deg,#132639,#0b141c);border:1px solid #709dbd;margin:auto;padding:clamp(24px,4vw,40px);overflow:auto;box-shadow:0 24px 80px #0008}.github-dialog::backdrop{background:#02070cd9}.github-dialog-heading{justify-content:space-between;align-items:start;gap:16px;margin-bottom:20px;display:flex}.github-dialog-heading .eyebrow{margin:0;padding-top:11px}.github-dialog-close{width:44px;height:44px;color:var(--paper);background:0 0;border:1px solid #52748c;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:28px;line-height:1;display:inline-flex}.github-dialog-close:hover{color:#a3ddff;border-color:#a3ddff}.github-dialog h2{font-size:clamp(28px,3vw,38px)}.github-dialog p:not(.eyebrow){color:#d9e6ef;font-size:17px}.github-dialog-actions{flex-wrap:wrap;align-items:center;gap:20px 24px;margin-top:28px;display:flex}.github-dialog-actions .text-link{align-items:center;min-height:44px;font-size:15px;display:inline-flex}.nav-resume{flex-shrink:0}.motion-toggle{left:max(0px,env(safe-area-inset-left,0px));bottom:max(12px,env(safe-area-inset-bottom,0px));z-index:20;width:28px;min-width:28px;height:28px;min-height:28px;color:var(--paper);background:#0b1723f2;border:1px solid #709dbd;border-radius:50%;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex;position:fixed}.motion-toggle svg{width:12px;height:12px;display:block}.motion-toggle:hover{color:#a3ddff;border-color:#a3ddff}.motion-toggle:focus-visible{outline-offset:1px}.skip{z-index:50;color:#050b11;background:#e8ebec;min-height:44px;padding:12px 16px;position:absolute;top:-100px;left:16px}.skip:focus{color:#050b11;top:12px}.video-introduction.retro-surface{background:#142b3d;border-top:1px solid #52748c;border-bottom:1px solid #52748c}.video-introduction-layout{grid-template-columns:minmax(0,.85fr) minmax(0,1.65fr);align-items:center;gap:clamp(28px,5vw,64px);display:grid}.video-introduction-copy p:not(.eyebrow){color:#d9e6ef;max-width:35ch;font-size:17px}.video-introduction-skills{color:#d9e6ef;margin:24px 0 0;padding-left:20px;font-size:16px;list-style:outside}.video-introduction-skills li{margin-bottom:8px;padding-left:3px}.video-introduction-poster{min-width:0;margin:0}.video-introduction-poster img{aspect-ratio:16/9;object-fit:cover;border:1px solid #52748c;width:100%;height:auto;display:block}.site-ocean#webgl{z-index:0;pointer-events:none;background:#050b11;position:fixed;inset:0}#webgl canvas{background:#050b11;width:100%;height:100%;display:block}.site-ocean:after{content:"";pointer-events:none;background:linear-gradient(#050b11b3,#050b11b3),radial-gradient(at 50% 47%,#0000 18%,#050b1155 60%,#050b11e8);position:absolute;inset:0}.ocean-fallback{background:#050b11;position:absolute;inset:0;overflow:hidden}.ocean-fallback svg{width:100%;height:100%;display:block}.site-content{z-index:1;position:relative}.ocean-wait{opacity:0}.ocean-enter{animation:1.6s ease-out both ocean-depth-expand}@keyframes ocean-depth-expand{0%{opacity:0;clip-path:ellipse(12% 12%)}to{opacity:1;clip-path:ellipse(100% 100%)}}.hero{--hero-top:120px;--hero-reserve:100px;min-height:100svh;padding:var(--hero-top)24px var(--hero-reserve);color:var(--paper);background:0 0;justify-content:center;align-items:center;display:flex;position:relative}.hero-copy{z-index:1;text-align:center;perspective:900px;flex-direction:column;align-items:center;width:100%;max-width:800px;display:flex;position:relative}.hero .reveal{animation:.55s ease-out both hero-reveal}.intro-wait .reveal{opacity:0;animation:none}.intro-wait .hero-logo{transform:translate(var(--logo-start-x,0px),var(--logo-start-y,0px))scale(.86)}.hero-logo{width:min(clamp(150px,24svh,280px),70vw);height:auto;margin:0 0 18px}.hero-logo[data-loaded=false]{visibility:hidden}.intro-ready .hero-logo{animation:1.8s cubic-bezier(.22,.61,.36,1) both logo-depth-lift}.intro-ready .reveal-name{animation-delay:1.8s}.intro-ready .reveal-role{animation-delay:2.05s}.intro-ready .reveal-description{animation-delay:2.25s}.intro-ready .reveal-button{animation-delay:2.55s}.intro-ready .reveal-cue{animation:.55s ease-out 2.85s both cue-reveal}.intro-ready .hero-logo[data-late=true]{animation:.6s ease-out both late-logo-fade}@keyframes hero-reveal{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes cue-reveal{0%{opacity:0}to{opacity:1}}@keyframes late-logo-fade{0%{opacity:0;transform:none}to{opacity:1;transform:none}}@keyframes logo-depth-lift{0%{opacity:0;transform:translate(var(--logo-start-x,0px),var(--logo-start-y,0px))scale(.86)}35%,50%{opacity:1;transform:translate(var(--logo-start-x,0px),var(--logo-start-y,0px))scale(1)}to{opacity:1;transform:translateY(0)scale(1)}}.hero-name{letter-spacing:-.035em;color:var(--logo-white);background:#050b11f2;border-radius:4px;width:fit-content;max-width:100%;margin:0 0 18px;padding:2px 8px;font:italic 300 clamp(32px,4vw,53.333px)/1.15 Sentient,Georgia,serif}.hero-role{background:#050b11b3;margin-bottom:14px;padding:2px 8px;font-size:clamp(16px,1.5vw,20px);line-height:1.5}.hero-description{text-wrap:balance;color:#d9e6ef;background:#050b11b8;border-radius:8px;max-width:54ch;margin-bottom:26px;padding:4px 8px;font-size:clamp(16px,1.25vw,18px);line-height:1.65}.bracket-button,.retro-button,.motion{min-height:48px;color:var(--paper);background:linear-gradient(145deg,#20384c,#112130);border:1px solid #709dbd;justify-content:center;align-items:center;padding:12px 18px;font-size:14px;line-height:1.4;text-decoration:none;transition:background-color .15s,border-color .15s;display:inline-flex}.bracket-button:hover,.retro-button:hover,.motion:not(:disabled):hover{color:#fff;background:#213f56;border-color:#a3ddff}.bracket-button{text-transform:uppercase;background:#08131ee8;gap:22px;font-family:ui-monospace,monospace}.bracket-button span{color:#79caff;font-size:25px;line-height:1}.retro-button{font-weight:600}.hero-bottom{z-index:2;justify-content:space-between;align-items:center;gap:20px;width:100%;padding:0 max(24px,50% - 600px);display:flex;position:absolute;bottom:24px;left:0}.hero-bottom>span{color:#d9e6ef;max-width:38%;font:14px/1.5 ui-monospace,monospace}.motion{flex-shrink:0;padding:12px 14px;font-size:14px}.motion:disabled{opacity:1;color:#d9e6ef;background:#12243a;border-color:#709dbd}.scroll-cue{color:#a3ddff;justify-content:center;align-items:center;width:48px;height:48px;font-size:28px;text-decoration:none;display:flex;position:absolute;left:calc(50% - 24px)}.scroll-cue span{animation:1.8s ease-in-out infinite scroll-wave;display:block}@keyframes scroll-wave{0%,to{transform:translateY(0)}50%{transform:translateY(6px)}}.name-shine{max-width:100%;color:var(--logo-white);display:inline-block;position:relative}.name-shine:after{content:attr(data-text);color:#0000;filter:drop-shadow(0 0 5px #008dff);opacity:0;pointer-events:none;background:linear-gradient(105deg,#0000 35%,#008dff 43%,#52c4ff,#007bff 57%,#0000 65%) 100%/300% 100%;-webkit-background-clip:text;background-clip:text;position:absolute;inset:0}.intro-ready .name-shine:after{animation:.85s ease-in-out 2.4s both bright-name-shine}@keyframes bright-name-shine{0%{opacity:0;background-position:100%}12%,82%{opacity:1}to{opacity:0;background-position:0%}}.motion-paused .hero .reveal,.hero .reveal:focus-visible,.ocean-paused{opacity:1!important;animation:none!important;transform:none!important}.ocean-paused{clip-path:none!important}.motion-paused .scroll-cue span{animation:none}.motion-paused .name-shine:after{opacity:0!important;animation:none!important}.retro-surface{z-index:2;background:#0b141cf7;padding:clamp(56px,6vw,88px) 28px;position:relative;box-shadow:0 -24px 70px #050b1155}#selected-work.retro-surface{box-shadow:none;background:0 0}.retro-container{width:100%;max-width:1200px;margin:auto}.inner-page{min-height:calc(100svh - 196px)}.page-intro{max-width:960px}.about-intro-layout{grid-template-columns:minmax(0,1fr) minmax(260px,36%);align-items:center;gap:clamp(32px,6vw,76px);display:grid}.about-intro-layout>div{min-width:0}.about-intro-layout .page-intro{max-width:none}.about-intro-layout .page-intro h1{margin-bottom:1.5rem}.about-headshot{aspect-ratio:1122/1402;object-fit:cover;object-position:center;border:1px solid #54768d;width:100%;height:auto;display:block;box-shadow:0 18px 46px #0005}.page-intro h1,.project-story h1{letter-spacing:-.055em;overflow-wrap:anywhere;margin:0 0 2rem;font-size:clamp(44px,6vw,76px);font-weight:600;line-height:1.08}.intro-text{color:#d9e6ef;max-width:72ch;margin-bottom:3rem;font-size:18px}.retro-header,.section-heading{justify-content:space-between;align-items:end;gap:24px;margin:0 0 2rem;display:flex}.section-heading:not(:first-child){margin-top:4rem}.retro-header h2,.section-heading h2{margin:0}.text-link{text-underline-offset:.3em;align-items:center;min-height:44px;padding:8px 0;font-size:16px;-webkit-text-decoration:underline #6dafda;text-decoration:underline #6dafda;display:inline-flex}.text-link:hover{text-decoration-color:currentColor}.proof-value,.project-limit,.case-summary small{color:#c4d4e0;font-size:16px;line-height:1.7}.retro-card.bg-white,.home-work-card,.work-preview-card,.work-card,.recruiter-project-card{min-width:0;color:var(--paper);background:linear-gradient(145deg,#162630,#101a24);border:1px solid #54768d;padding:clamp(24px,3vw,36px);position:relative;box-shadow:0 10px 25px #0002}.retro-card p,.home-work-card p,.work-preview-card p,.work-card p,.recruiter-project-card p{color:#d9e6ef;overflow-wrap:anywhere;font-size:17px}.retro-card .eyebrow,.home-work-card .eyebrow,.work-preview-card .eyebrow,.work-card .eyebrow,.recruiter-project-card .eyebrow{color:#a9d8ec;font-size:14px}.retro-card .proof-value,.recruiter-project-card .proof-value{color:#c4d4e0;border-top:1px solid #435f73;margin-top:24px;padding-top:18px;font-size:16px}.home-work-intro,.technical-intro{max-width:76ch;margin-bottom:2.5rem}.home-work-intro p:not(.eyebrow),.technical-intro p:not(.eyebrow),.how-i-work p{color:#d9e6ef;font-size:18px}.home-work-grid,.work-preview-grid,.recruiter-project-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:24px;display:grid}.home-work-card,.work-preview-card{flex-direction:column;align-items:start;display:flex}.home-work-card h3,.work-preview-card h3{font-size:26px}.home-work-card .text-link,.work-preview-card .text-link{margin-top:auto}.working-approach,.how-i-work{border-top:1px solid var(--line);margin-top:3.5rem;padding-top:3rem}.approach-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;margin:2rem 0 0;padding:0;list-style:none;display:grid}.approach-list li{border-top:2px solid #709dbd;min-width:0;padding-top:18px}.approach-list h3,.approach-list strong{margin-bottom:12px;font-size:20px;display:block}.approach-list p{color:#d9e6ef;font-size:17px}.selected-projects,.recruiter-projects{margin-bottom:3rem}.project-list{margin-top:2.5rem}.project-summary{border-top:1px solid #52748c;padding:36px 0;scroll-margin-top:24px}.project-summary:last-child{border-bottom:1px solid #52748c}.project-summary-copy{max-width:80ch}.project-summary-copy h2{font-size:clamp(27px,3vw,36px)}.project-summary p{color:#d9e6ef;font-size:17px}.project-summary.project-row{max-width:none;padding:0}.project-accordion>summary{cursor:pointer;grid-template-columns:minmax(0,1fr) 32px;align-items:center;gap:24px;min-height:88px;padding:23px 0;list-style:none;transition:color .18s;display:grid}.project-accordion>summary::-webkit-details-marker{display:none}.project-accordion>summary h2,.project-accordion>summary h3{overflow-wrap:anywhere;margin:0;font-size:clamp(21px,2.2vw,28px);line-height:1.35}.project-expand{color:#a9d8ec;width:32px;height:32px;transition:transform .18s;position:relative}.project-expand span{background:currentColor;width:16px;height:2px;position:absolute;top:15px;left:8px}.project-expand span:last-child{transform:rotate(90deg)}.project-accordion[open]>summary .project-expand{transform:rotate(45deg)}.project-accordion-body{min-width:0;padding:8px 0 32px}.project-accordion-body>p{max-width:85ch}.project-accordion-body>.eyebrow{color:#a9d8ec;font-size:14px}.project-accordion-body .project-narrative{margin-top:1rem}@media(hover:hover)and (pointer:fine){.project-accordion>summary:hover{color:#b9e9ff}.project-accordion>summary:hover .project-expand{color:#e5f5ff}}@media(max-width:600px){.project-accordion>summary{gap:14px;min-height:76px;padding:20px 0}}@media(prefers-reduced-motion:reduce){.project-accordion>summary,.project-expand{transition:none}}@media(forced-colors:active){:focus-visible,main:focus{outline-color:highlight}.motion-toggle{color:buttontext;background:buttonface;border-color:buttontext}}.project-facts,.case-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 40px;margin:1.75rem 0 1.5rem;display:grid}.project-facts>div,.case-facts>div{min-width:0}.project-facts dt,.case-facts dt,.project-facts h3,.case-facts h3{letter-spacing:normal;color:#a9d8ec;margin-bottom:8px;font-size:16px;font-weight:600;line-height:1.5}.project-facts dd,.case-facts dd{color:#d9e6ef;margin:0;font-size:17px}.project-limit{border-left:2px solid #709dbd;max-width:80ch;padding-left:18px}.project-actions,.blog-links,.download-links{flex-wrap:wrap;align-items:center;gap:16px 24px;margin-top:24px;display:flex}.resume-strip{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:32px;margin-top:4rem;padding-top:3rem;display:grid}.resume-strip .download-links{margin-top:0}.resume-strip-single{background:linear-gradient(110deg,#14232f,#101a24 65%,#132331);border:1px solid #496b81;border-left:3px solid #78c9ee;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:28px;margin-top:3rem;padding:24px 28px 24px 32px;position:relative;box-shadow:0 12px 32px #0003}.resume-strip-single>div:first-child{min-width:0}.resume-strip-single .eyebrow{color:#a9d8ec;letter-spacing:.12em;margin:0 0 8px}.resume-strip-single h2{margin:0;font-size:clamp(24px,3vw,32px)}.resume-strip-single p:last-child{color:#c4d4e0;margin:8px 0 0}.resume-strip-single .download-links{margin:0}.project-story{max-width:960px}.project-story>.eyebrow{margin-top:2rem}.story-status{color:#b9e9ff;background:#1c2e3a;border:1px solid #6190a9;padding:10px 14px;font-size:16px;display:inline-block}.story-section{margin:2.5rem 0}.story-section h2{margin-bottom:1rem;font-size:28px}.story-section p{max-width:76ch;font-size:18px}.story-flow{margin:1.5rem 0;padding-left:1.5rem}.story-flow li{margin-bottom:12px;padding-left:8px;font-size:17px}.story-flow li span{color:#a9d8ec;margin-right:12px}.about-bio{max-width:76ch;font-size:18px}.about-details{border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:40px;margin-top:3rem;padding-top:2.5rem;display:grid}.about-details h2{font-size:30px}.about-details p{max-width:76ch;font-size:17px}.contact-layout{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:56px;margin-top:2.5rem;display:grid}.contact-form-column{border-left:1px solid var(--line);padding-left:32px}.contact-primary,.contact-info-column,.contact-form-column{min-width:0}.contact-primary p{max-width:54ch;font-size:18px}.contact-channel-actions{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:10px;margin-top:1.5rem;padding-top:1.5rem;display:flex}.contact-channel-button{min-height:46px;color:var(--paper);font:inherit;white-space:nowrap;background:linear-gradient(145deg,#20384c,#112130);border:1px solid #709dbd;border-radius:2px;justify-content:center;align-items:center;gap:9px;padding:10px 13px;font-size:14px;font-weight:600;line-height:20px;text-decoration:none;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.contact-channel-button:hover,.contact-channel-button:focus-visible{color:#fff;background:#213f56;border-color:#a3ddff}.contact-channel-button svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:0 0 20px;width:20px;height:20px;display:block}.contact-channel-button>span{align-items:center;min-height:20px;line-height:20px;display:inline-flex}.contact-channel-button svg[fill=currentColor]{fill:currentColor;stroke:none}.resume-icon{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;flex:0 0 20px;width:20px;height:20px;display:block}.external-arrow{vertical-align:.1em;margin-left:.12em;font-size:.82em;line-height:1;display:inline-block}.contact-channel-actions .github-access{padding:10px 13px;font-size:14px;font-weight:600;line-height:20px}.contact-email{overflow-wrap:anywhere;margin-top:1.5rem;font-size:clamp(18px,2vw,24px)}.contact-email .text-link{font-size:inherit;overflow-wrap:anywhere;max-width:100%;line-height:1.6;display:inline-block}.accessibility-feedback{color:#d9e6ef;max-width:54ch;font-size:16px!important}.legal-copy,.writing-empty{max-width:78ch;font-size:18px}.legal-copy h2{margin-top:2.5rem;font-size:28px}.case-list{border-top:1px solid var(--line)}.case-detail{border-bottom:1px solid var(--line)}.case-detail summary{cursor:pointer;letter-spacing:-.03em;grid-template-columns:minmax(0,1fr) 30px;align-items:center;gap:20px;padding:28px 0;font-size:26px;list-style:none;display:grid}.case-detail summary::-webkit-details-marker{display:none}.case-detail summary small{letter-spacing:normal;color:var(--muted);margin-top:8px;font-size:16px;display:block}.case-detail .expand{font-size:30px}.case-detail[open] .expand{transform:rotate(45deg)}.case-body{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 40px;padding:8px 0 32px;display:grid}.case-body h3{letter-spacing:normal;color:#a9d8ec;font-size:16px}.case-body p{font-size:17px}.ocean-footer{isolation:isolate;position:relative;color:#e8ebec!important;background:0 0!important;padding:88px 0 32px!important;display:block!important}.ocean-footer:before{content:"";z-index:-1;pointer-events:none;background:linear-gradient(#07111e 0,#040c17e6 88px,#040c17c7);position:absolute;inset:0}.ocean-footer-inner{max-width:1200px;margin:auto;padding:0 32px}.footer-main{grid-template-columns:1fr auto;align-items:center;gap:32px;display:grid}.footer-name{color:#e8ebec;margin:0 0 8px;font-family:Georgia,serif;font-size:clamp(24px,3vw,32px);font-style:italic}.footer-role{color:#e8ebec;margin:0;font-size:14px}.footer-actions,.footer-rail nav{flex-wrap:wrap;gap:24px;display:flex}.ocean-footer a{color:#e8ebec;align-items:center;min-height:44px;font-size:14px;display:inline-flex}.footer-rail{color:#e8ebec;border-top:1px solid #718297;flex-wrap:wrap;align-items:center;gap:12px 24px;margin-top:32px;padding-top:16px;font-size:14px;display:flex}.ocean-footer .ocean-control{min-height:44px;color:#e8ebec!important;background:#12243a!important;border:1px solid #b6cbe3!important}.ocean-footer :focus-visible{outline-offset:4px;outline:3px solid #7dd3fc}@media(max-width:720px){.footer-main{grid-template-columns:1fr}.ocean-footer-inner{padding:0 20px}.ocean-footer{padding-top:64px!important}.footer-rail{gap:12px 20px}}@media(forced-colors:active){.ocean-footer{color:canvastext!important;background:canvas!important}.ocean-footer a,.footer-name,.footer-role{color:canvastext}.ocean-footer:before{display:none}}.ocean-footer .motion{min-height:44px;color:#e8ebec!important;opacity:1!important;background:#12243a!important;border:1px solid #b6cbe3!important}.ocean-footer .motion:disabled{color:#e8ebec!important;opacity:1!important}.footer-brand{align-items:center;gap:clamp(16px,2vw,24px);min-width:0;display:flex}.footer-logo{flex-shrink:0;width:clamp(56px,7vw,88px);height:auto;display:block}.footer-brand-copy{min-width:0}.footer-brand .footer-name{white-space:nowrap}.ocean-footer a{text-decoration:none}.ocean-footer a:hover{color:#a3ddff;text-underline-offset:.3em;text-decoration:underline}.ocean-footer .motion{font-size:14px}@media(max-width:1000px){.site-nav{gap:16px}.site-nav nav{gap:8px 16px}}@media(max-width:800px){.about-intro-layout{grid-template-columns:minmax(0,1fr) minmax(180px,34%);align-items:start;gap:24px}.about-headshot{width:100%;margin:1.5rem auto 0}.site-nav{flex-wrap:wrap;gap:8px 16px;padding:16px 20px}.site-nav nav{order:3;justify-content:space-between;gap:0 8px;width:100%;font-size:14px}.site-nav nav a,.site-nav nav .github-access{padding:8px 0}.wordmark .brand-name{font-size:clamp(18px,3.5vw,23px)}.video-introduction-layout{grid-template-columns:1fr;gap:28px}.video-introduction-copy p:not(.eyebrow){max-width:48ch}.hero-name{font-size:clamp(32px,8.1vw,42px)}.hero-logo{width:min(clamp(128px,24svh,240px),62vw)}.hero-description{max-width:38ch;font-size:16px}.desktop-break{display:none}.hero-bottom{gap:12px;padding:0 20px}.hero-bottom>span{max-width:170px;font-size:14px}.hero .motion{max-width:144px}.scroll-cue{bottom:0}.retro-surface{padding:52px 24px}.home-work-grid,.work-preview-grid,.recruiter-project-grid{grid-template-columns:1fr}.project-facts,.case-facts,.case-body,.approach-list{grid-template-columns:1fr;gap:22px}.approach-list li{padding-top:16px}.contact-layout,.resume-strip,.about-details{grid-template-columns:1fr;gap:32px}.contact-form-column{border-left:0;padding-left:0}.retro-header,.section-heading{flex-direction:column;align-items:start}.project-summary{padding:30px 0}}@media(max-width:500px){.about-intro-layout{grid-template-columns:1fr}.about-headshot{width:min(100%,360px);margin:0 auto}.hero{--hero-reserve:160px;padding-left:20px;padding-right:20px}.hero-bottom{grid-template-columns:1fr auto;align-items:center;display:grid}.hero-bottom>span{max-width:150px}.hero-bottom .scroll-cue{bottom:56px;left:calc(50% - 24px)}.header-logo{width:42px}.wordmark .brand-name{font-size:clamp(14px,7.5vw - 10px,23px)}.site-nav{gap:8px 10px;padding-left:16px;padding-right:16px}.nav-resume{padding:10px 12px}.hero-name{margin-bottom:14px}.hero-description{margin-bottom:20px}.retro-surface{padding:48px 20px}.page-intro h1,.project-story h1{font-size:clamp(39px,11vw,54px)}.home-work-card,.work-preview-card,.work-card,.recruiter-project-card{padding:24px}.bracket-button{gap:16px}.project-actions{flex-direction:column;align-items:start;gap:12px}}@media(max-height:650px)and (max-width:500px){.hero-logo{width:128px;margin-bottom:14px}.hero-role{margin-bottom:10px}}@media(max-width:360px){.footer-brand{gap:12px}.footer-logo{width:48px}.footer-brand .footer-name{font-size:clamp(15px,5.5vw,20px)}.site-nav nav{grid-template-columns:repeat(3,minmax(0,1fr));gap:0 8px;display:grid}.site-nav nav a,.site-nav nav .github-access{justify-content:center}}@media(max-height:600px)and (min-width:560px){.hero{--hero-reserve:76px;padding-top:calc(var(--hero-top) - 12px)}.hero-copy{grid-template-columns:minmax(120px,1fr) minmax(0,2fr);place-items:center;gap:10px 28px;max-width:940px;display:grid}.hero-logo{grid-area:1/1/5;width:min(24vw,200px);margin:0}.hero-name{grid-area:1/2;margin:0;font-size:clamp(30px,4vw,40px)}.hero-role{grid-area:2/2;margin:0;font-size:16px}.hero-description{grid-area:3/2;margin:0;font-size:16px;line-height:1.5}.hero .bracket-button{grid-area:4/2}}@media(max-width:720px){.retro-surface,.hero,.hero-bottom,.ocean-footer-inner{padding-left:max(36px,calc(env(safe-area-inset-left,0px) + 36px))}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.hero .reveal,.ocean-wait,.ocean-enter{opacity:1!important;transform:none!important}.ocean-wait,.ocean-enter{clip-path:none!important}.name-shine:after{opacity:0!important}}@media(forced-colors:active){.site-ocean{display:none}.hero,.retro-surface,.site-nav,.site-nav.light,.hero-role,.hero-description{color:canvastext;background:canvas}.home-work-card,.work-preview-card,.work-card,.retro-card.bg-white,.recruiter-project-card,.story-status{color:canvastext;box-shadow:none;background:canvas;border-color:canvastext}.bracket-button,.retro-button,.motion{color:buttontext;background:buttonface;border-color:buttontext}.hero-bottom>span,.hero-description,.project-summary p,.project-facts dd,.case-facts dd,.proof-value,.eyebrow{color:canvastext}:focus-visible{outline-color:highlight}.github-dialog{color:canvastext;background:canvas;border-color:canvastext}.github-dialog p:not(.eyebrow),.github-dialog-close{color:canvastext}}.contact-form{border-top:0;margin-top:0;padding-top:0}.form-fields{border:0;min-width:0;margin:0;padding:0}.contact-form label{flex-direction:column;gap:8px;margin-bottom:24px;font-size:16px;display:flex}.required-marker{color:#a9d8ec;font-weight:600;display:inline}.contact-form input:not([type=checkbox]),.contact-form select,.contact-form textarea{color:#e8ebec;background:#08131e;border:1px solid #709dbd;border-radius:0;width:100%;min-height:48px;padding:12px}.contact-form textarea{resize:vertical;line-height:1.6}.contact-input-row{grid-template-columns:1fr 1fr;gap:20px;display:grid}.form-help{color:#bfceda;font-size:16px!important}.reply-permissions{border:1px solid var(--line);flex-wrap:wrap;gap:12px 24px;margin:20px 0 24px;padding:16px 20px;display:flex}.reply-permissions legend{padding:0 8px;font-size:16px}.contact-form .check-choice{cursor:pointer;flex-direction:row;align-items:center;gap:12px;min-height:44px;margin:0}.contact-form input[type=checkbox]{accent-color:#2080c0;flex-shrink:0;width:24px;height:24px}.contact-form .blog-consent{margin-bottom:12px}.field-error{color:#ffd3be;font-size:16px}[aria-invalid=true]{border-color:#ffd3be!important}.form-status{overflow-wrap:anywhere;margin-top:24px;font-size:17px;line-height:1.7}.form-fields:disabled{opacity:.8}.blog-library{max-width:84ch}.blog-maintenance{background:linear-gradient(135deg,#122334,#0b141c 74%);border:1px solid #52748c;grid-template-columns:64px minmax(0,1fr);align-items:center;gap:clamp(20px,4vw,36px);max-width:780px;margin-top:clamp(32px,6vw,64px);padding:clamp(28px,5vw,48px);display:grid;position:relative}.blog-maintenance:after{content:"";pointer-events:none;border:1px solid #52748c33;position:absolute;inset:8px}.blog-maintenance-mark{color:#a9d8ec;background:#0b1723;border:1px solid #52748c;place-items:center;width:64px;height:64px;display:grid}.blog-maintenance-mark svg{width:40px;height:40px;display:block}.blog-maintenance .eyebrow{margin-bottom:12px}.blog-maintenance h2{margin:0 0 12px;font-size:clamp(25px,3.2vw,36px)}.blog-maintenance p:last-child{color:#bfceda;margin:0;font-size:18px}.blog-entry{border-top:1px solid var(--line);padding:32px 0;scroll-margin-top:24px}.blog-entry h2{font-size:30px}.blog-entry p{font-size:18px}.project-archive{margin-top:4rem}.project-archive h2{font-size:32px}.project-archive .archive-entry{border-top:1px solid var(--line);max-width:88ch;padding:24px 0}.project-archive .archive-entry:has(.project-diagrams){max-width:none}.project-archive .archive-entry>p{max-width:88ch}.project-narrative{max-width:85ch;margin:1.5rem 0}.project-narrative p{margin-bottom:1rem}.project-proof{max-width:900px;margin:28px 0}.project-proof h3{font-size:24px}.project-proof h4{letter-spacing:0;font-size:17px}.project-proof figure{margin:20px 0}.project-proof figure a{display:block}.project-proof img{border:1px solid #52748c;width:100%;height:auto}.project-proof figcaption{color:#bfceda;margin-top:10px;font-size:15px;line-height:1.6}.intranet-figure{margin:0}.home-work-card-wide{grid-column:1/-1}.intranet-figure img{border:1px solid #52748c;width:100%;height:auto;display:block}.intranet-figure figcaption{color:#bfceda;max-width:85ch;margin-top:16px;font-size:15px;line-height:1.6}.intranet-account{max-width:85ch}.intranet-account section{margin-top:32px}.intranet-account h3{font-size:24px}.intranet-account p{font-size:16px}.photo-proof-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}.sample-output{background:#102331;border:1px solid #52748c;margin:24px 0;padding:20px}.sample-details{border-top:1px solid #52748c;border-bottom:1px solid #52748c;margin:20px 0}.sample-details summary{color:#a9d8ec;cursor:pointer;min-height:48px;padding:14px 4px;font-size:17px}.android-proof-layout{grid-template-columns:minmax(180px,300px) minmax(0,1fr);align-items:start;gap:28px;display:grid}.android-proof-layout figure{min-width:0;margin:0}.native-video-figure video{object-fit:contain;background:#050b11;border:1px solid #54768d;width:100%;height:auto;max-height:72svh;display:block}.native-video-figure video:focus-visible{outline-offset:4px;outline:3px solid #7dd3fc}.native-video-figure video:fullscreen{border:0;width:100%;height:100%;max-height:none}.native-video-figure video::cue{font-size:1rem}.native-video-figure figcaption,.native-shot-grid figcaption,.proof-credit{color:#c4d9e7;font-size:14px;line-height:1.6}.native-video-figure figcaption{margin-top:12px}.native-proof-notes>p:first-child{margin-top:0}.mobile-release{border-top:1px solid #52748c;margin-top:28px;padding-top:24px}.mobile-release-version span{color:#b9e4f4;margin-left:12px;font-size:14px;display:inline-block}.mobile-release-links{flex-wrap:wrap;gap:12px;display:flex}.mobile-release-links a{flex-wrap:wrap;align-items:center;gap:12px;min-height:48px;display:flex}.download-size{color:#c4d9e7;font-size:14px}.mobile-release-details dl{margin:16px 4px}.mobile-release-details dt{color:#b9e4f4;margin-top:20px;font-weight:500}.mobile-release-details dd{margin:6px 0 0;line-height:1.7}.mobile-release-details code{overflow-wrap:anywhere;font-size:14px}.android-widget-proof>.android-proof-layout{padding:0 4px 16px}.android-widget-still{max-width:300px;margin-inline:auto!important}@media(max-width:480px){.mobile-release-version span{margin:8px 0 0;display:block}.mobile-release-links a{justify-content:space-between;width:100%}}.native-shot-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0;display:grid}.android-native-proof .native-shot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.native-shot-grid img{border:1px solid #54768d;width:100%;height:auto;display:block}.native-shot-grid figcaption{margin-top:8px}@media(max-width:720px){.android-proof-layout{grid-template-columns:minmax(0,1fr);gap:20px}.native-video-figure{justify-self:center;width:min(100%,300px)}.native-shot-grid{gap:8px}}.landscape-video-figure{width:100%}.landscape-video-figure video:not(:fullscreen){aspect-ratio:8/5;max-width:min(100%,115.2svh);max-height:none;margin-inline:auto}.contextmanager-proof .context-portrait-video{width:min(100%,300px);margin-inline:auto}.contextmanager-proof .context-portrait-video video:not(:fullscreen){aspect-ratio:390/844;max-width:min(100%,33.27svh);max-height:none;margin-inline:auto}.contextmanager-proof .context-shot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}@media(max-width:720px){.contextmanager-proof .context-shot-grid{grid-template-columns:minmax(0,1fr)}.landscape-video-figure{width:100%}.memory-shot-grid{grid-template-columns:minmax(0,1fr);gap:16px}}.sample-details>p{padding:0 4px 16px}.sample-output pre{white-space:pre-wrap;overflow-wrap:anywhere;color:#d9e6ef;margin:0;font:14px/1.8 ui-monospace,monospace}.sample-limit{color:#bfceda;font-size:15px!important}@media(max-width:600px){.photo-proof-grid{grid-template-columns:1fr;gap:0}.sample-output{padding:14px}}.project-diagrams{background:#0a1722e8;border:1px solid #52748c;margin:1.5rem 0 .25rem}.project-diagrams>summary{color:#b9e4f4;cursor:pointer;min-height:52px;padding:16px 20px;font-weight:500;line-height:1.5}.project-diagrams[open]>summary{border-bottom:1px solid #52748c}.project-diagrams-body{padding:28px}.work-diagram{margin:0}.work-diagram+.work-diagram,.memory-demo{border-top:1px solid #52748c;margin-top:40px;padding-top:32px}.work-diagram figcaption{max-width:85ch;margin-bottom:28px}.work-diagram h3,.memory-demo h3{font-size:27px}.work-diagram h4,.memory-demo h4{letter-spacing:0;margin:0 0 12px;font-size:17px;line-height:1.5}.work-diagram p{font-size:16px}.diagram-layout{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:38px;display:grid;position:relative}.diagram-connections{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.diagram-connections>path{fill:none;stroke:#80bbd4;stroke-width:1.5px}.diagram-lane{min-width:0;position:relative}.diagram-lane>h4{color:#a9d8ec;border-bottom:1px solid #52748c;padding-bottom:10px}.diagram-node{background:#102331;border:1px solid #7196ae;margin-bottom:24px;padding:18px;position:relative}.diagram-node strong{margin-bottom:10px;font-size:17px;line-height:1.4;display:block}.diagram-node p{color:#d9e6ef;font-size:15px;line-height:1.6}.diagram-explanation{margin-top:24px}.diagram-explanation ol{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 28px;padding-left:24px;display:grid}.diagram-explanation li{padding-left:4px;font-size:15px}.diagram-explanation strong,.diagram-explanation span{display:block}.diagram-explanation strong span{display:inline}.diagram-explanation li>span{color:#d9e6ef;margin-top:5px}.diagram-decisions{max-width:88ch;margin-top:28px}.diagram-routes{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.diagram-sources{color:#a9d8ec;margin-top:20px}.diagram-sources a{min-height:44px;padding:10px 0;display:inline-block}.diagram-button{color:#e8ebec;background:#102331;border:1px solid #7196ae;min-width:44px;min-height:44px;padding:9px 14px;line-height:1.45}.diagram-button:hover,.memory-fact-button:hover{background:#1a394d}.diagram-button[aria-pressed=true]{background:#2a586f;border-color:#b9e4f4;box-shadow:inset 0 -3px #b9e4f4}.memory-demo{scroll-margin-top:24px}.memory-demo-heading{justify-content:space-between;align-items:start;gap:24px;display:flex}.memory-demo-heading .diagram-button{flex-shrink:0}.memory-toolbar{flex-wrap:wrap;justify-content:space-between;gap:16px;margin:24px 0 16px;display:flex}.memory-modes,.memory-camera,.memory-orbit{flex-wrap:wrap;gap:8px;display:flex}.memory-instructions,.memory-caption{color:#bfceda;font-size:15px!important}.memory-viewport{background:radial-gradient(#102d3c,#08141e);border:1px solid #7196ae;height:420px;position:relative;overflow:hidden}.memory-viewport.can-orbit{touch-action:none;cursor:grab}.memory-viewport.can-orbit:active{cursor:grabbing}.memory-axis{stroke:#395464;stroke-width:1px;stroke-dasharray:4 8}.memory-edge{stroke-width:1.5px;opacity:.45}.memory-edge.selected{stroke-width:3px;opacity:1}.memory-point{cursor:pointer}.memory-fact-label{fill:#fff;paint-order:stroke;stroke:#08141e;stroke-width:4px;font:500 15px Space Grotesk,Arial,sans-serif}.memory-doc-label{paint-order:stroke;stroke:#08141e;stroke-width:4px;font:500 14px Space Grotesk,Arial,sans-serif}.memory-legend{pointer-events:none;color:#d9e6ef;flex-wrap:wrap;gap:8px 16px;font-size:13px;display:flex;position:absolute;inset:auto 12px 10px}.memory-orbit{margin-top:16px}.memory-caption{margin:20px 0}.memory-details{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:28px;display:grid}.memory-fact-list section+section{margin-top:24px}.memory-fact-list h4{font-size:16px}.memory-fact-button{text-align:left;color:#d9e6ef;background:#102331;border:1px solid #52748c;gap:12px;width:100%;min-height:44px;margin-bottom:8px;padding:10px 12px;font-size:15px;line-height:1.55;display:flex}.memory-fact-button span{color:#b9e4f4;font-weight:600}.memory-fact-button[aria-pressed=true]{background:#2a586f;border-color:#b9e4f4;box-shadow:inset 3px 0 #b9e4f4}.memory-source{background:#102331;border:1px solid #7196ae;align-self:start;padding:22px}.memory-source p,.memory-source blockquote{font-size:16px}.memory-source blockquote{border-left:3px solid #80bbd4;margin:20px 0;padding-left:16px;line-height:1.7}.memory-demo:fullscreen{color:#e8ebec;background:#08141e;border:0;margin:0;padding:32px max(24px,50% - 600px);overflow:auto}.memory-demo:fullscreen .memory-viewport{height:min(55vh,600px)}@media(max-width:760px){.project-diagrams-body{padding:20px}.diagram-layout{grid-template-columns:1fr;gap:16px}.diagram-connections{display:none}.diagram-explanation ol{grid-template-columns:1fr;gap:18px}.diagram-routes{clip-path:none;white-space:normal;width:auto;height:auto;margin:8px 0 0;padding-left:20px;font-size:15px;line-height:1.7;position:static;overflow:visible}.diagram-routes li+li{margin-top:8px}.memory-demo-heading{display:block}.memory-demo-heading .diagram-button{margin-bottom:16px}.memory-details{grid-template-columns:1fr}.memory-viewport{height:380px}.memory-legend{gap:6px 10px;font-size:12px}}@media(max-width:400px){.project-diagrams-body{padding:16px}.diagram-node{padding:14px}.memory-viewport{height:330px}.memory-modes .diagram-button{width:100%}}.project-archive h3{font-size:25px}@media(max-width:600px){.contact-input-row{grid-template-columns:1fr;gap:0}}@media(max-width:560px){.blog-maintenance{grid-template-columns:1fr;gap:20px;padding:28px 24px}.blog-maintenance-mark{width:56px;height:56px}.blog-maintenance-mark svg{width:36px;height:36px}}@media(forced-colors:active){.contact-form input,.contact-form select,.contact-form textarea{color:fieldtext;background:field;border-color:fieldtext}.field-error{color:canvastext}}.writing-actions{margin-bottom:2rem}.writing-category{flex-direction:column;gap:8px;max-width:360px;margin:2rem 0;font-size:16px;display:flex}.writing-category select{color:var(--paper);min-height:48px;font:inherit;background:#08131e;border:1px solid #709dbd;padding:12px}.post-body p{white-space:pre-wrap;overflow-wrap:anywhere}.writing-manager{max-width:88ch}.writing-form{margin-bottom:3rem}.saved-writing{border-top:1px solid var(--line);margin-top:3rem;padding-top:2.5rem}.saved-writing .archive-entry{border-bottom:1px solid var(--line);padding:24px 0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}.navigation-toggle{display:none}.navigation-panel,.navigation-actions{display:contents}.site-nav .navigation-panel>nav[aria-label="Main navigation"]{margin:0 auto;flex-wrap:nowrap;gap:16px}.navigation-dropdown{position:relative}.navigation-dropdown>summary{display:inline-flex;align-items:center;min-height:44px;padding:8px 2px;border-bottom:2px solid transparent;cursor:pointer;list-style:none}.navigation-dropdown>summary::-webkit-details-marker{display:none}.navigation-dropdown>summary:hover{border-bottom-color:#6dafda}.navigation-dropdown>summary:focus-visible{outline:2px solid #b9e4f4;outline-offset:3px}.navigation-dropdown>summary:after{content:"⌄";margin-left:8px;transition:transform .16s ease}.navigation-dropdown[open]>summary:after{transform:rotate(180deg)}.navigation-dropdown.has-current-page>summary{border-bottom-color:#e8ebec}.navigation-submenu{display:none;position:absolute;top:100%;left:0;z-index:8;min-width:180px;padding:8px;border:1px solid #54768d;background:#0b1723;box-shadow:0 16px 28px #02070c66}.navigation-dropdown[open]>.navigation-submenu{display:grid;gap:2px}.navigation-dropdown .navigation-submenu .navigation-submenu-item{box-sizing:border-box;display:grid;grid-template-columns:20px minmax(0,1fr);align-items:center;gap:12px;width:100%;min-height:44px;padding:10px 12px;border:0;background:transparent;color:inherit;font:inherit;line-height:1.25;text-align:left;text-decoration:none;white-space:nowrap;cursor:pointer}.navigation-dropdown .navigation-submenu .navigation-submenu-item svg{display:block;width:20px;height:20px;flex:none}.navigation-dropdown .navigation-submenu .navigation-submenu-item:hover{background:#183044;color:#fff}.navigation-dropdown .navigation-submenu .navigation-submenu-item[aria-current=page]{background:#183044;color:#f4f7f8}.site-nav .site-view-switch{order:1}.site-nav .navigation-toggle{order:2}.site-nav .navigation-panel>nav[aria-label="Main navigation"]{order:3}.site-nav .nav-resume{order:4}.navigation-professional{display:flex;align-items:center;gap:16px}.linkedin-link{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.linkedin-link svg{flex-shrink:0}.footer-rail{align-items:flex-start}.footer-rail>span{display:inline-flex;align-items:center;min-height:44px;flex-shrink:0}.footer-rail>nav{align-items:center;gap:8px 24px}.footer-rail .github-access,.footer-rail .linkedin-link{font-size:14px}.footer-professional{display:inline-flex;align-items:center;gap:24px}a,button,input,textarea,select,summary{transition:color .16s ease,background-color .16s ease,border-color .16s ease,box-shadow .18s ease,text-decoration-color .16s ease}.text-link:focus-visible,.ocean-footer a:focus-visible,.ocean-footer .github-access:focus-visible{color:#b9e4f4;text-decoration:underline;text-underline-offset:.3em}.site-nav nav a:focus-visible,.site-nav nav .github-access:focus-visible{border-bottom-color:#b9e4f4}.home-work-card,.work-preview-card,.work-card,.recruiter-project-card{transition:border-color .18s ease,box-shadow .18s ease}.home-work-card:focus-within,.work-preview-card:focus-within,.work-card:focus-within,.recruiter-project-card:focus-within{border-color:#a9d8ec;box-shadow:0 10px 25px #0002,inset 0 0 0 1px #a9d8ec22}.project-diagrams>summary:focus-visible,.sample-details>summary:focus-visible,.case-detail>summary:focus-visible{background-color:#183044}@media(hover:hover)and (pointer:fine){.text-link:hover,.footer-rail a:hover,.footer-rail .github-access:hover{color:#b9e4f4}.project-diagrams>summary:hover,.sample-details>summary:hover,.case-detail>summary:hover{background-color:#142b3d}input:not(:disabled):hover,textarea:not(:disabled):hover,select:not(:disabled):hover{border-color:#91c3df}.home-work-card:has(a:hover),.work-preview-card:has(a:hover),.work-card:has(a:hover),.recruiter-project-card:has(a:hover){border-color:#a9d8ec;box-shadow:0 10px 25px #0002,inset 0 0 0 1px #a9d8ec22}}@media(prefers-reduced-motion:no-preference)and (hover:hover)and (pointer:fine){.retro-button,.navigation-toggle{transition:color .16s ease,background-color .16s ease,border-color .16s ease,box-shadow .18s ease,transform .18s ease}.retro-button:not(:disabled):hover,.navigation-toggle:hover{transform:translateY(-2px);box-shadow:0 6px 18px #02070c66}.retro-button:not(:disabled):active,.navigation-toggle:active{transform:translateY(0);box-shadow:none}}@media(max-width:1250px){.site-nav{position:relative;min-height:80px;flex-wrap:nowrap;padding:12px 24px;gap:16px}.site-nav.light{position:absolute;background:#050b11eb}.navigation-toggle{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;gap:10px;min-height:44px;padding:10px 12px;margin-left:auto;border:1px solid #54768d;background:#112130;color:var(--paper);font-size:14px}.navigation-toggle-icon{display:flex;flex-direction:column;justify-content:center;width:18px;height:18px;gap:6px}.navigation-toggle-icon span{display:block;width:18px;height:1px;background:currentColor}.navigation-open .navigation-toggle-icon{gap:0}.navigation-open .navigation-toggle-icon span:first-child{transform:translateY(.5px) rotate(45deg)}.navigation-open .navigation-toggle-icon span:last-child{transform:translateY(-.5px) rotate(-45deg)}.navigation-panel{display:none;position:absolute;left:0;right:0;top:100%;z-index:6;max-height:calc(100svh - 80px);overflow-y:auto;padding:16px 24px 24px;background:#0b1723;border-bottom:1px solid #54768d;box-shadow:0 16px 28px #02070c66}.navigation-open .navigation-panel{display:grid;gap:20px}.site-nav .navigation-panel>nav[aria-label="Main navigation"]{display:grid;order:0;width:100%;margin:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 20px;font-size:16px}.site-nav .navigation-panel>nav[aria-label="Main navigation"]>a{justify-content:flex-start;min-height:48px;padding:10px 4px}.navigation-dropdown>summary{justify-content:flex-start;min-height:48px;padding:10px 4px}.navigation-dropdown[open]{grid-column:1 / -1}.navigation-submenu{position:static;min-width:0;margin:0 0 8px;padding:4px;box-shadow:none}.navigation-dropdown .navigation-submenu .navigation-submenu-item{min-height:48px}.navigation-professional{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:8px 24px;padding-top:12px;margin-top:8px;border-top:1px solid #344b5c}.site-nav .site-view-switch{order:0}.site-nav .navigation-panel>nav[aria-label="Main navigation"]{order:0}.navigation-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;order:1}.site-nav .nav-resume{order:0}.wordmark .brand-name{font-size:clamp(20px,2.4vw,25px)}}@media(max-width:500px){.site-nav{padding:12px 16px;gap:10px}.header-logo{width:36px}.wordmark{gap:6px;min-width:0}.wordmark .brand-name{font-size:clamp(14px,5vw,23px)}.navigation-panel{padding-left:16px;padding-right:16px}.footer-rail{gap:8px 16px}.footer-rail>nav{gap:4px 20px}.footer-professional{gap:20px}}@media(max-width:360px){.navigation-toggle{width:44px;padding:10px}.navigation-toggle-label{display:none}}@media(prefers-reduced-motion:reduce){a,button,input,textarea,select,summary,.home-work-card,.work-preview-card,.work-card,.recruiter-project-card{transition:none}}@media(forced-colors:active){.navigation-panel,.site-nav.light{background:Canvas;color:CanvasText}.navigation-toggle{background:ButtonFace;color:ButtonText;border-color:ButtonText}.navigation-toggle-icon span{background:currentColor}.navigation-professional{border-color:CanvasText}.text-link:focus-visible,.ocean-footer a:focus-visible,.ocean-footer .github-access:focus-visible{color:LinkText}}.rich-blog-entry{max-width:960px}.rich-blog-entry>:is(h1,h2){font-size:clamp(30px,4.5vw,44px);line-height:1.18;max-width:26ch;overflow-wrap:anywhere}.retro-container:has(.blog-library .rich-blog-entry)>.page-intro{display:none}.rich-blog-entry>p:not(.eyebrow){max-width:70ch;line-height:1.75;color:#c9dbe7}.structured-article{margin-top:2rem}.article-blocks{max-width:70ch;line-height:1.8;font-size:18px}.article-blocks p,.article-blocks li,.article-description,.article-toc a{white-space:pre-wrap;overflow-wrap:anywhere}.article-blocks>p{margin:1.5rem 0}.article-blocks :is(h2,h3,h4){line-height:1.35;margin:3rem 0 1rem;scroll-margin-top:110px;overflow-wrap:anywhere}.article-blocks h2,.writing-preview .article-blocks h3{font-size:clamp(24px,3vw,30px)}.article-blocks h3,.article-blocks h4{font-size:22px}.article-blocks ul,.article-blocks ol{padding-left:1.6rem;margin:1.5rem 0}.article-blocks ul{list-style:disc}.article-blocks ol{list-style:decimal}.article-blocks li{padding-left:.35rem;margin:.65rem 0}.article-blocks a,.article-toc a{color:#b0e5ff;text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}.article-blocks a:hover,.article-toc a:hover{color:#fff}.article-blocks a:focus-visible,.article-toc a:focus-visible{outline:2px solid #b0e5ff;outline-offset:5px}.article-toc{max-width:70ch;border:1px solid var(--line);border-left:3px solid #69bee3;padding:1.25rem 1.5rem;background:#0c1b29}.article-toc>p{margin:0 0 .75rem;font-size:16px;font-weight:600}.article-toc ol{list-style:none;margin:0;padding:0}.article-toc li+li{margin-top:.25rem}.article-toc a{display:inline-block;padding:.4rem 0;font-size:16px;line-height:1.5}.article-toc .article-toc-subsection{padding-left:1.25rem}.article-figure{margin:2.5rem 0}.article-figure img{display:block;width:100%;height:auto;border:1px solid var(--line);background:#0c1b29}.article-figure figcaption{font-size:15px;color:#b7cedd;line-height:1.65;margin:.75rem 0;overflow-wrap:anywhere}.article-figure-open{display:inline-flex;align-items:center;min-height:44px;font-size:15px;margin-bottom:.75rem}.article-zoom-dialog{margin:auto;width:min(1200px,calc(100vw - 32px));max-width:none;max-height:calc(100svh - 32px);overflow:auto;padding:clamp(16px,3vw,28px);border:1px solid #81c8e8;color:var(--paper);background:#0c1b29;box-shadow:0 24px 80px #0008}.article-zoom-dialog::backdrop{background:#02070ccc}.article-zoom-dialog:not([open]){display:none}.article-zoom-dialog[open]{display:flex;flex-direction:column}.article-zoom-dialog>*{flex-shrink:0}.article-zoom-heading{display:flex;justify-content:space-between;gap:1rem;align-items:center;position:sticky;top:0;z-index:2;background:#0c1b29}.article-zoom-heading h2{font-size:22px;margin:0}.article-zoom-caption{font-size:15px;line-height:1.6;margin:1rem 0;overflow-wrap:anywhere}.article-zoom-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.article-zoom-controls .retro-button{min-height:44px;padding:.6rem .9rem}.article-zoom-controls span{font:14px ui-monospace,monospace;min-width:5ch}.article-zoom-help{font-size:14px;line-height:1.5;color:#b7cedd;margin:.75rem 0}.article-zoom-pan{width:100%;height:min(55svh,650px);min-height:160px;flex:1 1 auto;overflow:auto;border:1px solid #709dbd;overscroll-behavior:contain;touch-action:pan-x pan-y pinch-zoom;background:#08131e;margin-bottom:1rem}.article-zoom-pan img{display:block;max-width:none;height:auto}.article-zoom-pan:focus-visible{outline:2px solid #b0e5ff;outline-offset:3px}.article-zoom-dialog button:disabled{opacity:.45;cursor:default;transform:none}.article-description{border-left:2px solid var(--line);padding:.1rem 0 .1rem 1rem;font-size:15px;color:#c2d3df;line-height:1.65}.article-description p{font-size:15px;margin:.4rem 0}.article-description .article-description-label{font-size:13px;font-weight:600;letter-spacing:.025em}.article-image-unavailable{border:1px dashed var(--line);background:#0c1b29;padding:1.5rem;font-size:16px}.article-image-unavailable p{font-size:16px}.article-editor-block{border:1px solid var(--line);padding:1.25rem;margin:1.5rem 0;min-width:0;background:#0b1825}.article-block-controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:1rem}.article-block-controls h3{font-size:18px;margin:0}.article-block-controls>div{display:flex;flex-wrap:wrap;gap:.5rem}.article-block-controls .retro-button{min-width:44px;min-height:44px;padding:.5rem .8rem}.article-editor .retro-button:disabled,.writing-manager .retro-button:disabled{opacity:.45;cursor:default;transform:none}.article-add-controls{display:flex;flex-wrap:wrap;align-items:end;gap:1rem;margin:1.5rem 0}.contact-form .article-add-controls label{flex:1;min-width:140px;margin:0}.article-source-fields{border-top:1px solid var(--line);padding:1rem 0}.article-editor-block label:last-child{margin-bottom:0}.writing-preview .article-blocks{font-size:18px}@media(max-width:600px){.article-blocks{font-size:17px;line-height:1.75}.article-toc{padding:1rem}.article-toc a{min-height:44px;display:flex;align-items:center}.article-editor-block{padding:1rem}.article-block-controls{align-items:start}.article-block-controls>div{width:100%}.article-add-controls>.retro-button{width:100%}}@media print{@page structured-article{margin:18mm}body:has(.rich-blog-entry){page:structured-article}html:has(.rich-blog-entry),body:has(.rich-blog-entry),body:has(.rich-blog-entry) :is(#root,.site-content,.retro-surface,.inner-page,.retro-container){background:#fff!important;color:#111!important;overflow:visible!important;min-height:0!important}body:has(.rich-blog-entry) :is(header.site-nav,.ocean-footer,.site-ocean,canvas,.skip,.page-intro,.blog-library>.project-actions,.blog-library>.writing-category,.blog-library>a,.article-toc,.writing-manager>p,.writing-post-actions,.writing-form,.saved-writing,.article-figure-open,.article-zoom-dialog){display:none!important}body:has(.rich-blog-entry) :is(.retro-container,.inner-page){padding:0!important;margin:0!important;max-width:none!important;width:auto!important}body:has(.rich-blog-entry) :is(.blog-library,.writing-manager,.rich-blog-entry,.article-blocks){max-width:none!important}body:has(.rich-blog-entry) .blog-entry{padding:0;border:0}body:has(.rich-blog-entry) .blog-entry>:is(h1,h2){font-size:28pt!important;color:#111!important}body:has(.rich-blog-entry) :is(.blog-entry p,.article-blocks,.article-description,.article-figure figcaption){color:#111!important;font-size:11pt!important;line-height:1.6!important}body:has(.rich-blog-entry) .article-blocks h2{font-size:18pt}body:has(.rich-blog-entry) :is(.article-blocks h3,.article-blocks h4){font-size:14pt}body:has(.rich-blog-entry) :is(.article-blocks h2,.article-blocks h3,.article-blocks h4,.blog-entry>h1,.blog-entry>h2){break-after:avoid}body:has(.rich-blog-entry) :is(.article-blocks p,.article-blocks li){orphans:3;widows:3}body:has(.rich-blog-entry) .article-figure{break-inside:avoid;margin:1.5rem 0}body:has(.rich-blog-entry) .article-figure img{max-height:180mm;object-fit:contain;background:#fff;border-color:#bbb}body:has(.rich-blog-entry) .article-blocks a{color:#111;text-decoration:underline}body:has(.rich-blog-entry) .article-sources a:after{content:" (" attr(href) ")";font-size:9pt;overflow-wrap:anywhere}body:has(.rich-blog-entry) .writing-preview>h2{display:none}body:has(.rich-blog-entry) :focus{outline:none!important;box-shadow:none!important}}.site-nav{gap:16px}.site-nav .site-view-switch{display:flex;flex-shrink:0;flex-wrap:nowrap;width:auto;order:0;margin:0;gap:2px;padding:3px;border:1px solid #526f82;border-radius:var(--surface-radius);background:#08121c;font-size:.875rem}.site-nav .site-view-switch a{min-height:44px;padding:8px 12px;justify-content:center;border:0;border-radius:var(--surface-radius);color:#c2ced6}.site-nav .site-view-switch a[aria-current=page]{background:#25485d;color:#f4f7f8;border:0}.site-nav .site-view-switch a:hover{background:#193548;color:#fff}.site-nav .site-view-switch a:focus-visible{outline:2px solid #b9e4f4;outline-offset:2px}.agent-reading-tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px;margin-bottom:32px;padding-bottom:16px;border-bottom:1px solid #496778}.agent-reading-tools>p{margin:0}.agent-reading-tools>div{display:flex;flex-wrap:wrap;gap:16px 24px}.agent-reading-tools a{display:inline-flex;align-items:center;min-height:44px}.agent-document{max-width:960px;overflow-wrap:anywhere;line-height:1.75}.agent-document h1{font-size:clamp(2rem,5vw,3.5rem);line-height:1.15;margin:0 0 28px}.agent-document h2{font-size:clamp(1.5rem,3vw,2rem);margin-top:56px;padding-top:24px;border-top:1px solid #496778}.agent-document h3{font-size:1.35rem;margin-top:36px}.agent-document h4,.agent-document h5,.agent-document h6{font-size:1.125rem;margin-top:28px}.agent-document p,.agent-document li{font-size:1rem}.agent-document ul,.agent-document ol{padding-left:24px}.agent-document li{margin-bottom:10px}.agent-document a{color:#b9e4f4;text-decoration:underline;text-underline-offset:.2em}.agent-document a:focus-visible{outline:2px solid #b9e4f4;outline-offset:4px}.agent-document pre{white-space:pre-wrap;overflow-wrap:anywhere;padding:20px;border:1px solid #496778;background:#0d1c28}.agent-document code{font-size:.95em;overflow-wrap:anywhere}@media(min-width:1251px){.site-nav .navigation-panel>nav[aria-label="Main navigation"]{gap:14px}}@media(max-width:600px){.site-nav{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px}.site-nav .wordmark{grid-column:1;grid-row:1}.site-nav .navigation-toggle{grid-column:2;grid-row:1}.navigation-panel{max-height:calc(100svh - 140px)}.agent-reading-tools{margin-bottom:24px}}@media(forced-colors:active){.site-nav .site-view-switch{background:Canvas;border-color:CanvasText}.site-nav .site-view-switch a{color:LinkText}.site-nav .site-view-switch a[aria-current=page]{background:Highlight;color:HighlightText}}:root{--surface-radius: 6px;--surface-shadow: 0 3px 12px #00000030, 0 1px 3px #00000028;--surface-shadow-hover: 0 5px 17px #00000038, 0 1px 4px #00000030;--control-shadow: 0 2px 6px #00000030, 0 1px 2px #00000024;--control-shadow-pressed: 0 1px 3px #00000038;--dialog-shadow: 0 10px 32px #00000055, 0 2px 8px #00000038;--media-shadow-filter: drop-shadow(0 3px 8px #00000030) drop-shadow(0 1px 2px #00000024)}html :is(.retro-card.bg-white,.home-work-card,.work-preview-card,.work-card,.recruiter-project-card,.resume-strip-single,.story-status,.blog-maintenance,.blog-maintenance-mark,.sample-output,.project-diagrams,.diagram-node,.architecture-figure,.architecture-node.diagram-node,.intranet-layer,.memory-viewport,.memory-source,.article-toc,.article-image-unavailable,.article-editor-block,.agent-document pre,.reply-permissions,.education-record-summary,.education-path,.education-filters,.education-area){border-radius:var(--surface-radius);box-shadow:var(--surface-shadow)}html :is(.github-dialog,.article-zoom-dialog){border-radius:var(--surface-radius);box-shadow:var(--dialog-shadow)}html :is(.navigation-submenu,.site-nav .site-view-switch){border-radius:var(--surface-radius);box-shadow:var(--control-shadow)}html .blog-maintenance:after{border-radius:var(--surface-radius)}html :is(.bracket-button,.retro-button,.motion,.navigation-toggle,.contact-channel-button,.github-dialog-close,.diagram-button,.memory-fact-button,.ocean-control,.skip,.video-play-fallback,.contact-form input:not([type=checkbox]),.contact-form select,.contact-form textarea,.writing-category select,.project-map-index .index-controls input,.project-map-index .index-controls select,.education-filters input,.education-filters select){border-radius:var(--surface-radius);box-shadow:var(--control-shadow)}html :is(.stack-badge,.education-area-count,.education-record-kind){border-radius:var(--surface-radius);box-shadow:0 1px 4px #00000028}html :is(.site-nav .site-view-switch a,.navigation-dropdown .navigation-submenu .navigation-submenu-item,.project-accordion>summary,.sample-details>summary,.case-detail>summary){border-radius:var(--surface-radius)}html :is(.project-diagrams,.intranet-layer,.education-area)>summary{border-radius:var(--surface-radius)}html :is(.project-diagrams,.intranet-layer,.education-area)[open]>summary{border-radius:var(--surface-radius) var(--surface-radius) 0 0}html :is(.hero-name,.hero-role,.hero-description){border-radius:var(--surface-radius);box-shadow:var(--control-shadow)}html .motion-toggle{box-shadow:var(--control-shadow)}html .diagram-button[aria-pressed=true]{box-shadow:var(--control-shadow),inset 0 -3px #b9e4f4}html .memory-fact-button[aria-pressed=true]{box-shadow:var(--control-shadow),inset 3px 0 #b9e4f4}html .video-play-fallback{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:10px 14px;border:1px solid #709dbd;background:#112130;color:var(--paper)}html :is(.project-proof figure,.project-proof figure>a,.project-proof .app-interface,.project-proof .app-interface a,.video-introduction-poster,.intranet-figure,.article-figure,.viewport-video,.article-zoom-pan){padding:0;border:0;border-radius:var(--surface-radius);background:transparent;box-shadow:none}html :is(.about-headshot,.video-introduction-poster img,.project-proof img,.project-proof .app-interface img,.project-proof .native-shot-grid img,.project-proof .context-shot-grid img,.native-video-figure video,.intranet-figure img,.article-figure img,.article-zoom-pan img){border:0;border-radius:var(--surface-radius);background:transparent;box-shadow:none;filter:var(--media-shadow-filter)}html .native-video-figure video:fullscreen{border-radius:0;filter:none}html :is(.home-work-card,.work-preview-card,.work-card,.recruiter-project-card):focus-within{box-shadow:var(--surface-shadow-hover)}@media(hover:hover)and (pointer:fine){html :is(.home-work-card,.work-preview-card,.work-card,.recruiter-project-card):has(a:hover),html[data-site-motion=on] .home-work-card:hover,html .architecture-node[href]:hover,html .education-path:hover{box-shadow:var(--surface-shadow-hover)}html :is(.bracket-button,.retro-button,.motion,.navigation-toggle,.contact-channel-button,.github-dialog-close,.diagram-button,.memory-fact-button):not(:disabled):hover{box-shadow:var(--surface-shadow-hover)}html :is(.bracket-button,.retro-button,.motion,.navigation-toggle,.contact-channel-button,.github-dialog-close,.diagram-button,.memory-fact-button):not(:disabled):active{box-shadow:var(--control-shadow-pressed)}html .diagram-button[aria-pressed=true]:hover{box-shadow:var(--surface-shadow-hover),inset 0 -3px #b9e4f4}html .memory-fact-button[aria-pressed=true]:hover{box-shadow:var(--surface-shadow-hover),inset 3px 0 #b9e4f4}}@media(prefers-reduced-motion:no-preference)and (hover:hover)and (pointer:fine){html[data-site-motion=on] :is(.bracket-button,.retro-button,.motion,.navigation-toggle,.contact-channel-button,.github-dialog-close,.diagram-button):not(:focus-visible){transition:color .16s ease,background-color .16s ease,border-color .16s ease,box-shadow .18s ease,transform .18s ease}html[data-site-motion=on] :is(.bracket-button,.retro-button,.motion,.navigation-toggle,.contact-channel-button,.github-dialog-close,.diagram-button):not(:disabled):hover{transform:translateY(-1px)}html[data-site-motion=on] :is(.bracket-button,.retro-button,.motion,.navigation-toggle,.contact-channel-button,.github-dialog-close,.diagram-button):not(:disabled):active{transform:translateY(1px)}}html .contact-primary,html .contact-primary h2,html #selected-work-title{overflow-wrap:anywhere}html .legal-copy a.text-link[href^="mailto:"]{display:inline-block;max-width:100%;overflow-wrap:anywhere;vertical-align:middle}html .contact-email,html .contact-email .text-link{min-width:0;max-width:100%;overflow-wrap:anywhere;word-break:break-word}@media(max-width:1250px){html .navigation-panel{border-radius:0 0 var(--surface-radius) var(--surface-radius);box-shadow:var(--surface-shadow)}}@media(prefers-reduced-motion:reduce){html :is(.bracket-button,.retro-button,.motion,.navigation-toggle,.contact-channel-button,.github-dialog-close,.diagram-button):hover,html :is(.bracket-button,.retro-button,.motion,.navigation-toggle,.contact-channel-button,.github-dialog-close,.diagram-button):active{transform:none}}html[data-site-motion=off] :is(.bracket-button,.retro-button,.motion,.navigation-toggle,.contact-channel-button,.github-dialog-close,.diagram-button):hover,html[data-site-motion=off] :is(.bracket-button,.retro-button,.motion,.navigation-toggle,.contact-channel-button,.github-dialog-close,.diagram-button):active{transform:none}@media(forced-colors:active){:root{--surface-shadow: none;--surface-shadow-hover: none;--control-shadow: none;--control-shadow-pressed: none;--dialog-shadow: none;--media-shadow-filter: none}html :is(.stack-badge,.education-area-count,.education-record-kind,.motion-toggle){box-shadow:none}}@media print{:root{--surface-shadow: none;--surface-shadow-hover: none;--control-shadow: none;--dialog-shadow: none;--media-shadow-filter: none}}
