:root{--ink:#11100d;--paper:#fff;--red:#e8784a;--yellow:#e3d477;--blue:#2080ca;--lightblue:var(--blue);--gray-plane:#dde1e5;--black:#11100d;--accent-black:#333;--accent-paper:#5b5f64;--accent-gray:#d4d4d4;--linkedin-blue-6:#069;--linkedin-blue-4:#00a0dc;--linkedin-gray-6:#313335;--linkedin-gray-3:#86888a;--linkedin-gray-1:#caccce;--bluesky-blue-7:#0e57ff;--bluesky-blue-5:#1f6fff;--bluesky-blue-3:#73b6ff;--bluesky-blue-1:#cfe5ff;--github-gray-6:#101411;--github-gray-5:#232925;--github-green-4:#0fbf3e;--github-green-2:#8cf2a6;--line:9px;--su:.42rem;--sp-2xs:calc(var(--su) * .5);--sp-xs:calc(var(--su) * .75);--sp-sm:var(--su);--sp-md:calc(var(--su) * 1.5);--sp-lg:calc(var(--su) * 2);--grid-border:#1a1814;--cream:#f5f0e4;--veil-on-red:#f2ede1;--veil-on-black:#efe8d8;--surface:#f4efe5f5;--ink-06:color-mix(in srgb, var(--ink) 6%, transparent);--ink-18:color-mix(in srgb, var(--ink) 18%, transparent);--ink-32:color-mix(in srgb, var(--ink) 32%, transparent);--ink-50:color-mix(in srgb, var(--ink) 50%, transparent);--ink-62:color-mix(in srgb, var(--ink) 62%, transparent);--rule:var(--ink-18);--panel-open-bg:#e4ded0;--blue-contrast:#f0f4ff;--ink-warm:#171208;--stage-bg:#c4c3bc;--chrome-bg:#bdbeb8;--breadcrumb-link:color-mix(in srgb, var(--ink) 68%, transparent);--breadcrumb-link-hover:color-mix(in srgb, var(--ink) 85%, transparent);--breadcrumb-current:color-mix(in srgb, var(--ink) 60%, transparent);--breadcrumb-sep:color-mix(in srgb, var(--ink) 35%, transparent);--font-heading:"Cormorant Garamond", garamond, serif;--font-body:"Inter", system-ui, sans-serif;--heading-weight:600;--heading-letter-spacing:0;--heading-display-size:clamp(2.8rem, 6vw, 5.4rem);--heading-display-line-height:1.02;--heading-page-size:clamp(2.4rem, 5vw, 5.1rem);--heading-page-line-height:1.04;--heading-article-size:clamp(2rem, 3vw, 3rem);--heading-article-line-height:1.08;--heading-panel-title-size:3.5rem;--heading-panel-title-red-size:4rem;--heading-panel-title-line-height:1;--heading-section-size:clamp(1.4rem, 1.25rem + .45vw, 1.85rem);--heading-section-line-height:1.12;--canvas-shadow:14px 14px 0 color-mix(in srgb, var(--ink) 12%, transparent);--page-gutter:2rem;--motion-fast:.13s;--motion-hover:.17s;--motion-plane:.46s;--motion-load:.3s;--pulse-initial-delay:.3s;--pulse-interval:.37s;--pulse-duration:.25s;--label-fade:.1s;--label-fade-delay-in:.15s;--label-fade-delay-out:.25s;--ease-standard:cubic-bezier(.4, 0, .2, 1);--ease-sharp:cubic-bezier(.2, .8, .2, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-linear:linear;--shift-small:2px;--shift-medium:3px;--bp-narrow:480px;--bp-tablet:768px;--bp-stack:1024px;--mondrian-max-width:1280px}[data-palette="1930"]{--red:#da2418;--yellow:#f0c800;--blue:#0a5c9e}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--chrome-bg);min-height:100%;color:var(--ink);font-family:var(--font-body)}.stage{background:var(--stage-bg);place-items:center;min-height:100vh;padding:clamp(.6rem,1.5vw,1rem);display:grid}.mondrian{width:min(95vw, 95vh, var(--mondrian-max-width));aspect-ratio:1;grid-template-columns:var(--line) minmax(8rem, 2.45fr) var(--line) minmax(4.5rem, 1.15fr) var(--line) minmax(4.25rem, 1fr) var(--line) minmax(5.75rem, 1.65fr) var(--line);grid-template-rows:var(--line) minmax(10rem, 3.05fr) var(--line) minmax(3rem, 1fr) var(--line) minmax(2rem, .6fr) var(--line) minmax(3.75rem, 1.12fr) var(--line);background:var(--black);border:1px solid var(--grid-border);transition:grid-template-columns var(--motion-plane) var(--ease-standard), grid-template-rows var(--motion-plane) var(--ease-standard);display:grid;position:relative;overflow:hidden}.mondrian[data-focus=about]{grid-template-columns:var(--line) minmax(10rem, 3.65fr) var(--line) minmax(4.4rem, 1.45fr) var(--line) minmax(3.75rem, .82fr) var(--line) minmax(4.8rem, 1.08fr) var(--line);grid-template-rows:var(--line) var(--cell-h-about,547px)  0  0  var(--line)  minmax(2rem, .6fr) var(--line) minmax(3.4rem, .95fr) var(--line)}.mondrian[data-focus=projects]{grid-template-columns:var(--line) minmax(5.2rem, .92fr) var(--line) minmax(4.2rem, .88fr) var(--line) minmax(6.8rem, 2.55fr) var(--line) minmax(8rem, 3.45fr) var(--line);grid-template-rows:var(--line) var(--cell-h-projects,676px)  0  0  var(--line) minmax(1.6rem, .52fr) var(--line) minmax(2.8rem, .78fr) var(--line)}.mondrian[data-focus=projects] .panel--yellow{grid-row:2/5}.mondrian[data-focus=community]{grid-template-columns:var(--line) minmax(11rem, 4.1fr) var(--line) minmax(4.1rem, .82fr) var(--line) minmax(3.75rem, .72fr) var(--line) minmax(4.8rem, 1.18fr) var(--line);grid-template-rows:var(--line) minmax(5.5rem, .88fr) var(--line) minmax(2.75rem, .75fr) var(--line) minmax(3.25rem, 1.04fr) var(--line) minmax(8.8rem, 3.7fr) var(--line)}.mondrian[data-focus=connect]{grid-template-columns:var(--line) minmax(7.8rem, 1.6fr) var(--line) minmax(5.2rem, 1.3fr) var(--line) minmax(4.4rem, 1.08fr) var(--line) minmax(8.5rem, 3.28fr) var(--line);grid-template-rows:var(--line) minmax(6.2rem, 1.1fr) var(--line) minmax(3.1rem, .95fr) var(--line) minmax(2.85rem, .9fr) var(--line) var(--cell-h-connect,423px) var(--line)}.mondrian.is-measuring,.mondrian.is-measuring .panel,.mondrian.is-measuring .panel-content,.mondrian.is-measuring .panel-label{transition:none!important}.panel.is-open .panel-content{position:relative;inset:auto}.panel.is-open .content-inner{height:auto;overflow:visible}.panel,.block{position:relative;overflow:hidden}.panel{z-index:4;cursor:pointer;transition:background-color var(--motion-plane) var(--ease-standard), color var(--motion-plane) var(--ease-standard)}.block{z-index:2}.panel-label{z-index:3;letter-spacing:.22em;text-transform:uppercase;text-align:left;pointer-events:none;font-size:.95rem;font-weight:600;font-family:var(--font-heading);opacity:1;transition:opacity var(--motion-hover) var(--ease-standard);justify-content:flex-start;align-items:flex-start;padding:min(8%,2rem);display:flex;position:absolute;inset:0}html[data-fonts-pending] .panel-label{opacity:0}.panel-label--name{letter-spacing:.02em;text-transform:none;justify-content:flex-start;align-items:center;padding-left:10%;padding-right:8%;font-size:2.2rem;font-weight:600}.panel-label--name span{background:var(--ink);color:var(--cream);border:1px solid color-mix(in srgb, var(--cream) 85%, transparent);white-space:nowrap;max-width:100%;padding:.22em .52em .26em;line-height:.96;display:inline-block}.panel-content{z-index:4;opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--motion-fast) var(--ease-standard), visibility 0s linear var(--motion-fast);position:absolute;inset:0}.panel.is-content-visible .panel-content{opacity:1;visibility:visible;pointer-events:auto;transition:opacity var(--motion-fast) var(--ease-standard), visibility 0s linear 0s}.panel.is-open .panel-label{opacity:0;pointer-events:none}.content-inner{height:100%;padding:1.5rem;overflow:auto}.content-inner h1{font-family:var(--font-heading);font-weight:var(--heading-weight);font-size:var(--heading-panel-title-size);line-height:var(--heading-panel-title-line-height);letter-spacing:var(--heading-letter-spacing);margin-bottom:var(--sp-sm)}.panel--red .content-inner h1{white-space:nowrap;font-size:var(--heading-panel-title-red-size);margin-bottom:var(--sp-2xs)}.content-inner h2{font-family:var(--font-heading);font-weight:var(--heading-weight);letter-spacing:var(--heading-letter-spacing);margin-bottom:.45rem;font-size:1.85rem;line-height:1.05}.content-inner p,.content-inner li,.content-inner a{font-size:.94rem;line-height:1.58}.content-inner p{margin-bottom:.5rem}.lead{font-family:var(--font-heading);font-optical-sizing:auto;font-size:1.4rem;font-weight:500;line-height:1.42}.panel--red{--about-space-above-label:1.25rem;--about-space-below-label:.1rem;--about-measure:33rem}.panel--red .lead{margin-bottom:1.5rem;font-size:1.25rem;font-weight:600;line-height:1.34}.about-blocks{gap:var(--about-space-above-label);flex-direction:column;display:flex}.about-blocks .now-ribbon{max-width:var(--about-measure);margin-top:0}.about-block{max-width:var(--about-measure)}.about-block p{margin-bottom:0;line-height:1.5}.about-now-flow>p:last-of-type{display:inline}.about-now-flow>.about-resume-link{margin-left:.3em}.eyebrow{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-50);font-size:.56rem;font-weight:500}.about-label{color:#17130f80;margin-bottom:var(--about-space-below-label);line-height:1;display:block}.writing-list{margin-top:.1rem}.writing-list__posts{border-left:1px solid var(--rule);flex-direction:column;gap:.3rem;padding-left:.6rem;list-style:none;display:flex}.writing-list__posts li{line-height:1.3}.writing-list .writing-link{font-size:.85rem;line-height:1.3}.writing-list .writing-link:hover,.writing-list .writing-link:focus-visible,.about-resume-link:hover,.about-resume-link:focus-visible{text-underline-offset:2px;text-decoration:underline 1px}.writing-list .writing-list__all{font-family:var(--font-body);letter-spacing:.16em;text-transform:uppercase;color:#17130fb8;transition:color var(--motion-hover) var(--ease-standard);margin-top:.75rem;font-size:.6rem;font-weight:500;line-height:1.2;text-decoration:none;display:block}.writing-list .writing-list__all:hover,.writing-list .writing-list__all:focus-visible{color:var(--ink)}.writing-list__all .link-arrow,.about-resume-link .link-arrow{color:var(--blue);font-weight:700}.about-resume-link .no-break{white-space:nowrap}.social-stack,.project-list,.effort-list{flex-direction:column;gap:.58rem;display:flex}.effort-list{list-style:none}.connect-label{margin-top:var(--sp-sm);margin-bottom:var(--sp-sm);color:#19161180;display:block}.availability-signal{margin:0 0 var(--sp-sm);color:#191611d1;font-size:.84rem;line-height:1.45}.availability-noscript{margin:0 0 var(--sp-sm);color:#1916119e;font-size:.76rem;display:block}.social-stack{gap:var(--sp-xs);margin-top:0}.social-row{align-items:center;gap:var(--sp-2xs);border:1px solid var(--rule);color:inherit;transition:border-color var(--motion-hover) var(--ease-standard);padding:.22rem .42rem;font-size:.98rem;font-weight:600;text-decoration:none;display:flex;position:relative}.social-row:hover{border-color:#19161173}.social-row:after{content:"";width:0%;height:2px;transition:width var(--motion-hover) var(--ease-standard);position:absolute;bottom:-3px;left:0}.social-row:hover:after,.social-row:focus-visible:after{width:100%}.social-row--linkedin:after{background:linear-gradient(90deg, var(--linkedin-gray-6) 0%, var(--linkedin-blue-6) 34%, var(--linkedin-blue-4) 68%, var(--linkedin-gray-3) 86%, var(--linkedin-gray-1) 100%)}.social-row--github:after{background:linear-gradient(90deg, var(--github-gray-6) 0%, var(--github-gray-5) 42%, var(--github-green-4) 76%, var(--github-green-2) 100%)}.social-row--blog:after{background:linear-gradient(90deg, var(--red) 0%, var(--yellow) 54%, var(--blue) 100%)}.social-row--resume:after{background:linear-gradient(90deg, var(--blue) 0%, var(--yellow) 54%, var(--red) 100%)}.social-row--bluesky:after{background:linear-gradient(90deg, var(--bluesky-blue-7) 0%, var(--bluesky-blue-5) 52%, var(--bluesky-blue-3) 84%, var(--bluesky-blue-1) 100%)}.social-row--instagram:after{background:linear-gradient(90deg,#ffc273,#e56969,#c1558b,#8a49a1)}.social-row--threads:after{background:linear-gradient(90deg,#000 0%,#242424 38%,#6a6a6a 74%,#f2f2f2 100%)}.social-row--x:after{background:linear-gradient(90deg,#000 0%,#0b0b0b 55%,#7c7c7c 82%,#fff 100%)}.s-icon{opacity:.55;width:.92rem;height:.92rem;transition:opacity var(--motion-hover) var(--ease-standard);flex:none;justify-content:center;align-items:center;display:inline-flex}.social-row:hover .s-icon,.social-row:focus-visible .s-icon{opacity:1}.s-icon svg{fill:currentColor;width:.88rem;height:.88rem}.s-arrow{opacity:.6;transition:transform var(--motion-hover) var(--ease-standard), opacity var(--motion-hover) var(--ease-standard);margin-left:auto;font-size:.92rem}.social-row:hover .s-arrow,.social-row:focus-visible .s-arrow{opacity:1;transform:translateX(var(--shift-small))}.project-item{border:1px solid;padding:.45rem .65rem}.p-head{flex-wrap:wrap;align-items:center;gap:.45rem;margin-bottom:.22rem;display:flex}.p-name{font-family:var(--font-heading);font-size:1.15rem;font-weight:700}.p-name-link{color:inherit;font-family:var(--font-heading);font-size:1.15rem;font-weight:700;line-height:1.1;text-decoration:none}.p-link{color:var(--blue);text-underline-offset:2px;font-weight:700;text-decoration:underline 1px}.link-arrow{transition:transform var(--motion-hover) var(--ease-standard);margin-left:.18em;text-decoration:none;display:inline-block}a:hover .link-arrow,a:focus-visible .link-arrow,.social-row:hover .s-arrow,.social-row:focus-visible .s-arrow{transform:translateX(var(--shift-medium))}@media (prefers-reduced-motion:reduce){.link-arrow,.s-arrow{transition:none}a:hover .link-arrow,a:focus-visible .link-arrow,.social-row:hover .s-arrow,.social-row:focus-visible .s-arrow{transform:none}}.panel--yellow .content-inner h2{letter-spacing:var(--heading-letter-spacing);margin-bottom:var(--sp-sm);font-size:clamp(1.2rem,min(3vw,3vh),1.5rem);line-height:1.05}.panel--yellow .content-inner p,.panel--yellow .content-inner a{font-size:clamp(.78rem,min(1.7vw,1.7vh),.85rem);line-height:1.48}.panel--yellow .content-inner p{margin-bottom:var(--sp-sm)}.panel--yellow .p-name{font-size:clamp(.92rem,min(2vw,2vh),1rem)}.panel--yellow .p-name-link{text-underline-offset:2px;text-decoration:underline 1px}.panel--yellow .p-name-link .link-arrow,.panel--black .effort-link .link-arrow{color:var(--blue);font-weight:700}.panel--yellow .project-list{gap:var(--sp-xs)}.panel--yellow .project-item{padding:.35rem .55rem}.panel--yellow .p-head{margin-bottom:0}.panel--yellow .content-inner{padding-top:clamp(.75rem,min(2.2vw,2.2vh),1.1rem);padding-bottom:clamp(.42rem,min(1.8vw,1.8vh),.9rem)}.stack-ribbon,.impact-ribbon,.now-ribbon{margin-top:var(--sp-xs);padding-top:var(--sp-2xs);border-top:1px solid var(--rule);flex-direction:column;gap:.08rem;display:flex}.impact-ribbon{margin-top:var(--sp-xs)}.impact-items{word-spacing:.08em}.stack-items,.impact-items,.now-ribbon-date,.blog-callout-link{letter-spacing:.1em;word-spacing:.05em;color:var(--ink-50);font-size:.68rem;line-height:1.45}.blog-callout{margin-top:var(--sp-xs);padding-top:var(--sp-2xs);border-top:1px solid var(--rule);flex-direction:column;gap:.08rem;display:flex}.content-inner .blog-callout-link{text-underline-offset:2px;font-size:.68rem;text-decoration:underline 1px}.panel--blue .blog-callout{border-top-color:color-mix(in srgb, var(--blue-contrast) 18%, transparent)}.panel--blue .blog-callout-label,.panel--blue .blog-callout-link{color:color-mix(in srgb, var(--blue-contrast) 55%, transparent)}.panel--blue.is-open .blog-callout{border-top-color:var(--rule)}.panel--blue.is-open .blog-callout-label,.panel--blue.is-open .blog-callout-link{color:var(--ink-50)}.effort-list{gap:var(--sp-2xs)}.effort-list li{border-left:1px solid var(--rule);padding-left:.6rem}.effort-link{color:inherit;font-family:var(--font-heading);text-decoration:underline;text-decoration-color:var(--rule);text-underline-offset:2px;font-size:.85rem;font-weight:700;line-height:1.16;text-decoration-thickness:1px}.effort-amount{letter-spacing:.01em;margin-top:.12rem;font-size:.85rem;font-weight:500;line-height:1.2}.effort-desc{margin-top:.1rem;font-size:.85rem;line-height:1.48}.panel--black .content-inner{padding-top:1.1rem;padding-bottom:.7rem}.panel--black .content-inner h2{margin-bottom:var(--sp-sm);font-size:1.6rem;line-height:1.05}.panel--black .content-inner>p{margin-bottom:var(--sp-sm);font-size:.85rem;line-height:1.48}.panel--black .content-inner a{font-size:.85rem;line-height:1.48}.panel--red{background:var(--red);color:var(--cream);grid-area:2/2/5/5;container-type:inline-size}.panel--red.is-open{background:var(--panel-open-bg);color:var(--ink-warm)}.panel--red .panel-label{color:var(--cream)}@container (width<=380px){.panel--red .panel-label--name{font-size:clamp(.95rem,8.4cqw,2rem)}.panel--red .panel-label--name span{white-space:normal;text-wrap:balance;line-height:1.04}}.block--white-a{background:var(--paper);grid-area:4/6}.panel--yellow{background:var(--yellow);color:var(--ink-warm);grid-area:2/6/auto/9}.panel--yellow.is-open{background:var(--panel-open-bg);color:var(--ink-warm)}.panel--yellow .panel-label{color:var(--ink-warm);justify-content:flex-end;align-items:flex-start;padding-top:15%;padding-right:16%}.block--white-b{background:var(--paper);grid-area:4/8}.panel--black{background:var(--accent-black);color:var(--cream);grid-area:6/2/9}.panel--black.is-open{background:var(--panel-open-bg);color:var(--ink-warm)}.panel--black .panel-label{color:var(--cream);justify-content:flex-start;align-items:flex-end;padding-bottom:16%;padding-left:17%}.panel--black .panel-label__h,.panel--black .panel-label__v{transition:opacity var(--label-fade) var(--ease-standard);position:absolute}.panel--black .panel-label__h{opacity:1;transition-delay:var(--label-fade-delay-out);bottom:16%;left:17%}.panel--black .panel-label__v{writing-mode:vertical-rl;text-orientation:mixed;transform-origin:50%;opacity:0;transition-delay:0s;bottom:clamp(.8rem,1.6vw,1.4rem);left:clamp(.6rem,1.4vw,1.2rem);transform:rotate(180deg)}.mondrian[data-focus=projects] .panel--black .panel-label__h{opacity:0;transition-delay:0s}.mondrian[data-focus=projects] .panel--black .panel-label__v{opacity:1;transition-delay:var(--label-fade-delay-in)}@media (prefers-reduced-motion:reduce){.panel--black .panel-label__h,.panel--black .panel-label__v{transition:none}}.block--white-c{background:var(--paper);grid-area:6/4/auto/7}.block--gray-e{background:var(--accent-gray);grid-area:6/8}.block--gray-d{background:var(--accent-gray);grid-area:8/4/auto/5}.panel--blue{background:var(--blue);color:var(--blue-contrast);grid-area:8/6/auto/9}.panel--blue.is-open{background:var(--panel-open-bg);color:var(--ink-warm)}.panel--blue .panel-label{color:var(--blue-contrast);justify-content:flex-start;align-items:center;padding-left:23%}.panel--blue .content-inner{padding-top:1.1rem;padding-left:2rem}.panel--blue .content-inner h2{margin-bottom:var(--sp-sm);font-size:1.6rem;line-height:1.05}body.project-page{background:linear-gradient(135deg, #ffffff6b, #fff0), var(--project-bg,#d8d1c5);min-height:100%}body.blog-page{--project-bg:var(--stage-bg)}[data-accent]{--accent-text:color-mix(in srgb, var(--accent) 45%, var(--ink));--project-bg:color-mix(in srgb, var(--accent) 16%, var(--cream));--project-gradient-from:color-mix(in srgb, var(--accent) 14%, var(--cream));--project-gradient-to:var(--cream)}[data-accent=red]{--accent:var(--red);--accent-contrast:var(--cream);--accent-soft:color-mix(in srgb, var(--accent) 12%, transparent)}[data-accent=yellow]{--accent:var(--yellow);--accent-contrast:var(--ink-warm);--accent-soft:color-mix(in srgb, var(--accent) 18%, transparent)}[data-accent=black]{--accent:var(--accent-black);--accent-contrast:var(--cream);--accent-soft:color-mix(in srgb, var(--accent) 12%, transparent)}[data-accent=blue]{--accent:var(--blue);--accent-contrast:var(--cream);--accent-soft:color-mix(in srgb, var(--accent) 12%, transparent)}[data-accent=lightblue]{--accent:var(--lightblue);--accent-contrast:var(--cream);--accent-soft:color-mix(in srgb, var(--accent) 12%, transparent)}[data-accent=paper]{--accent:var(--accent-paper);--accent-contrast:var(--cream);--accent-soft:color-mix(in srgb, var(--accent) 12%, transparent)}.page-shell{min-height:100vh;padding:clamp(.9rem, 2.5vw, 1.8rem) var(--page-gutter)}.page-canvas{width:min(100%, var(--canvas-width,72rem));box-shadow:var(--canvas-shadow);margin:0 auto}.project-detail{background:var(--surface);border:var(--line) solid var(--grid-border);overflow-x:hidden}.project-hero{border-bottom:1px solid var(--rule);padding:clamp(1.15rem,3vw,2.5rem);position:relative}.project-hero:before{content:"";background:var(--accent);width:clamp(.5rem,1vw,.8rem);position:absolute;inset:0 auto 0 0}.project-hero h1{font-family:var(--font-heading);font-weight:var(--heading-weight);font-size:var(--heading-page-size);line-height:var(--heading-page-line-height);letter-spacing:var(--heading-letter-spacing);text-wrap:balance;padding-left:clamp(1rem,2.2vw,1.6rem)}.project-actions{margin-top:var(--sp-lg);flex-wrap:wrap;gap:.75rem;padding-left:clamp(1rem,2.2vw,1.6rem);display:flex}.nav-button{border:1px solid var(--ink);color:inherit;letter-spacing:.14em;text-transform:uppercase;transition:background-color var(--motion-hover) var(--ease-standard), color var(--motion-hover) var(--ease-standard), transform var(--motion-hover) var(--ease-standard);background:0 0;align-items:center;gap:.35rem;padding:.55rem .85rem;font-size:clamp(.8rem,.92vw,.92rem);font-weight:600;text-decoration:none;display:inline-flex}.nav-button:hover,.nav-button:focus-visible{background:var(--accent);color:var(--accent-contrast,var(--cream));transform:translateY(calc(var(--shift-small) * -1))}@media (prefers-reduced-motion:reduce){.nav-button{transition:none}.nav-button:hover,.nav-button:focus-visible{transform:none}}.project-hero__gradient{border-left:clamp(.5rem, 1vw, .8rem) solid var(--accent);position:relative}.project-hero__header{padding:clamp(1.15rem,3vw,2.5rem) clamp(1.15rem,3vw,2.5rem) clamp(1.5rem,3vw,2.5rem)}.project-hero__rule{border:none;border-top:1px solid var(--rule);margin:0}.project-hero--wide{border-bottom:none;padding:0}.project-hero--wide:before,.project-hero--narrow:before{display:none}.project-hero--narrow{border-bottom:none;padding:0}.metadata-surface{border:1px solid var(--rule);background:linear-gradient(135deg, var(--project-gradient-from,transparent), var(--project-gradient-to,var(--surface,#fff)));margin:clamp(1rem,2vw,1.5rem) clamp(1.15rem,3vw,2.5rem)}.metadata-strip{gap:0;margin:0;padding:0;display:grid}.metadata-strip--grid-4{grid-template-columns:repeat(4,1fr)}.metadata-strip__item{border-left:1px dotted var(--rule);padding:clamp(.6rem,1.2vw,.9rem) clamp(.75rem,1.5vw,1rem)}.metadata-strip--grid-4 .metadata-strip__item:first-child{border-left:none}.metadata-strip dt{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-62);margin-bottom:.3rem;font-size:clamp(.6rem,.7vw,.68rem)}.metadata-strip dd{color:var(--ink);font-size:clamp(.9rem,.9rem + .12vw,.98rem);line-height:1.45}.project-screenshot{border-top:1px dotted var(--rule);flex-direction:column;align-items:center;margin:0;padding:clamp(1rem,2vw,1.5rem);display:flex}.project-screenshot__inner{flex-direction:column;width:100%;display:flex}.project-screenshot--narrow .project-screenshot__inner,.project-screenshot--narrow .project-stack{width:100%;max-width:320px}.project-screenshot img,.project-screenshot>svg,.project-screenshot__inner>svg{border-radius:12px;width:100%;height:auto;display:block}.project-screenshot--wide img,.project-screenshot--wide>svg,.project-screenshot--wide .project-screenshot__inner>svg{border:1px solid var(--rule,color-mix(in srgb, var(--ink) 12%, transparent))}[data-accent=black] .project-screenshot{background:var(--ink);border-top-color:var(--ink)}[data-accent=black] .project-screenshot--wide .project-screenshot__inner{max-width:56rem;margin:0 auto;padding:clamp(2rem,6vw,4rem) clamp(1rem,4vw,2.5rem)}[data-accent=black] .project-screenshot--wide img,[data-accent=black] .project-screenshot--wide .project-screenshot__inner>svg{border:none}[data-accent=black] .project-stack{color:color-mix(in srgb, var(--cream) 78%, transparent)}[data-accent=black] .project-stack__label{color:color-mix(in srgb, var(--cream) 62%, transparent)}[data-accent=black] .project-stack__value{color:color-mix(in srgb, var(--cream) 92%, transparent)}.project-screenshot__mux-shell{background:var(--ink);border-radius:12px;width:100%;position:relative;overflow:hidden}.project-screenshot__mux-frame{width:100%}.project-screenshot__mux{opacity:1;width:100%;transition:opacity var(--motion-fast) var(--ease-linear);border-radius:12px;display:block;overflow:hidden}.project-screenshot__mux-poster{border-radius:12px;width:100%;height:auto;display:block}.project-screenshot__mux-gif-fallback{z-index:1;object-fit:cover;opacity:0;pointer-events:none;width:100%;height:100%;transition:opacity var(--motion-fast) var(--ease-linear);border-radius:12px;display:block;position:absolute;inset:0}.project-screenshot__mux-shell[data-playback-state=fallback] .project-screenshot__mux{opacity:0}.project-screenshot__mux-shell[data-playback-state=fallback] .project-screenshot__mux-gif-fallback{opacity:1}.project-screenshot__mux-play{z-index:2;border:1px solid color-mix(in srgb, var(--cream) 72%, transparent);background:color-mix(in srgb, var(--ink) 78%, transparent);width:3rem;height:3rem;box-shadow:0 .35rem 1.2rem color-mix(in srgb, var(--ink) 26%, transparent);cursor:pointer;transition:background-color var(--motion-hover) var(--ease-standard), border-color var(--motion-hover) var(--ease-standard), transform var(--motion-hover) var(--ease-standard);border-radius:999px;place-items:center;padding:0;display:grid;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.project-screenshot__mux-play:before{content:"";border-top:.5rem solid #0000;border-bottom:.5rem solid #0000;border-left:.78rem solid var(--cream);width:0;height:0;margin-left:.16rem;display:block}.project-screenshot__mux-play:hover{background:color-mix(in srgb, var(--ink) 90%, transparent);border-color:var(--cream);transform:translate(-50%, calc(-50% - var(--shift-small)))}.project-screenshot__mux-play:focus-visible{outline:2px solid var(--cream);outline-offset:3px}.project-screenshot__mux-play[hidden]{display:none}.project-stack{align-items:baseline;gap:.75rem;width:100%;margin:clamp(.6rem,1vw,.85rem) 0 0;padding:0;display:flex}.project-stack__label{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-62);flex:none;font-size:clamp(.6rem,.7vw,.68rem)}.project-stack__value{color:var(--ink);flex:auto;font-size:clamp(.9rem,.9rem + .12vw,.98rem);line-height:1.45}.project-copy{gap:1.2rem;min-width:0;padding:clamp(1rem,2vw,1.5rem) clamp(1.15rem,3vw,2.5rem);display:grid}.project-copy h2{border-top:1px solid var(--rule);font-family:var(--font-heading);font-weight:var(--heading-weight);font-style:italic;font-size:var(--heading-section-size);line-height:var(--heading-section-line-height);letter-spacing:var(--heading-letter-spacing);margin-top:3rem;margin-bottom:.75rem;padding-top:1.25rem}.project-copy h2:first-child{margin-top:0}.project-copy p{font-size:clamp(.95rem,.92rem + .14vw,1.02rem);line-height:1.65}.project-copy p+p{margin-top:.8rem}.project-copy ul,.project-copy ol{gap:.7rem;margin:.5rem 0 0;display:grid}.project-copy ul{padding:0;list-style:none}.project-copy ol{padding-left:1.4rem;list-style:decimal}.project-copy li{font-size:clamp(.95rem,.92rem + .14vw,1.02rem);line-height:1.65}.project-copy ul li{padding-left:1rem;position:relative}.project-copy ol li{padding-left:.4rem}.project-copy ul li:before{content:"";background:var(--accent);width:.42rem;height:.42rem;position:absolute;top:.5em;left:0}.project-copy ol li::marker{color:var(--project-link-color,var(--accent-text));font-variant-numeric:tabular-nums}.project-copy a{color:var(--project-link-color,var(--accent-text));text-underline-offset:.22em;text-decoration:underline 1px;text-decoration-color:color-mix(in srgb, var(--project-link-color,var(--accent-text)) 55%, transparent);transition:text-decoration-color var(--motion-hover) var(--ease-standard), text-decoration-thickness var(--motion-hover) var(--ease-standard), color var(--motion-hover) var(--ease-standard)}.project-copy a:hover,.project-copy a:focus-visible{text-decoration-thickness:2px;text-decoration-color:var(--project-link-color,var(--accent-text))}.project-copy a code{color:inherit}.project-related{border-top:1px solid var(--rule);margin-top:1.5rem;padding:1.25rem clamp(1.15rem,3vw,2.5rem) clamp(1rem,2vw,1.5rem)}.project-related h2{font-family:var(--font-heading);font-weight:var(--heading-weight);font-size:clamp(1.05rem,1.3vw,1.2rem);font-style:italic;line-height:var(--heading-section-line-height);letter-spacing:var(--heading-letter-spacing);color:color-mix(in srgb, var(--ink) 72%, transparent);margin-bottom:.6rem}.project-related__list{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.project-related__list li{padding-left:1rem;font-size:clamp(.9rem,.9rem + .08vw,.98rem);line-height:1.55;position:relative}.project-related__list li:before{content:"";background:var(--accent);width:.42rem;height:.42rem;position:absolute;top:.5em;left:0}.project-related__list a{color:inherit;transition:color var(--motion-hover) var(--ease-standard);text-decoration:none}.project-related__list a:hover{color:var(--accent-text);text-decoration:underline}@media (width<=768px){.metadata-strip--grid-4{grid-template-columns:1fr 1fr}.metadata-strip--grid-4 .metadata-strip__item:nth-child(n+3){border-top:1px dotted var(--rule)}.metadata-strip--grid-4 .metadata-strip__item:nth-child(odd){border-left:none}.project-screenshot--narrow .project-screenshot__inner,.project-screenshot--narrow .project-stack{max-width:280px}}@media (width<=480px){.metadata-strip--grid-4{grid-template-columns:1fr}.metadata-strip__item{border-top:1px dotted var(--rule);border-left:none!important}.metadata-strip__item:first-child{border-top:none}}.shell{min-height:100vh;padding:clamp(.9rem, 2.5vw, 1.8rem) var(--page-gutter)}.frame{background:var(--surface);border:var(--line) solid var(--grid-border);overflow:hidden}.hero{background:var(--paper);border-bottom:var(--line) solid var(--ink);padding:clamp(1.15rem,3vw,2.5rem)}.breadcrumbs{letter-spacing:.12em;text-transform:uppercase;color:var(--breadcrumb-current);align-items:center;gap:.35rem;margin-bottom:1rem;font-size:clamp(.72rem,.92vw,.88rem);font-weight:400;display:flex}.breadcrumbs a{color:var(--breadcrumb-link);text-decoration:none}.breadcrumbs a:hover{color:var(--breadcrumb-link-hover);text-decoration:underline}.breadcrumbs .breadcrumb-sep{color:var(--breadcrumb-sep);user-select:none}.breadcrumbs .breadcrumb-current{color:var(--breadcrumb-current);text-overflow:ellipsis;white-space:nowrap;max-width:31ch;overflow:hidden}.breadcrumbs--inset{margin-bottom:var(--sp-md);flex-wrap:wrap;padding-left:clamp(1rem,2.2vw,1.6rem)}.hero h1{font-family:var(--font-heading);font-size:var(--heading-display-size);line-height:var(--heading-display-line-height);font-weight:var(--heading-weight);letter-spacing:var(--heading-letter-spacing)}.deck{max-width:38rem;font-size:clamp(1.05rem,1rem + .42vw,1.4rem);line-height:1.45;font-family:var(--font-heading);color:color-mix(in srgb, var(--ink) 72%, transparent);margin-top:1rem}.deck--inset{margin-top:var(--sp-md);color:inherit;padding-left:clamp(1rem,2.2vw,1.6rem)}.blog-grid{background:var(--ink);gap:var(--line);--col-post:calc(50% - var(--line) / 2);--col-mid:calc(22% - var(--line));--col-post-wide:calc(72% - var(--line) / 2);display:grid}.grid-row--1{grid-template-columns:var(--col-post) var(--col-mid) minmax(0, 1fr);gap:var(--line);min-height:16rem;display:grid}.grid-row--2{grid-template-columns:var(--col-post-wide) minmax(0, 1fr);gap:var(--line);min-height:13rem;display:grid}.grid-row--3{grid-template-columns:var(--col-post) minmax(0, 1fr);gap:var(--line);min-height:14rem;display:grid}.grid-row--4{grid-template-columns:var(--col-post) var(--col-mid) minmax(0, 1fr);gap:var(--line);min-height:14rem;display:grid}.grid-row--overflow-a{gap:var(--line);grid-template-columns:minmax(0,6fr) minmax(0,4fr);min-height:13rem;display:grid}.grid-row--overflow-b{gap:var(--line);grid-template-columns:minmax(0,4fr) minmax(0,6fr);min-height:13rem;display:grid}.grid-row--rss{gap:var(--line);grid-template-columns:minmax(0,1fr);min-height:6rem;display:grid}.post-card{--post-measure:62ch;--post-title-measure:40rem;background:var(--surface);flex-direction:column;justify-content:center;padding:clamp(1.2rem,2.5vw,2rem);display:flex}.post-card:hover,.post-card:focus-within{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--blue) 18%, transparent);transition:box-shadow var(--motion-hover) var(--ease-standard)}.post-meta{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-62);margin-bottom:.5rem;font-size:clamp(.65rem,.78vw,.76rem)}.post-meta:has(+.post-meta){color:color-mix(in srgb, var(--ink) 92%, transparent);margin-bottom:.225rem}.post-title{font-family:var(--font-heading);max-width:var(--post-title-measure);margin-bottom:.6rem;font-size:clamp(1.6rem,2.2vw,2.4rem);font-weight:600;line-height:1.05}.post-title a{color:inherit;text-decoration:none}.post-title a:hover{text-decoration:underline;text-decoration-color:var(--blue);text-underline-offset:.12em}.post-desc{max-width:var(--post-measure);color:color-mix(in srgb, var(--ink) 78%, transparent);margin-bottom:.9rem;font-size:clamp(.88rem,.95vw,.98rem);line-height:1.55}.tag-row{flex-wrap:wrap;gap:.4rem;display:flex}.tag{background:color-mix(in srgb, var(--ink) 8%, transparent);letter-spacing:.14em;text-transform:uppercase;align-items:center;padding:.2rem .42rem;font-size:clamp(.62rem,.74vw,.72rem);line-height:1.4;display:inline-flex}a.tag{color:inherit;transition:background var(--motion-hover) var(--ease-standard);font-weight:700;text-decoration:none}a.tag:hover{background:var(--ink-18)}.accent-red{background:var(--red)}.accent-blue{background:var(--blue);position:relative}.accent-blue-label{writing-mode:vertical-rl;text-orientation:mixed;font-family:var(--font-heading);letter-spacing:.22em;text-transform:uppercase;color:#ffffff80;font-size:clamp(.72rem,.88vw,.84rem);font-weight:500;position:absolute;bottom:clamp(.8rem,1.5vw,1.2rem);right:clamp(.8rem,1.5vw,1.2rem)}.accent-yellow{background:var(--yellow)}.accent-cream{background:var(--gray-plane);justify-content:center;align-items:center;display:flex}.accent-black{background:var(--accent-black)}.accent-paper{background:var(--gray-plane)}.accent-lightblue{background:var(--lightblue)}.accent-white{background:var(--paper)}.rss-link{letter-spacing:.18em;text-transform:uppercase;color:var(--ink-62);transition:color var(--motion-hover) var(--ease-standard);font-size:clamp(.68rem,.82vw,.78rem);text-decoration:none}.rss-link:hover{color:var(--ink)}.site-footer{border-top:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:clamp(1.5rem,3vw,2.5rem) clamp(1.15rem,3vw,2.5rem);display:flex}.site-footer__attribution{letter-spacing:.18em;text-transform:uppercase;color:var(--ink-62);font-size:clamp(.7rem,.88vw,.82rem)}.site-footer__nav{flex-wrap:wrap;gap:.75rem;display:flex}.site-footer:not(.site-footer--detail) .nav-button:hover,.site-footer:not(.site-footer--detail) .nav-button:focus-visible{background:var(--red);color:var(--cream)}.site-footer--grid{background:var(--paper);border-top:var(--line) solid var(--ink);padding-block:clamp(1.15rem,2.5vw,2rem)}.site-footer--canvas{background:var(--paper);grid-area:6/2/auto/-2;min-width:0}.site-footer--detail{border-top:1px solid var(--ink)}@media (width<=1023px){.site-footer{text-align:center;flex-direction:column}.site-footer__nav{justify-content:center}.site-footer--canvas{grid-area:8/2}}.error-shell{min-height:100vh;padding:var(--page-gutter);background:var(--stage-bg);justify-content:center;align-items:center;display:flex}.error-mondrian{--canvas-width:64rem;grid-template-columns:var(--line) 2.4fr var(--line) 1fr var(--line) 1.2fr var(--line) .5fr var(--line);grid-template-rows:var(--line) auto var(--line) 5rem var(--line) 3.5rem var(--line);background:var(--black);border:1px solid var(--grid-border);display:grid}.e-content{background:var(--surface);grid-area:2/2/auto/7;padding:clamp(2rem,5vw,4rem)}.e-content h1{font-family:var(--font-heading);font-size:var(--heading-page-size);font-weight:var(--heading-weight);line-height:var(--heading-page-line-height);letter-spacing:var(--heading-letter-spacing);margin:.25rem 0 .5rem}.e-content .deck{color:#555;margin-bottom:0;font-size:clamp(.9rem,1.2vw,1.1rem)}.e-content .breadcrumbs{margin-bottom:.5rem}.e-content .project-actions{padding-left:0}.e-block{min-height:0}.e-red{background:var(--red);grid-area:2/8}.e-yellow-a{background:var(--yellow);grid-area:4/2}.e-blue{background:var(--blue);grid-area:4/4/7}.e-black{background:var(--accent-black);grid-area:4/6}.e-white-a{background:var(--accent-gray);grid-area:4/8}.e-white-b{background:var(--accent-gray);grid-area:6/2}.e-yellow-b{background:var(--yellow);grid-area:6/6}.e-white-c{background:var(--paper);grid-area:6/8}@media (width<=768px){.error-mondrian{grid-template-columns:var(--line) 1fr var(--line);grid-template-rows:var(--line) auto var(--line);box-shadow:var(--canvas-shadow)}.e-content{grid-area:2/2}.e-block{display:none}}.og-body{background:var(--stage-bg);margin:0;padding:0}.og-shell{box-sizing:border-box;justify-content:center;align-items:center;width:1200px;height:630px;padding:40px;display:flex}.og-card{grid-template-columns:var(--line) 2.4fr var(--line) 1fr var(--line) 1.2fr var(--line) .5fr var(--line);grid-template-rows:var(--line) 1fr var(--line) 5rem var(--line) 3.5rem var(--line);background:var(--black);border:1px solid var(--grid-border);width:100%;height:100%;box-shadow:var(--canvas-shadow);display:grid}.og-content{background:var(--surface);flex-direction:column;grid-area:2/2/auto/7;justify-content:center;padding:52px 56px;display:flex;overflow:hidden}.og-label{font-family:var(--font-body);letter-spacing:.18em;text-transform:uppercase;color:#888;margin-bottom:14px;font-size:16px;font-weight:500}.og-heading{font-family:var(--font-heading);color:var(--ink);text-wrap:balance;margin:0 0 14px;font-size:92px;font-weight:600;line-height:1.02}.og-heading--title-only{text-wrap:wrap;font-size:80px;line-height:1.04}.og-heading--long{text-wrap:balance;font-size:74px;line-height:1.04}.og-heading--with-description{margin-bottom:12px;font-size:84px;line-height:1.04}.og-description{font-family:var(--font-body);color:#555;text-wrap:balance;max-width:780px;margin:0 0 10px;font-size:24px;line-height:1.3}.og-meta{font-family:var(--font-body);color:#888;letter-spacing:.04em;margin:0;font-size:16px}.og-block{min-height:0}.og-red{background:var(--red);grid-area:2/8}.og-yellow-a{background:var(--yellow);grid-area:4/2}.og-blue{background:var(--blue);grid-area:4/4/7}.og-black{background:var(--accent-black);grid-area:4/6}.og-white-a{background:var(--accent-gray);grid-area:4/8}.og-white-b{background:var(--accent-gray);grid-area:6/2}.og-yellow-b{background:var(--yellow);grid-area:6/6}.og-white-c{background:var(--paper);grid-area:6/8}.blog-canvas{grid-template-columns:var(--line) minmax(2.5rem, .4fr)  var(--line) minmax(20rem, 3fr)  var(--line) minmax(10rem, 1.3fr)  var(--line);grid-template-rows:var(--line) auto  var(--line) 1fr  var(--line) auto  var(--line);background:var(--ink);display:grid;overflow:clip}.blog-margin{grid-column:2}.blog-margin--header{background:var(--red);grid-row:2}.blog-margin--body{background:linear-gradient(to bottom, var(--yellow) 0%, var(--yellow) 25%, var(--ink) 25%, var(--ink) calc(25% + var(--line)), var(--paper) calc(25% + var(--line)), var(--paper) 60%, var(--ink) 60%, var(--ink) calc(60% + var(--line)), var(--blue) calc(60% + var(--line)), var(--blue) 100%);grid-row:4}.blog-margin--footer{background:var(--paper);grid-row:6}.blog-canvas-header{background:var(--paper);flex-direction:column;grid-area:2/4;justify-content:flex-end;min-width:0;padding:clamp(1.15rem,3vw,2.5rem);display:flex}.blog-canvas-header .breadcrumbs{margin-bottom:1.5rem}.blog-canvas-header h1{font-family:var(--font-heading);font-weight:var(--heading-weight);font-size:var(--heading-article-size);line-height:var(--heading-article-line-height);letter-spacing:var(--heading-letter-spacing);margin-bottom:1.2rem}.blog-canvas-header .deck{margin-top:var(--sp-md);font-family:var(--font-body);color:var(--ink-62);max-width:54ch;font-size:clamp(.85rem,1vw,1rem);font-style:normal;font-weight:400;line-height:1.6}.blog-sidebar-meta{background:var(--accent-gray);flex-direction:column;grid-area:2/6;justify-content:flex-end;min-width:0;padding:clamp(.85rem,2vw,1.5rem);display:flex}.blog-sidebar-topics{flex-wrap:wrap;gap:.3rem;display:flex}.blog-sidebar-topic{background:color-mix(in srgb, var(--ink) 8%, transparent);font-family:var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-62);border-radius:2px;align-items:center;padding:.18rem .45rem;font-size:.6rem;font-weight:600;display:inline-flex}.blog-sidebar-meta dl{flex-direction:column;gap:.8rem;margin:0;display:flex}.blog-sidebar-meta dt{letter-spacing:.16em;text-transform:uppercase;color:color-mix(in srgb, var(--ink) 48%, transparent);margin-bottom:.12rem;font-size:clamp(.58rem,.72vw,.68rem)}.blog-sidebar-meta dd{font-family:var(--font-heading);font-size:clamp(.88rem,.92vw,.98rem);font-weight:500}.blog-content{background:var(--surface);grid-area:4/4;align-self:stretch;min-width:0;padding:clamp(1.15rem,3vw,2.5rem)}.blog-sidebar{background:var(--surface);grid-area:4/6;min-width:0;padding:0}.blog-sidebar-inner{padding:clamp(.85rem,2vw,1.5rem)}.blog-sidebar-section{border-bottom:1px solid var(--rule);margin-bottom:1rem;padding-bottom:1rem}.blog-sidebar-section:last-child{border-bottom:none;margin-bottom:0}.blog-sidebar-heading{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-62);font-size:clamp(.7rem,.9vw,.78rem);font-family:var(--font-body);margin-bottom:.55rem;font-weight:600}.blog-sidebar-toc-list{gap:.35rem;padding:0;list-style:none;display:grid}.blog-sidebar-toc-list li{border-bottom:1px solid var(--rule);padding:.25em 0;font-size:clamp(.78rem,.86vw,.88rem);line-height:1.35}.blog-sidebar-toc-list li:last-child{border-bottom:none}.blog-sidebar-toc-list a{color:var(--ink-62);transition:color var(--motion-fast) var(--ease-standard);text-decoration:none}.blog-sidebar-toc-list a:hover{color:var(--accent-text)}.blog-sidebar-pullquote{border-left:3px solid var(--accent);background:#ffffff85;margin:1rem 0;padding:.85rem 1rem}.blog-sidebar-pullquote--red{border-left-color:var(--red)}.blog-sidebar-pullquote--yellow{border-left-color:var(--yellow)}.blog-sidebar-pullquote--blue{border-left-color:var(--blue)}.blog-sidebar-pullquote p{font-family:var(--font-heading);margin:0;font-size:clamp(.92rem,.98vw,1.04rem);font-style:italic;line-height:1.38}.blog-sidebar-pullquote cite{letter-spacing:.14em;text-transform:uppercase;color:color-mix(in srgb, var(--ink) 48%, transparent);margin-top:.4rem;font-size:clamp(.58rem,.72vw,.68rem);font-style:normal;display:block}.blog-sidebar-item{border:1px solid var(--rule);background:#ffffff9e;border-radius:4px;margin:1rem 0;padding:.65rem;overflow-x:auto}.blog-sidebar-item .mermaid{font-size:.65rem}.blog-sidebar-item img{width:100%;height:auto;display:block}.blog-sidebar-caption{color:color-mix(in srgb, var(--ink) 55%, transparent);margin-top:.4rem;font-size:clamp(.68rem,.78vw,.76rem);line-height:1.4}.blog-sidebar-text{color:color-mix(in srgb, var(--ink) 72%, transparent);margin:0;font-size:clamp(.78rem,.85vw,.88rem);line-height:1.5}.blog-takeaways{background:var(--paper);border:1px solid var(--rule);border-left:var(--line) solid var(--yellow);margin-bottom:clamp(1.4rem,3vw,2.2rem);padding:clamp(.85rem,2vw,1.35rem) clamp(1rem,2.2vw,1.6rem)}.blog-takeaways__heading{font-family:var(--font-body);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-62);margin-bottom:.6rem;font-size:clamp(.7rem,.9vw,.78rem);font-weight:600}.blog-takeaways__list{margin:0;padding-left:1.05rem;list-style:none}.blog-takeaways__list li{font-family:var(--font-body);overflow-wrap:break-word;margin-top:.5rem;font-size:clamp(.85rem,.95vw,.98rem);line-height:1.55;position:relative}.blog-takeaways__list li:first-child{margin-top:0}.blog-takeaways__list li:before{content:"";background:var(--red);width:.42rem;height:.42rem;position:absolute;top:.6em;left:-1.05rem}.blog-postscript{border-top:1px solid var(--rule);margin-top:clamp(2rem,4vw,3rem);padding-top:clamp(1.2rem,2.5vw,1.8rem)}.blog-postnav{gap:var(--line);grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));display:grid}.blog-postnav__card{background:var(--paper);border:1px solid var(--rule);min-width:0;color:inherit;transition:border-color var(--motion-hover) var(--ease-standard), transform var(--motion-hover) var(--ease-standard);flex-direction:column;gap:.3rem;padding:clamp(.75rem,1.8vw,1.1rem);text-decoration:none;display:flex}.blog-postnav__card:hover,.blog-postnav__card:focus-visible{border-color:var(--ink-32);transform:translateY(calc(-1 * var(--shift-small)))}.blog-postnav__card--next{text-align:right}.blog-postnav__label{font-family:var(--font-body);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-62);font-size:clamp(.6rem,.72vw,.68rem);font-weight:600}.blog-postnav__title{font-family:var(--font-heading);overflow-wrap:break-word;font-size:clamp(1rem,1.15vw,1.2rem);font-weight:500;line-height:1.25}.blog-postnav__meta{font-family:var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-62);font-size:clamp(.68rem,.8vw,.76rem)}.blog-cta{margin-top:var(--line);background:var(--paper);border:1px solid var(--rule);border-left:var(--line) solid var(--red);padding:clamp(.75rem,1.8vw,1.1rem) clamp(.9rem,2vw,1.35rem)}.blog-cta__line{font-family:var(--font-body);flex-wrap:wrap;align-items:baseline;gap:.25rem .5rem;font-size:clamp(.82rem,.92vw,.95rem);line-height:1.5;display:flex}.blog-cta__link{color:var(--ink);border-bottom:1px solid var(--ink-32);transition:border-color var(--motion-hover) var(--ease-standard), color var(--motion-hover) var(--ease-standard);text-decoration:none}.blog-cta__link:hover,.blog-cta__link:focus-visible{border-bottom-color:var(--red)}.blog-cta__sep{color:var(--ink-32)}.blog-cta__noscript{font-family:var(--font-body);color:var(--ink-62);margin-top:.4rem;font-size:clamp(.72rem,.85vw,.82rem)}@media print{.blog-postscript{display:none!important}.blog-takeaways{break-inside:avoid;page-break-inside:avoid;border:1pt solid #000;border-left-width:3pt;background:#fff!important}.blog-takeaways__heading,.blog-takeaways__list li{color:#000!important}.blog-takeaways__list li:before{background:#000!important}}.blog-layout{--blog-content-width:min(100%, 60rem);grid-template-columns:minmax(0,1fr);gap:clamp(1rem,2.2vw,1.5rem)}.blog-copy{width:var(--blog-content-width);justify-self:center}.blog-meta-bar{border-bottom:1px solid var(--rule);margin-bottom:.5rem;padding-bottom:.85rem}.blog-meta-bar dl{flex-wrap:wrap;gap:1.5rem;margin:0;display:flex}.blog-meta-bar dt{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-62);margin-bottom:.18rem;font-size:clamp(.68rem,.82vw,.78rem)}.blog-meta-bar dd{font-size:clamp(.9rem,.9rem + .08vw,.98rem);line-height:1.55}.blog-meta-card{width:var(--blog-content-width);justify-self:center;gap:.85rem;display:grid}.blog-meta-head{justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.blog-meta-head h2{margin-bottom:0}.blog-meta-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.8rem}.blog-meta-grid div,.blog-meta-grid div:last-child{border:1px solid var(--rule);background:#ffffff85;padding:.8rem .9rem .85rem}.blog-meta-grid dd{overflow-wrap:anywhere}.blog-prose>h2{font-family:var(--font-heading);font-weight:var(--heading-weight);font-style:italic;font-size:var(--heading-section-size);line-height:var(--heading-section-line-height);letter-spacing:var(--heading-letter-spacing);border-top:1px solid var(--rule);margin-top:2.5rem;margin-bottom:.75rem;padding-top:1.8rem}.blog-prose>h3{font-family:var(--font-heading);font-weight:var(--heading-weight);letter-spacing:var(--heading-letter-spacing);margin-top:1.8rem;margin-bottom:.75rem;font-size:clamp(1.08rem,1.45vw,1.36rem);line-height:1.1}.blog-prose>p,.blog-prose li{overflow-wrap:break-word;font-size:clamp(.98rem,.94rem + .16vw,1.08rem);line-height:1.72}.blog-prose>p+p{margin-top:1.4em}.blog-prose>ul,.blog-prose>ol{margin:.6rem 0 1rem;padding-left:1.4rem}.blog-prose strong{font-weight:700}.blog-prose code{background:color-mix(in srgb, var(--ink) 7%, transparent);border-radius:3px;padding:.15em .35em;font-family:SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace;font-size:.88em}.color-chip{white-space:nowrap}.color-chip__swatch{border:1px solid var(--ink-18);vertical-align:-.05em;border-radius:2px;width:.8em;height:.8em;margin-right:.4em;display:inline-block}.blog-prose blockquote{border-left:3px solid var(--accent);color:color-mix(in srgb, var(--ink) 82%, transparent);overflow-wrap:break-word;background:#ffffff85;margin:1.4rem 0 1.2rem;padding:.75rem 1rem .75rem 1.1rem}.blog-prose blockquote code{overflow-wrap:break-word;word-break:break-all}.blog-prose blockquote ul{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.blog-prose blockquote li{padding-left:1rem;position:relative}.blog-prose blockquote li:before{content:"";background:var(--accent);width:.4rem;height:.4rem;position:absolute;top:.72em;left:0}.blog-prose a{color:inherit;text-decoration-color:var(--ink-32);text-underline-offset:.16em}.blog-rule{border:0;border-top:1px solid var(--rule);margin:1.6rem 0}.blog-prose table{border-collapse:collapse;width:max-content;max-width:100%;margin:1.5rem 0 1.7rem;font-size:clamp(.9rem,.87rem + .14vw,.98rem);line-height:1.5;display:block;overflow-x:auto}.blog-prose thead th{text-align:left;text-transform:uppercase;letter-spacing:.08em;border-bottom:2px solid var(--ink);padding:0 1.4rem .5rem 0;font-size:.76rem}.blog-prose tbody td{border-bottom:1px solid var(--rule);vertical-align:top;padding:.55rem 1.4rem .55rem 0}.blog-prose thead th:last-child,.blog-prose tbody td:last-child{padding-right:0}.blog-list{gap:.72rem;margin:.9rem 0;list-style:none;display:grid}.blog-list li{padding-left:1rem;position:relative}.blog-list li:before{content:"";background:var(--accent);width:.4rem;height:.4rem;position:absolute;top:.72em;left:0}.blog-figure{border:1px solid var(--rule);border-top:3px solid var(--accent);background:#ffffffd1;margin:1rem 0 1.25rem;padding:.85rem}.blog-figure img{border:1px solid var(--rule);width:100%;height:auto;display:block}.blog-figure figcaption{color:var(--ink-62);margin-top:.55rem;font-size:clamp(.74rem,.88vw,.84rem)}.blog-code-block{-webkit-overflow-scrolling:touch;color:var(--cream);border:1px solid color-mix(in srgb, var(--ink) 20%, transparent);background:#15120e;margin:1rem 0 1.2rem;padding:.95rem 1rem;overflow-x:auto}.blog-code-block--light{background:var(--ink-06);color:var(--ink);border:1px solid var(--rule)}.blog-code-block code{white-space:pre;line-height:1.65;display:block}.blog-code-block::-webkit-scrollbar{height:6px}.blog-code-block::-webkit-scrollbar-track{background:0 0}.blog-code-block::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:3px}.blog-code-block:hover::-webkit-scrollbar-thumb{background:#ffffff59}.blog-code-block--light::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--ink) 10%, transparent)}.blog-code-block--light:hover::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--ink) 25%, transparent)}.blog-code-block{--astro-code-foreground:var(--cream);--astro-code-background:#15120e;--astro-code-token-constant:#d4a5b0;--astro-code-token-string:#a3c493;--astro-code-token-comment:#a09888;--astro-code-token-keyword:#e8a466;--astro-code-token-parameter:#b8a9d4;--astro-code-token-function:#c9b97a;--astro-code-token-string-expression:#a3c493;--astro-code-token-punctuation:#c4b99a;--astro-code-token-link:#a3c493}.blog-code-block--light{--astro-code-foreground:var(--ink);--astro-code-background:var(--ink-06);--astro-code-token-constant:#7a5c28;--astro-code-token-string:#4a7a3a;--astro-code-token-comment:#6b6458;--astro-code-token-keyword:#7a5c28;--astro-code-token-parameter:#5a4a7a;--astro-code-token-function:#6b5c28;--astro-code-token-string-expression:#4a7a3a;--astro-code-token-punctuation:var(--ink);--astro-code-token-link:#4a7a3a}.blog-diagram{border:1px solid var(--rule);background:linear-gradient(180deg, #ffffffd6, #ffffff94), var(--accent-soft);margin:1rem 0 1.2rem;padding:1rem}.blog-diagram--chain{justify-items:center;gap:.5rem;display:grid}.blog-diagram--fanout{justify-items:center;gap:.65rem;display:grid}.blog-diagram-fanout-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem;width:100%;display:grid}.blog-diagram-node{border:1px solid color-mix(in srgb, var(--ink) 16%, transparent);width:min(100%,22rem);box-shadow:4px 4px 0 var(--ink-06);text-align:center;background:#ffffffeb;padding:.7rem .85rem;font-weight:600;line-height:1.35}.blog-diagram-arrow,.blog-diagram-loop{font-family:var(--font-heading);color:var(--ink-62);font-size:1.8rem;line-height:1}.blog-diagram-branch{border-top:2px solid var(--ink-32);border-left:2px solid var(--ink-32);border-right:2px solid var(--ink-32);width:min(100%,18rem);height:1.3rem}.about-label,.connect-label,.stack-label,.impact-label,.now-ribbon-label,.stack-items,.impact-items,.now-ribbon-date,.stack-ribbon,.impact-ribbon,.now-ribbon{transition:opacity var(--motion-fast) var(--ease-linear)}.is-scrolling .social-row,.is-scrolling .social-row:after,.is-scrolling .s-icon,.is-scrolling .s-arrow,.is-scrolling .effort-link,.is-scrolling .p-link{transition:none}.panel:focus-visible{outline-offset:-2px;outline:2px solid #f2dfad}@keyframes panel-pulse{0%,to{filter:none}50%{filter:brightness(1.08)saturate(1.05)}}@keyframes panel-pulse-neutral{0%,to{filter:none}50%{filter:brightness(1.16)}}@keyframes panel-pulse-blue{0%,to{filter:none}50%{filter:brightness(1.22)saturate(1.1)}}.panel--pulsing{animation:panel-pulse var(--pulse-duration) var(--ease-out);will-change:filter}.panel--black.panel--pulsing{animation-name:panel-pulse-neutral}.panel--blue.panel--pulsing{animation-name:panel-pulse-blue}@media (prefers-reduced-motion:reduce){.panel--pulsing{animation:none}}a:focus-visible{outline-offset:2px;outline:2px solid}@media (width<=480px){.project-hero__header{padding:1rem 1rem 1.15rem}.breadcrumbs--inset{padding-left:.5rem}.project-hero h1{padding-left:.5rem;font-size:clamp(1.55rem,8vw,2.4rem)}.deck--inset{padding-left:.5rem}.project-actions{flex-direction:column;padding-left:.5rem}.nav-button{justify-content:center;width:100%}.blog-code-block{padding:.75rem .85rem;font-size:.75rem}}@media (width<=1023px){:root{--line:6px}.mondrian{aspect-ratio:auto;grid-template-columns:var(--line) 1fr var(--line);grid-template-rows:var(--line) auto var(--line) auto var(--line) auto var(--line) auto var(--line);width:100%;max-width:none;min-height:100vh;transition:none}.stage{padding:0}.panel,.block{grid-column:2}.panel--red{grid-row:2}.panel--yellow{grid-row:4}.panel--black{grid-row:6}.panel--blue{grid-row:8}.block,.panel-label{display:none}.panel-content{pointer-events:auto;opacity:1;visibility:visible;transition:none;position:relative}.content-inner{height:auto;min-height:220px;overflow:visible}.about-label,.connect-label,.stack-label,.impact-label,.now-ribbon-label,.writing-list .writing-list__all{letter-spacing:.15em;font-size:clamp(.56rem,.52rem + .2vw,.64rem)}.stack-items,.impact-items,.now-ribbon-date{letter-spacing:.06em;font-size:clamp(.68rem,.64rem + .24vw,.78rem);line-height:1.48}.panel--red .content-inner h1{font-size:clamp(2.4rem,9vw,4rem)}.panel--red .about-label,.panel--red .now-ribbon-label,.panel--red .now-ribbon-date,.panel--red .writing-list .writing-list__all{color:color-mix(in srgb, var(--veil-on-red) 82%, transparent)}.panel--red .now-ribbon{border-top-color:color-mix(in srgb, var(--veil-on-red) 28%, transparent)}.panel--red .writing-list__posts{border-left-color:color-mix(in srgb, var(--veil-on-red) 28%, transparent)}.panel--red .writing-list__all .link-arrow,.panel--red .about-resume-link .link-arrow{color:var(--cream)}.panel--yellow .stack-label,.panel--yellow .stack-items{color:color-mix(in srgb, var(--ink-warm) 72%, transparent)}.panel--yellow .stack-ribbon{border-top-color:color-mix(in srgb, var(--ink-warm) 22%, transparent)}.panel--black .impact-label,.panel--black .impact-items{color:color-mix(in srgb, var(--veil-on-black) 82%, transparent)}.panel--black .impact-ribbon{border-top-color:color-mix(in srgb, var(--veil-on-black) 22%, transparent)}.panel--black .effort-list li{border-left-color:color-mix(in srgb, var(--veil-on-black) 22%, transparent)}.panel--blue .connect-label,.panel--blue .availability-signal{color:color-mix(in srgb, var(--blue-contrast) 82%, transparent)}.panel--blue .availability-signal .p-link{color:var(--blue-contrast)}.panel--blue .social-row{border-color:color-mix(in srgb, var(--blue-contrast) 18%, transparent)}.panel--blue .s-icon,.panel--blue .s-arrow{opacity:.78}.project-detail{box-shadow:8px 8px 0 color-mix(in srgb, var(--ink) 10%, transparent)}.blog-meta-bar dl{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.blog-diagram-fanout-row{grid-template-columns:1fr}.blog-grid{gap:var(--line)}.grid-row--1,.grid-row--2,.grid-row--3,.grid-row--4,.grid-row--overflow-a,.grid-row--overflow-b,.grid-row--rss{grid-template-columns:1fr;min-height:auto}.accent-red,.accent-blue,.accent-lightblue,.accent-yellow,.accent-black,.accent-paper,.accent-white{display:none}.accent-cream{min-height:4rem}.blog-canvas{grid-template-columns:var(--line) 1fr var(--line);grid-template-rows:var(--line) auto  var(--line) auto  var(--line) auto  var(--line) auto  var(--line)}.blog-margin{display:none}.blog-sidebar-meta{background:var(--accent);flex-flow:wrap;grid-area:2/2;justify-content:flex-start;gap:.8rem 1.5rem;min-width:0}.blog-sidebar-meta dl{flex-flow:wrap;gap:.4rem 1.5rem}.blog-sidebar-meta dt{color:color-mix(in srgb, var(--accent-contrast) 62%, transparent)}.blog-sidebar-meta dd{color:var(--accent-contrast)}.blog-canvas-header{grid-area:4/2;min-width:0}.blog-content{grid-area:6/2;min-width:0}.blog-sidebar{display:none}}body.resume-page{--project-bg:var(--stage-bg);background:linear-gradient(135deg, #ffffff6b, #fff0), var(--project-bg,#d8d1c5);--resume-link:var(--blue);min-height:100%}.resume-shell{min-height:100vh;padding:clamp(.9rem, 2.5vw, 1.8rem) var(--page-gutter)}.resume-canvas{grid-template-columns:var(--line) minmax(2.5rem, .4fr)  var(--line) minmax(18rem, 3fr)  var(--line) minmax(10rem, 1.3fr)  var(--line);grid-template-rows:var(--line) auto  var(--line) 1fr  var(--line) auto  var(--line);background:var(--ink);display:grid;overflow:clip}.resume-canvas-margin{grid-column:2}.resume-canvas-margin--header{background:var(--red);grid-row:2}.resume-canvas-margin--body{background:linear-gradient(to bottom, var(--yellow) 0%, var(--yellow) 25%, var(--ink) 25%, var(--ink) calc(25% + var(--line)), var(--paper) calc(25% + var(--line)), var(--paper) 60%, var(--ink) 60%, var(--ink) calc(60% + var(--line)), var(--blue) calc(60% + var(--line)), var(--blue) 100%);grid-row:4}.resume-canvas-margin--footer{background:var(--paper);grid-row:6}.resume-canvas-header{background:var(--paper);flex-direction:column;grid-area:2/4;justify-content:flex-end;min-width:0;padding:clamp(1.15rem,3vw,2.5rem);display:flex}.resume-canvas-header .breadcrumbs{margin-bottom:1.4rem}.resume-canvas-meta{background:var(--accent-gray);flex-direction:column;grid-area:2/6;justify-content:flex-end;min-width:0;padding:clamp(.85rem,2vw,1.5rem);display:flex}.resume-canvas-meta dl{flex-direction:column;gap:.8rem;margin:0;display:flex}.resume-canvas-meta dt{letter-spacing:.16em;text-transform:uppercase;color:color-mix(in srgb, var(--ink) 48%, transparent);margin-bottom:.12rem;font-size:clamp(.58rem,.72vw,.68rem)}.resume-canvas-meta dd{font-family:var(--font-heading);font-size:clamp(.88rem,.92vw,.98rem);font-weight:500;line-height:1.25}.resume-canvas-topics{flex-wrap:wrap;gap:.3rem;display:flex}.resume-canvas-topic{background:color-mix(in srgb, var(--ink) 8%, transparent);font-family:var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-62);border-radius:2px;align-items:center;padding:.18rem .45rem;font-size:.6rem;font-weight:600;display:inline-flex}.resume-canvas-content{background:var(--surface);overflow-wrap:break-word;grid-area:4/4;align-self:stretch;min-width:0;padding:clamp(1.15rem,3vw,2.5rem)}.resume-canvas-sidebar{background:var(--surface);grid-area:4/6;min-width:0}.resume-canvas-sidebar-inner{top:var(--line);padding:clamp(.85rem,2vw,1.5rem);position:sticky}.resume-canvas-section{border-bottom:1px solid var(--rule);margin-bottom:1rem;padding-bottom:1rem}.resume-canvas-section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.resume-canvas-heading{font-family:var(--font-body);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-62);margin-bottom:.55rem;font-size:clamp(.7rem,.9vw,.78rem);font-weight:600}.resume-canvas-toc-list{gap:.35rem;margin:0;padding:0;list-style:none;display:grid}.resume-canvas-toc-list li{border-bottom:1px solid var(--rule);padding:.25em 0;font-size:clamp(.78rem,.86vw,.88rem);line-height:1.35}.resume-canvas-toc-list li:last-child{border-bottom:none}.resume-canvas-toc-list a{color:var(--ink-62);transition:color var(--motion-fast) var(--ease-standard);text-decoration:none}.resume-canvas-toc-list a:hover,.resume-canvas-toc-list a:focus-visible{color:var(--resume-link)}.blog-sidebar-section.blog-sidebar-toc,.resume-canvas-section.resume-canvas-toc{padding-bottom:0}.resume-highlight{border-left:3px solid var(--ink);background:#ffffff85;margin:.7rem 0;padding:.7rem .9rem}.resume-highlight:first-of-type{margin-top:0}.resume-highlight--red{border-left-color:var(--red)}.resume-highlight--yellow{border-left-color:var(--yellow)}.resume-highlight--blue{border-left-color:var(--blue)}.resume-highlight p{font-family:var(--font-heading);margin:0;font-size:clamp(.95rem,1vw,1.08rem);font-style:italic;line-height:1.32}.resume-name{font-family:var(--font-heading);font-weight:var(--heading-weight);font-size:clamp(2.6rem,5vw,4rem);line-height:var(--heading-page-line-height);letter-spacing:var(--heading-letter-spacing)}.resume-title{max-width:46rem;font-family:var(--font-heading);color:color-mix(in srgb, var(--ink) 78%, transparent);margin-top:.5rem;font-size:clamp(1.1rem,1rem + .5vw,1.5rem);font-style:italic;line-height:1.28}.resume-contact{color:color-mix(in srgb, var(--ink) 66%, transparent);flex-wrap:wrap;align-items:baseline;gap:.55rem .5rem;margin-top:.9rem;font-size:clamp(.82rem,.8rem + .12vw,.92rem);line-height:1.55;display:flex}.resume-contact--profiles{margin-top:.7rem}.resume-contact__sep{color:color-mix(in srgb, var(--ink) 30%, transparent);user-select:none}.resume-contact a{color:var(--resume-link);border-bottom:1px solid color-mix(in srgb, var(--resume-link) 35%, transparent);transition:border-color var(--motion-hover) var(--ease-standard);text-decoration:none}.resume-contact a:hover,.resume-contact a:focus-visible{border-bottom-color:var(--resume-link)}.resume-actions{margin-top:1rem}.resume-download{border:1px solid var(--rule);background:var(--paper);color:var(--resume-link);transition:border-color var(--motion-hover) var(--ease-standard), background-color var(--motion-hover) var(--ease-standard);align-items:center;padding:.42rem .85rem;font-size:clamp(.82rem,.8rem + .12vw,.92rem);line-height:1.4;text-decoration:none;display:inline-flex}.resume-download:hover,.resume-download:focus-visible{border-color:var(--resume-link);background:var(--cream)}.contact-icon{vertical-align:-.13em;flex-shrink:0;width:.95em;height:.95em;margin-right:.32em}.resume-section{border-top:1px solid var(--rule);margin-top:2.1rem;padding-top:1.6rem;scroll-margin-top:1rem}.resume-summary{border-top:none;margin-top:0;padding-top:0}.resume-section__title{font-family:var(--font-heading);font-weight:var(--heading-weight);font-style:italic;font-size:var(--heading-section-size);line-height:var(--heading-section-line-height);letter-spacing:var(--heading-letter-spacing);color:var(--ink);margin-bottom:.85rem}.resume-prose p{font-size:clamp(.94rem,.92rem + .12vw,1.02rem);line-height:1.62}.resume-prose p+p{margin-top:.7rem}.resume-prose ul{gap:.45rem;margin:.55rem 0 0;padding:0;list-style:none;display:grid}.resume-prose li{padding-left:1rem;font-size:clamp(.94rem,.92rem + .12vw,1.02rem);line-height:1.55;position:relative}.resume-prose ul li:before{content:"";background:var(--resume-link);width:.36rem;height:.36rem;position:absolute;top:.55em;left:0}.resume-prose strong{font-weight:700}.resume-prose em{font-style:italic}.resume-prose a{color:var(--resume-link);text-underline-offset:.18em;text-decoration:underline 1px;text-decoration-color:color-mix(in srgb, var(--resume-link) 50%, transparent);transition:text-decoration-color var(--motion-hover) var(--ease-standard)}.resume-prose a:hover,.resume-prose a:focus-visible{text-decoration-color:var(--resume-link)}.resume-entry{margin-top:1.5rem}.resume-entry:first-of-type{margin-top:0}.resume-entry__head{align-items:center;gap:.85rem;display:flex}.resume-entry__headings{min-width:0}.resume-entry--logo .resume-prose{margin-top:.55rem}.resume-entry--compact{margin-top:1.05rem}.resume-entry--compact .resume-entry__head{gap:.7rem}.resume-entry--compact .resume-entry__title{font-size:clamp(1rem,.92rem + .34vw,1.18rem)}.resume-entry--compact.resume-entry--logo .resume-prose{margin-top:.35rem}.resume-entry__title{font-family:var(--font-heading);font-size:clamp(1.12rem,1rem + .5vw,1.4rem);font-weight:600;line-height:1.14}.resume-entry__meta{letter-spacing:.01em;color:var(--ink-62);margin-top:.32rem;font-size:clamp(.8rem,.78rem + .1vw,.9rem)}.company-logo{box-sizing:border-box;width:var(--logo-size,72px);height:var(--logo-size,72px);background:var(--paper);border:1px solid var(--rule);padding:calc(var(--logo-size,72px) * .08);border-radius:9px;flex:none;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.company-logo__img{object-fit:contain;width:100%;height:100%;display:block}.company-logo__initials{width:100%;height:100%;color:var(--ink);font-size:calc(var(--logo-size,72px) * .32);letter-spacing:.01em;justify-content:center;align-items:center;font-weight:600}.company-logo__initials:not([hidden]){display:flex}.resume-skills__list{gap:.6rem;display:grid}.resume-skills__row{grid-template-columns:minmax(8.5rem,12rem) 1fr;align-items:baseline;gap:.3rem 1rem;display:grid}.resume-skills__label{letter-spacing:.03em;color:var(--ink);font-size:clamp(.82rem,.8rem + .1vw,.92rem);font-weight:600}.resume-skills__values{color:color-mix(in srgb, var(--ink) 82%, transparent);font-size:clamp(.9rem,.88rem + .12vw,.98rem);line-height:1.5}@media (width<=560px){.resume-skills__row{grid-template-columns:1fr;gap:.1rem}}.resume-projects .resume-entry__title{margin-bottom:.05rem}.resume-projects .resume-entry__title a{color:inherit;border-bottom:1px solid color-mix(in srgb, var(--resume-link) 35%, transparent);transition:color var(--motion-hover) var(--ease-standard), border-color var(--motion-hover) var(--ease-standard);text-decoration:none}.resume-projects .resume-entry__title a:hover,.resume-projects .resume-entry__title a:focus-visible{color:var(--resume-link);border-bottom-color:var(--resume-link)}.resume-entry__tech{letter-spacing:.02em;color:var(--ink-62);margin-top:.25rem;font-size:clamp(.8rem,.78rem + .1vw,.88rem)}.resume-entry__link{margin-top:.3rem;font-size:clamp(.84rem,.82rem + .1vw,.92rem)}.resume-entry__link a{color:var(--resume-link);border-bottom:1px solid color-mix(in srgb, var(--resume-link) 35%, transparent);transition:border-color var(--motion-hover) var(--ease-standard);text-decoration:none}.resume-entry__link a:hover,.resume-entry__link a:focus-visible{border-bottom-color:var(--resume-link)}.resume-entry__link+.resume-prose{margin-top:.5rem}.resume-certs{gap:.7rem;margin:0;padding:0;list-style:none;display:grid}.resume-cert{align-items:center;gap:.85rem;display:flex}.resume-cert__text{flex-direction:column;min-width:0;display:flex}.resume-cert__name{font-family:var(--font-heading);font-size:clamp(.92rem,.9rem + .1vw,1rem);font-weight:600;line-height:1.25}.resume-cert__meta{color:var(--ink-62);font-size:clamp(.8rem,.78rem + .1vw,.88rem)}.resume-projects__lead,.resume-writing__lead{font-size:clamp(.94rem,.92rem + .12vw,1.02rem);line-height:1.55}.resume-projects__lead strong,.resume-writing__lead strong{font-weight:700}.resume-projects__desc,.resume-writing__desc{color:color-mix(in srgb, var(--ink) 82%, transparent);margin-top:.4rem;font-size:clamp(.9rem,.88rem + .12vw,.98rem);line-height:1.55}.resume-projects__desc{margin-bottom:1.5rem}.resume-writing__label{letter-spacing:.08em;text-transform:uppercase;color:color-mix(in srgb, var(--ink) 55%, transparent);margin-top:.7rem;font-size:clamp(.74rem,.9vw,.82rem)}.resume-writing__essays{gap:.4rem;margin:.4rem 0 0;padding:0;list-style:none;display:grid}.resume-writing__essays li{padding-left:1rem;font-size:clamp(.9rem,.88rem + .12vw,.98rem);position:relative}.resume-writing__essays li:before{content:"";background:var(--resume-link);width:.36rem;height:.36rem;position:absolute;top:.55em;left:0}.resume-projects__lead a,.resume-writing__lead a,.resume-writing__essays a{color:var(--resume-link);border-bottom:1px solid color-mix(in srgb, var(--resume-link) 35%, transparent);transition:border-color var(--motion-hover) var(--ease-standard);text-decoration:none}.resume-projects__lead a:hover,.resume-projects__lead a:focus-visible,.resume-writing__lead a:hover,.resume-writing__lead a:focus-visible,.resume-writing__essays a:hover,.resume-writing__essays a:focus-visible{border-bottom-color:var(--resume-link)}.resume-awards__list{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.resume-award{flex-wrap:wrap;align-items:baseline;gap:.4rem .6rem;display:flex}.resume-award__name{font-weight:600}.resume-award__meta{color:var(--ink-62);font-size:clamp(.8rem,.78rem + .1vw,.88rem)}@media (width<=1023px){.resume-canvas{grid-template-columns:var(--line) 1fr var(--line);grid-template-rows:var(--line) auto  var(--line) auto  var(--line) auto  var(--line) auto  var(--line)}.resume-canvas-margin{display:none}.resume-canvas-meta{flex-flow:wrap;grid-area:4/2;justify-content:flex-start;gap:.7rem 1.5rem}.resume-canvas-meta dl{flex-flow:wrap;gap:.5rem 1.5rem}.resume-canvas-header{grid-area:2/2}.resume-canvas-content{grid-area:6/2}.resume-canvas-sidebar{display:none}}@media print{@page{size:letter;margin:.6in}html,body.resume-page{background:#fff!important}.resume-shell{min-height:auto;padding:0}.resume-canvas{width:100%;max-width:8.5in;box-shadow:none;margin:0;display:block;overflow:visible;background:#fff!important}.resume-canvas-margin,.resume-canvas-meta,.resume-canvas-sidebar,.site-footer--resume,.resume-canvas-header .breadcrumbs,.resume-actions,.company-logo{display:none!important}.resume-canvas-header,.resume-canvas-content{grid-area:auto;padding:0;display:block;background:#fff!important}.resume-canvas-header{padding-bottom:.4rem}.resume-page,.resume-canvas,.resume-canvas *{color:#000!important}.resume-prose ul li:before{background:#000!important}.resume-canvas a{text-underline-offset:.14em;text-decoration:underline .5pt;border-bottom:0!important;text-decoration-color:#000!important}.resume-entry,.resume-cert,.resume-skills__row,.resume-prose li{page-break-inside:avoid;break-inside:avoid}.resume-section{break-inside:auto}.resume-canvas a[href^=http]:after{content:" (" attr(href) ")";word-break:break-all;font-size:.85em}.resume-contact a[href^=http]:after,.resume-entry__link a[href^=http]:after,.resume-projects__lead a[href^=http]:after,.resume-writing__lead a[href^=http]:after{content:""}.resume-projects__desc,.resume-writing__desc,.resume-writing__label,.resume-writing__essays{display:none}.resume-projects__lead{margin-bottom:.52rem}.resume-contact{gap:.12rem .4rem;margin-top:.32rem;line-height:1.3}.resume-contact--profiles{margin-top:.1rem}.resume-section{border-top:none;margin-top:.55rem;padding-top:0}.resume-summary{margin-top:.32rem}.resume-section__title{margin-bottom:.28rem}.resume-entry{margin-top:.52rem}.resume-entry__meta{margin-top:.1rem}.resume-entry__head{gap:.5rem}.resume-entry--logo .resume-prose{margin-top:.14rem}.resume-prose p+p{margin-top:.24rem}.resume-prose ul{margin-top:.2rem;display:block}.resume-prose li{margin-top:.14rem;padding-left:.8rem}.resume-prose li:first-child{margin-top:0}.resume-prose ul li:before{top:.5em}.resume-skills__list{gap:.24rem}.resume-skills__row{gap:.12rem .72rem}.resume-certs{display:block}.resume-cert{margin-top:.28rem;display:block}.resume-cert:first-child{margin-top:0}.resume-projects .resume-entry__tech,.resume-entry__link{margin-top:.1rem}.resume-entry__link+.resume-prose{margin-top:.2rem}.resume-name{font-size:18pt;line-height:1}.resume-title{font-size:11.5pt;line-height:1.25}.resume-contact{font-size:9.5pt}.resume-section__title{font-size:14pt}.resume-entry__title{font-size:12pt;line-height:1.15}.resume-entry__meta{font-size:9pt}.resume-prose p,.resume-prose li,.resume-skills__values{font-size:9.5pt;line-height:1.3}.resume-skills__label,.resume-cert__name{font-size:9.5pt}.resume-cert__meta,.resume-entry__tech{font-size:9pt}.resume-projects__lead,.resume-writing__lead,.resume-entry__link,.resume-entry__link a{font-size:9.5pt;line-height:1.35}.resume-section__title{break-after:avoid}.resume-prose p{orphans:3;widows:3}.resume-prose li{orphans:2;widows:2}.resume-experience .resume-entry:first-of-type,.resume-experience .resume-entry:last-of-type{break-inside:auto;page-break-inside:auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:0s!important;animation-duration:0s!important}}
