:root{--bg: #ffffff;--border: #999;--text: #a2a2a2;--dim: #888;--font-family-base: "Jost", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-weight-regular: 400;--font-weight-medium: 500;--type-corner-size: 11px;--type-corner-line-height: 1.4;--type-corner-tracking: .01em;--type-label-size: 10px;--type-label-line-height: 1.5;--type-label-tracking: .03em;--type-text-size: 12px;--type-text-line-height: 1.6;--type-text-tracking: .01em;--type-header-size: 15px;--type-header-line-height: 1.25;--type-header-tracking: .01em;--type-title-size: 35px;--type-title-line-height: 1.3;--type-title-tracking: .01em;--border-inset: 18px;--mid-frame-inset: calc(var(--border-inset) / 2);--nav-line-width: 11px;--nav-line-width-active: 16px;--nav-line-width-mobile: 9px;--nav-line-width-active-mobile: 13px;--horizontal-nav-media-offset: 9px;--horizontal-nav-carousel-offset: 12px;--nav-text-buffer: 28px;--embedded-content-max: 580px;--embedded-content-fixed-max: var(--embedded-content-max);--fullscreen-media-anchor-y: 50%;--embedded-media-anchor-y: 40%;--embedded-media-height: 24%;--embedded-media-height-mobile: 24%}@media (max-width: 1200px){:root{--embedded-content-max: 560px}}@media (max-width: 960px){:root{--border-inset: 14px;--nav-text-buffer: 18px;--embedded-content-max: 540px;--horizontal-nav-media-offset: 6px;--horizontal-nav-carousel-offset: 10px}}@media (max-width: 720px){:root{--border-inset: 10px;--embedded-content-max: 100%;--type-corner-size: 12px;--type-label-size: 11px;--type-text-size: 12px;--type-text-line-height: 1.68;--type-header-size: 15px;--type-header-line-height: 1.25}}@media (min-width: 721px){:root{--type-corner-size: 13px;--type-label-size: 12px;--type-text-size: 13px;--type-header-size: 15px}}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;background:var(--bg);font-family:var(--font-family-base);color:var(--text)}#frame{position:fixed;inset:var(--border-inset);border:1px solid var(--border);pointer-events:none;z-index:100;transition:opacity .18s ease}body.embedded-frame #frame{opacity:0}#slides{width:100%;height:100%;position:relative}.slide{position:absolute;inset:0;opacity:0;pointer-events:none;transition:none;user-select:none;--frame-top: var(--border-inset);--frame-right: var(--border-inset);--frame-bottom: var(--border-inset);--frame-left: var(--border-inset);--corner-max-width: 260px;--lower-copy-inline-safe: 0px;--lower-copy-bottom-safe: 120px}.slide.active{opacity:1;pointer-events:all}.slide-inner{position:relative;width:100%;height:100%}.slide-layout{position:relative;width:100%;height:100%;box-sizing:border-box}.slide-content{position:relative;width:100%;height:100%;box-sizing:border-box;z-index:1}.corners{position:absolute;inset:calc(var(--border-inset) + 20px);pointer-events:none}.corner{position:absolute;font-size:var(--type-corner-size);letter-spacing:var(--type-corner-tracking);line-height:var(--type-corner-line-height);max-width:var(--corner-max-width);overflow-wrap:anywhere}.corner.is-empty{display:none}.corner.tl{top:0;left:0}.corner.tr{top:0;right:0;text-align:right}.corner.bl{bottom:0;left:0}.corner.br{bottom:0;right:0;text-align:right}.corner .label{display:block;color:var(--dim);font-size:var(--type-label-size);line-height:var(--type-label-line-height);letter-spacing:var(--type-label-tracking);text-transform:uppercase;margin-bottom:3px}.corner .value{display:block}.slide-upper-copy{position:absolute;left:50%;top:calc(var(--border-inset) + var(--upper-copy-top-safe));transform:translate(-50%);width:min(880px,calc(100% - ((var(--border-inset) + 20px) * 2) - (var(--upper-copy-inline-safe) * 2)));box-sizing:border-box;margin:0;min-height:1.1em;padding-inline:clamp(8px,1.4vw,14px);text-align:center;font-size:var(--type-title-size);letter-spacing:var(--type-title-tracking);line-height:var(--type-title-line-height);text-transform:uppercase;font-weight:var(--font-weight-medium);color:var(--text);z-index:4;pointer-events:none}.slide-upper-copy.is-empty{opacity:0}.slide-lower-copy{position:absolute;left:50%;bottom:calc(var(--border-inset) + var(--lower-copy-bottom-safe));transform:translate(-50%);width:min(880px,calc(100% - ((var(--border-inset) + 20px) * 2) - (var(--lower-copy-inline-safe) * 2)));box-sizing:border-box;min-height:1.4em;padding-inline:clamp(8px,1.4vw,14px);text-align:center;font-size:var(--type-text-size);letter-spacing:var(--type-text-tracking);line-height:var(--type-text-line-height);color:var(--text);z-index:4;pointer-events:none}.slide-lower-copy.is-empty{opacity:0}.slide-body{font-size:var(--type-text-size);letter-spacing:var(--type-text-tracking);line-height:var(--type-text-line-height);max-width:340px;font-weight:var(--font-weight-regular)}.slide .corners,.slide .slide-center{z-index:1}.slide .corners{z-index:3}@media (max-width: 720px){.slide{--corner-max-width: 168px}.corners{inset:calc(var(--border-inset) + 10px)}.corner .label{margin-bottom:2px}}.slide-media{--media-opacity: .68;--media-anchor-y: var(--fullscreen-media-anchor-y);--fx-hue: 95;--fx-tint: 0;--fx-brightness: 100;--fx-contrast: 100;--fx-saturation: 100;--fx-vignette: 0;--fx-noise: 0;--fx-scanlines: 0;--fx-glitch: 0;position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}.slide--fullscreen .slide-media{inset:0}.slide-image{--media-transition-blur: 0px;display:block;width:100%;height:100%;object-fit:cover;object-position:center var(--media-anchor-y);opacity:var(--media-opacity);pointer-events:none;filter:brightness(calc(var(--fx-brightness) / 100)) contrast(calc(var(--fx-contrast) / 100)) saturate(calc(var(--fx-saturation) / 100)) hue-rotate(calc(var(--fx-hue) * 1deg)) blur(var(--media-transition-blur))}.media-layer{position:absolute;inset:0}.media-frame{display:none}.slide--fullscreen .media-frame{border-style:solid;border-color:var(--bg);border-width:var(--frame-top) var(--frame-right) var(--frame-bottom) var(--frame-left);outline-offset:calc(var(--border-inset) * -1);box-sizing:border-box}.slide--fullscreen .media-frame{display:block;inset:0;background:transparent;opacity:1;z-index:2}.media-tint{background:hsl(var(--fx-hue) 100% 54%);mix-blend-mode:multiply;opacity:calc(var(--fx-tint) / 100)}.media-vignette{background:radial-gradient(circle at center,#0000 30%,#000000db);opacity:calc(var(--fx-vignette) / 100)}.media-noise{background-image:radial-gradient(circle at 25% 30%,rgba(255,255,255,.2) 0 1px,transparent 1.1px),radial-gradient(circle at 68% 72%,rgba(255,255,255,.16) 0 .8px,transparent .9px);background-size:3px 3px,4px 4px;mix-blend-mode:overlay;opacity:calc(var(--fx-noise) / 100);animation:grainShift .18s steps(2,end) infinite}.media-scanlines{background:repeating-linear-gradient(to bottom,rgba(0,0,0,.42) 0,rgba(0,0,0,.42) 1px,transparent 1px,transparent 3px);mix-blend-mode:multiply;opacity:calc(var(--fx-scanlines) / 100)}.media-glitch{background:linear-gradient(90deg,#78ff911a,#d8ff6e26),repeating-linear-gradient(0deg,transparent 0,transparent 9%,rgba(0,0,0,.26) 9.5%,transparent 10%);opacity:calc(var(--fx-glitch) / 100);mix-blend-mode:screen;animation:glitchHop .22s steps(2,end) infinite}@keyframes grainShift{0%{transform:translate(0)}25%{transform:translate(-1.5%,1%)}50%{transform:translate(1.2%,-1.4%)}75%{transform:translate(-1%,-.8%)}to{transform:translate(0)}}@keyframes glitchHop{0%{transform:translate(0);clip-path:inset(0 0 0 0)}16%{transform:translate(calc(var(--fx-glitch) * .05px));clip-path:inset(4% 0 70% 0)}32%{transform:translate(calc(var(--fx-glitch) * -.06px));clip-path:inset(62% 0 14% 0)}48%{transform:translate(calc(var(--fx-glitch) * .03px));clip-path:inset(20% 0 56% 0)}64%{transform:translate(calc(var(--fx-glitch) * -.04px));clip-path:inset(78% 0 5% 0)}to{transform:translate(0);clip-path:inset(0 0 0 0)}}.project-list{list-style:none;text-align:left;min-width:280px;margin:0;padding:0}.project-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:24px;padding:10px 0;border-bottom:1px solid #bbb}.project-list li:last-child{border-bottom:none}.project-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.project-title{font-size:var(--type-header-size);line-height:var(--type-header-line-height);letter-spacing:var(--type-header-tracking);text-transform:uppercase;font-weight:var(--font-weight-medium);color:var(--text)}.project-employer{font-size:var(--type-label-size);line-height:var(--type-label-line-height);letter-spacing:var(--type-label-tracking);color:var(--dim)}.project-list .year{color:var(--dim);font-size:var(--type-label-size);line-height:var(--type-label-line-height);letter-spacing:var(--type-label-tracking);text-transform:uppercase;padding-top:2px;white-space:nowrap}.slide--embedded .slide-layout{display:flex;flex-direction:column;align-items:stretch;gap:clamp(22px,3.5vh,34px);padding:var(--border-inset) var(--border-inset) calc(var(--border-inset) + 44px);width:100%;max-width:100%;margin:0;overflow:hidden}.slide--embedded .slide-inner{overflow:hidden;box-sizing:border-box}.slide--embedded .slide-content{display:flex;align-items:flex-start;justify-content:center;min-width:0;order:2;flex:1 1 auto;width:100%}.slide--embedded .slide-center{position:relative;top:auto;left:auto;transform:none;text-align:left;--carousel-content-inset: clamp(12px, 2vw, 16px);width:min(100%,var(--embedded-content-fixed-max));max-width:none;margin:0 auto}.embedded-header{margin:0 0 8px;font-size:var(--type-title-size);line-height:var(--type-title-line-height);letter-spacing:var(--type-title-tracking);text-transform:uppercase;font-weight:var(--font-weight-medium);color:var(--text)}.embedded-subtitle{max-width:var(--embedded-content-fixed-max);margin:0 0 8px;font-size:var(--type-label-size);letter-spacing:var(--type-label-tracking);text-transform:uppercase;line-height:var(--type-label-line-height);color:var(--text)}.embedded-panel-heading{margin:0;font-size:calc(var(--type-header-size) + 2px);line-height:1.3;letter-spacing:var(--type-header-tracking);text-transform:uppercase;font-weight:var(--font-weight-medium);color:var(--text)}.embedded-panel-subtitle{margin:4px 0 10px;color:var(--dim);font-size:var(--type-label-size);line-height:var(--type-label-line-height);letter-spacing:var(--type-label-tracking)}.slide--embedded .slide-center>:not(.embedded-carousel){box-sizing:border-box;padding-inline:var(--carousel-content-inset)}.slide--embedded .project-list{min-width:0;max-width:var(--embedded-content-fixed-max);width:100%;margin:0}.embedded-content{width:min(100%,var(--embedded-content-fixed-max));margin:0}.slide--embedded .embedded-carousel-item p{font-size:var(--type-text-size);letter-spacing:var(--type-text-tracking);line-height:var(--type-text-line-height)}.embedded-carousel[data-carousel-root]{border:1px solid var(--border);background:transparent;min-height:262px;text-align:left;position:relative;width:min(100%,var(--embedded-content-fixed-max));margin:clamp(12px,2vh,18px) 0 0;--carousel-inner-narrow: 36px;padding:clamp(12px,2vw,16px) var(--carousel-content-inset) calc(clamp(10px,1.8vh,16px) + var(--carousel-nav-reserved-space, 0px))}.embedded-carousel-stage{padding:0;min-height:var(--carousel-stage-min-height, auto)}.embedded-carousel-item{display:none;width:100%}.embedded-carousel-item.is-active{display:block}.embedded-carousel-item>:not(.embedded-carousel){width:100%;max-width:var(--embedded-content-fixed-max);margin-left:0;margin-right:0}.embedded-carousel[data-carousel-root]:not(.is-single) .embedded-carousel-item>:not(.embedded-carousel){max-width:calc(var(--embedded-content-fixed-max) - var(--carousel-inner-narrow))}.embedded-carousel-item>.embedded-carousel{margin-top:clamp(12px,2vh,20px)}.slide--embedded .embedded-carousel .project-list{width:100%;max-width:var(--embedded-content-fixed-max);margin:0}.project-card{--project-meta-gap: 6px;--project-icon-size: calc( (var(--type-header-size) * var(--type-header-line-height)) + var(--project-meta-gap) + (var(--type-label-size) * var(--type-label-line-height)) );--project-icon-gap: 14px;display:grid;grid-template-columns:var(--project-icon-size) minmax(0,1fr);column-gap:var(--project-icon-gap);row-gap:8px;align-items:start;position:relative}.project-card-link-indicator{position:absolute;top:0;right:0;color:var(--dim);font-size:calc(var(--type-label-size) - 1px);line-height:1;letter-spacing:var(--type-label-tracking);text-transform:uppercase;text-decoration:none}.project-card-link-indicator:hover,.project-card-link-indicator:focus-visible{color:var(--text);text-decoration:underline}.project-card-icon-link{display:inline-grid;grid-column:1;grid-row:1;text-decoration:none}.project-card-icon{width:var(--project-icon-size);height:var(--project-icon-size);display:grid;place-items:center;color:var(--dim);font-size:var(--type-label-size);letter-spacing:var(--type-label-tracking);text-transform:uppercase;grid-column:1;grid-row:1;align-self:start}.project-card-icon img{width:100%;height:100%;object-fit:contain;display:block}.project-card-copy h3{margin:0;font-size:var(--type-header-size);line-height:var(--type-header-line-height);letter-spacing:var(--type-header-tracking);text-transform:uppercase;font-weight:var(--font-weight-medium);color:var(--text)}.project-card-copy{grid-column:2;grid-row:1;padding-right:36px}.project-card-title-link{color:inherit;text-decoration:none}.project-card-title-link:hover,.project-card-title-link:focus-visible{text-decoration:underline}.project-card-subtitle{margin:var(--project-meta-gap) 0 0;color:var(--dim);font-size:var(--type-label-size);line-height:var(--type-label-line-height);letter-spacing:var(--type-label-tracking)}.project-card-description{margin:8px 0 0;color:var(--text);font-size:var(--type-text-size);line-height:var(--type-text-line-height);letter-spacing:var(--type-text-tracking);margin-left:calc((var(--project-icon-size) + var(--project-icon-gap)) * -1);width:calc(100% + var(--project-icon-size) + var(--project-icon-gap))}.project-card-description+.project-card-description{margin-top:6px}.project-card-highlights{margin:var(--project-meta-gap) 0 0;color:var(--text);font-size:calc(var(--type-label-size) - .5px);line-height:var(--type-label-line-height);font-weight:var(--font-weight-medium);text-transform:uppercase;margin-left:calc((var(--project-icon-size) + var(--project-icon-gap)) * -1);width:calc(100% + var(--project-icon-size) + var(--project-icon-gap));display:flex;flex-wrap:wrap;align-items:baseline;row-gap:4px}.project-card-highlight-token{font-weight:var(--font-weight-semibold);padding-bottom:1px}.project-card-highlight-separator{color:color-mix(in srgb,var(--text) 58%,var(--dim));font-weight:var(--font-weight-regular);margin:0 1ch}.skills-list{width:100%;max-width:620px}.skill-copy{min-width:0}.skill-level{display:inline-flex;gap:7px;align-items:center;align-self:start;padding-top:2px}.skill-dot{width:8px;height:8px;border-radius:999px;border:1px solid color-mix(in srgb,var(--text) 60%,transparent);background:transparent}.skill-dot.is-filled{background:var(--text)}.slide--embedded .slide-media{--media-anchor-y: var(--embedded-media-anchor-y);position:relative;inset:auto;width:100%;max-width:100%;flex-shrink:0;height:var(--embedded-media-height);order:1;margin:0 auto;align-self:center;overflow:hidden;z-index:1;box-sizing:border-box;border:1px solid var(--border)}.slide--embedded .slide-image{width:100%}.slide--embedded .media-frame{display:none}@media (max-width: 960px){.slide--embedded .slide-layout{gap:16px;padding:var(--border-inset) var(--border-inset) calc(var(--border-inset) + 30px);width:100%;max-width:100%}.slide--embedded .slide-media{height:var(--embedded-media-height-mobile)}.slide--embedded .slide-center{text-align:left;margin:0;box-sizing:border-box;padding-inline:calc(var(--nav-text-buffer) + 10px)}.embedded-content,.slide--embedded .project-list,.slide--embedded .embedded-carousel .project-list,.skills-list,.embedded-carousel[data-carousel-root],.embedded-carousel-item>:not(.embedded-carousel),.embedded-carousel[data-carousel-root]:not(.is-single) .embedded-carousel-item>:not(.embedded-carousel){max-width:var(--embedded-content-fixed-max)}.slide--embedded .project-list li{gap:16px}.embedded-carousel[data-carousel-root]{min-height:0}}@media (max-width: 720px){.slide--embedded .slide-layout{gap:8px;padding:var(--border-inset) var(--border-inset) calc(var(--border-inset) + 16px)}.slide--embedded .slide-content{align-items:stretch}.slide--embedded .slide-center{--carousel-content-inset: clamp(4px, 1.8vw, 8px);padding-inline:calc(var(--nav-text-buffer) + 10px)}.embedded-content{width:100%}.embedded-carousel-stage{padding:0}.embedded-carousel[data-carousel-root]{--carousel-inner-narrow: 8px;padding-top:8px;padding-right:var(--carousel-content-inset);padding-bottom:calc(8px + var(--carousel-nav-reserved-space, 0px));padding-left:var(--carousel-content-inset)}.embedded-carousel-item>.embedded-carousel{margin-top:12px}.project-list li,.skill-entry,.project-card{gap:10px;padding:7px 0}.project-card{--project-icon-gap: 10px;row-gap:8px}.project-card-copy{padding-right:32px}.project-card-highlights{margin-top:var(--project-meta-gap)}.project-card-icon{width:var(--project-icon-size);height:var(--project-icon-size)}.project-copy{gap:1px}.embedded-header{margin-bottom:6px}.embedded-subtitle{margin-top:2px}.embedded-panel-subtitle{margin:3px 0 8px}.skill-title{margin-bottom:2px}.skill-description{line-height:1.45}.skill-dot{width:7px;height:7px}}#hint{position:fixed;bottom:calc(var(--border-inset) + 14px);left:50%;transform:translate(-50%);font-size:9px;letter-spacing:.04em;text-transform:none;font-weight:var(--font-weight-regular);color:var(--dim);z-index:101;transition:none}#hint.hidden{opacity:0}#contact-jump{position:fixed;top:calc(var(--border-inset) + 20px);right:calc(var(--border-inset) + 20px);z-index:103;color:var(--dim);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;transition:color .16s ease}#contact-jump svg{width:15px;height:15px;display:block;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}#contact-jump:hover,#contact-jump:focus-visible{color:var(--text)}#contact-jump:focus-visible{outline:1px solid var(--text);outline-offset:4px}body.contact-slide-active #contact-jump{opacity:0;pointer-events:none}#nav-lines{position:fixed;left:calc(var(--border-inset) + 9px);top:50%;transform:translateY(-50%)}body.embedded-frame #nav-lines{left:var(--border-inset)}#nav-lines-horizontal{position:fixed;left:50%;top:calc(var(--border-inset) + var(--horizontal-nav-media-offset));transform:translate(-50%)}#nav-lines-horizontal.hidden{display:none}.nav-lines{--nav-dash-inactive-length: var(--nav-line-width);--nav-dash-active-length: var(--nav-line-width-active);--nav-dash-thickness: 1px;display:flex;align-items:flex-start;gap:8px;z-index:101}.nav-lines--vertical{flex-direction:column}.nav-lines--horizontal{z-index:102;align-items:flex-start}.nav-lines-track{display:flex}.nav-lines--vertical .nav-lines-track{flex-direction:column;align-items:flex-start;gap:inherit}.nav-lines--horizontal .nav-lines-track{align-items:flex-start;gap:inherit}.nav-dash{background:var(--border);border:none;padding:0;cursor:default;pointer-events:none;transition:none}.nav-dash.active{background:var(--text)}.nav-lines--vertical .nav-dash{width:var(--nav-dash-inactive-length);height:var(--nav-dash-thickness)}.nav-lines--vertical .nav-dash.active{width:var(--nav-dash-active-length)}.nav-lines--horizontal .nav-dash{width:var(--nav-dash-thickness);height:var(--nav-dash-inactive-length)}.nav-lines--horizontal .nav-dash.active{height:var(--nav-dash-active-length)}.nav-arrow{border:none;background:transparent;color:var(--dim);cursor:pointer;padding:0;width:var(--nav-dash-inactive-length);height:var(--nav-dash-inactive-length);display:inline-flex;align-items:flex-end;justify-content:center}.nav-arrow:hover{color:var(--text)}.nav-arrow-icon{width:var(--nav-dash-inactive-length);height:var(--nav-dash-inactive-length);display:block;stroke:currentColor;stroke-width:var(--nav-dash-thickness);stroke-linecap:round;stroke-linejoin:round;fill:none;transform:rotate(var(--arrow-rotation, 0deg));transform-origin:center}.nav-arrow--right{--arrow-rotation: 0deg}.nav-arrow--left{--arrow-rotation: 180deg}.nav-arrow--up{--arrow-rotation: -90deg}.nav-arrow--down{--arrow-rotation: 90deg}.nav-arrow.is-hidden{visibility:hidden;pointer-events:none}@media (max-width: 960px){#nav-lines{gap:5px}#nav-lines-horizontal{gap:5px;--nav-dash-inactive-length: var(--nav-line-width-mobile);--nav-dash-active-length: var(--nav-line-width-active-mobile)}}@media (max-width: 560px){#hint{font-size:8px;bottom:calc(var(--border-inset) + 8px)}#contact-jump{top:calc(var(--border-inset) + 10px);right:calc(var(--border-inset) + 10px)}#contact-jump svg{width:14px;height:14px}#nav-lines{left:calc(var(--border-inset) + 5px);--nav-dash-inactive-length: var(--nav-line-width-mobile);--nav-dash-active-length: var(--nav-line-width-active-mobile)}}@media (min-width: 721px){#hint{font-size:10px}}
