html[data-style=systems]{--bg:var(--sys-bg);--ink:var(--sys-ink);--muted:var(--sys-muted);--rule:var(--sys-rule);--surface:var(--sys-surface);--radius:var(--sys-radius);--font-serif:var(--sys-font-heading)}html[data-style=systems] body{font-variant-numeric:tabular-nums}html[data-style=systems] :is(h1,h2,h3,h4,h5,h6){font-family:var(--sys-font-heading);font-weight:var(--sys-heading-weight);letter-spacing:var(--sys-heading-spacing);line-height:var(--sys-heading-leading)}html[data-style=systems] :is(.project-meta,.case-facts dt,.recognition-year,.case-next>p,.case-back,.footer-line2){font-family:var(--sys-font-label);font-size:var(--sys-label-size);font-weight:var(--sys-label-weight);text-transform:uppercase;letter-spacing:var(--sys-label-spacing);color:var(--sys-muted)}html[data-style=systems] .section-number{margin-bottom:var(--space-2);font-family:var(--sys-font-label);font-size:var(--sys-label-size);font-weight:var(--sys-number-weight);color:var(--sys-accent);display:block}html[data-style=systems] .masthead{border-bottom:0}html[data-style=systems] :is(.project,.case-section,.case-next,.closing-section){border-top:0;position:relative}html[data-style=systems] :is(.project,.case-section,.case-next,.closing-section):before{content:"";top:0;left:calc(-1 * var(--gutter));right:calc(-1 * var(--gutter));border-top:var(--border-width) solid var(--sys-rule);position:absolute}html[data-style=systems] .case-facts{border:var(--border-width) solid var(--sys-rule);grid-template-columns:repeat(2,minmax(0,1fr));gap:0;padding:0}html[data-style=systems] .case-facts>div{padding:var(--space-4);border-right:var(--border-width) solid var(--sys-rule);border-bottom:var(--border-width) solid var(--sys-rule)}html[data-style=systems] .case-facts>div:nth-child(2n){border-right:0}html[data-style=systems] .case-facts>div:nth-last-child(-n+2){border-bottom:0}html[data-style=systems] img{border-radius:var(--sys-radius)}html[data-style=systems] a{text-underline-offset:var(--link-underline-offset);text-decoration:underline}html[data-style=systems] a:hover{color:var(--sys-accent)}html[data-style=systems] :focus-visible{outline:var(--border-width) solid var(--sys-accent);outline-offset:var(--space-1)}@media (width>=720px){html[data-style=systems] .page{border-inline:var(--border-width) solid var(--sys-rule)}html[data-style=systems] .case-facts{grid-template-columns:repeat(4,minmax(0,1fr))}html[data-style=systems] .case-facts>div{border-bottom:0}html[data-style=systems] .case-facts>div:not(:last-child){border-right:var(--border-width) solid var(--sys-rule)}}html[data-style=systems] .case-section:has(>.section-number){margin-top:var(--space-8)}html:is([data-home=index],[data-home=proof]) .masthead{border-bottom:0}html:is([data-home=index],[data-home=proof]) .project-index{grid-template-columns:auto 1fr;display:grid;position:relative}html:is([data-home=index],[data-home=proof]) .page>.project{display:none}html:is([data-home=index],[data-home=proof]) .index-row{grid-template-columns:subgrid;align-items:center;column-gap:var(--grid-gap);row-gap:var(--space-2);padding-block:var(--space-4);border-top:var(--border-width) solid var(--rule);color:var(--ink);grid-column:1/-1;text-decoration:none;display:grid;position:relative}html:is([data-home=index],[data-home=proof]) .index-row:last-child{border-bottom:var(--border-width) solid var(--rule)}html:is([data-home=index],[data-home=proof]) :is(.index-number,.index-tags,.index-dates){font-size:var(--size-small);color:var(--muted)}html:is([data-home=index],[data-home=proof]) .index-title{font-size:var(--size-project);grid-area:2/1/auto/-1}html:is([data-home=index],[data-home=proof]) .index-dates{text-align:right;font-variant-numeric:tabular-nums;grid-area:1/2}html:is([data-home=index],[data-home=proof]) :is(.index-tags,.index-preview){display:none}html[data-style=systems]:is([data-home=index],[data-home=proof]) .index-number{font-family:var(--sys-font-label);font-weight:var(--sys-number-weight);color:var(--sys-accent)}html[data-style=systems]:is([data-home=index],[data-home=proof]) :is(.index-tags,.index-dates){font-family:var(--sys-font-label);font-size:var(--sys-label-size);font-weight:var(--sys-label-weight);text-transform:uppercase;letter-spacing:var(--sys-label-spacing)}@media (width>=720px){html:is([data-home=index],[data-home=proof]) .project-index{column-gap:var(--grid-gap);grid-template-columns:auto minmax(0,1fr) minmax(0,1fr) auto}html:is([data-home=index],[data-home=proof]) .index-row{min-height:var(--index-row-height);box-sizing:border-box}html:is([data-home=index],[data-home=proof]) :is(.index-title,.index-dates){grid-area:auto}html:is([data-home=index],[data-home=proof]) .index-tags{display:block}html:is([data-home=index],[data-home=proof]) .index-row:is(:hover,:focus-visible){background:var(--surface);z-index:1}html:is([data-home=index],[data-home=proof]) .index-row:is(:hover,:focus-visible) .index-preview{box-sizing:border-box;width:var(--index-preview-width);aspect-ratio:var(--index-preview-ratio);border:var(--border-width) solid var(--rule);background:var(--surface);pointer-events:none;display:block;position:absolute;top:0;right:0}html:is([data-home=index],[data-home=proof]) .index-preview img{object-fit:cover;object-position:top center;width:100%;height:100%}html:is([data-home=index],[data-home=proof]) .index-preview--phone img{object-fit:contain;object-position:center}}html[data-home=proof] .home-page{font-family:var(--font-sans);font-size:var(--pf-body);line-height:var(--pf-body-leading)}html[data-home=proof] .page:not(.case-page){padding-top:var(--proof-header-height);border-inline:0}html[data-home=proof] :is(.proof-header,.proof-visa,.proof-recognition,.proof-credentials,.proof-footer){box-sizing:border-box}html[data-home=proof] .proof-header{height:var(--proof-header-height);background:color-mix(in srgb, var(--bg) var(--proof-header-opacity), transparent);backdrop-filter:blur(var(--proof-header-blur));border-bottom:var(--border-width) solid var(--rule);z-index:2;display:block;position:fixed;inset:0 0 auto}html[data-home=proof] .proof-header-inner{box-sizing:border-box;height:100%;max-width:var(--page-max);padding-inline:var(--gutter);justify-content:space-between;align-items:center;gap:var(--space-4);font-size:var(--pf-meta);margin-inline:auto;display:flex}html[data-home=proof] .proof-identity{font-weight:var(--proof-heading-weight)}html[data-home=proof] :is(.proof-role,.proof-label){font-family:var(--sys-font-label);font-size:var(--pf-label);font-weight:var(--proof-label-weight);letter-spacing:var(--pf-label-spacing);text-transform:uppercase;color:var(--sys-muted)}html[data-home=proof] .proof-header nav{gap:var(--proof-header-link-gap);flex-shrink:0;display:flex}html[data-home=proof] .masthead{column-gap:var(--space-7);row-gap:var(--space-8);padding-top:var(--space-2);padding-bottom:0;display:grid}html[data-home=proof] :is(.masthead h1,.proof-project-card h2,.proof-project-figure,.proof-visa-title,.proof-credential-figure,.practice h2){font-family:var(--proof-font-heading);font-weight:var(--proof-heading-weight);letter-spacing:var(--pf-heading-spacing);line-height:var(--pf-heading-leading)}html[data-home=proof] .masthead h1{font-size:var(--pf-display)}html[data-home=proof] .intro{font-size:var(--pf-lead);max-width:var(--pf-hero-measure)}html[data-home=proof] .proof-availability{margin-top:var(--space-5);font-size:var(--pf-meta);color:var(--sys-muted)}html[data-home=proof] .proof-availability .availability{margin-top:0}html[data-home=proof] .proof-availability .proof-open-to{margin-top:var(--space-2);display:block}html[data-home=proof] :is(.masthead .strip,.project-index,.page>.credentials,.page>.recognition,.page:not(.case-page)>.footer){display:none}html[data-home=proof] .proof-visa{isolation:isolate;justify-content:space-between;gap:var(--space-5);min-width:0;min-height:var(--proof-card-min-height);padding:var(--proof-card-mobile-padding);background:var(--proof-card-bg);color:var(--proof-white);font-size:var(--pf-meta);border-radius:var(--proof-card-radius);border:var(--border-width) solid color-mix(in srgb, var(--proof-white) var(--proof-card-rule-opacity), transparent);flex-direction:column;display:flex;position:relative;overflow:hidden}html[data-home=proof] .proof-visa-texture{opacity:var(--proof-texture-opacity);mix-blend-mode:screen;z-index:-1;background-image:url(/explore/o1-texture.webp);background-position:50%;background-size:cover;position:absolute;inset:0}html[data-home=proof] .proof-visa-head{justify-content:space-between;align-items:flex-start;gap:var(--space-5);padding-bottom:var(--space-4);border-bottom:var(--border-width) solid color-mix(in srgb, var(--proof-white) var(--proof-card-rule-opacity), transparent);display:flex}html[data-home=proof] .proof-visa-eyebrow{color:color-mix(in srgb, var(--proof-white) var(--proof-eyebrow-opacity), transparent)}html[data-home=proof] .proof-visa-corner{font-size:var(--pf-label);align-items:flex-end;gap:var(--space-1);flex-direction:column;flex-shrink:0;display:flex}html[data-home=proof] .proof-visa-title{font-size:var(--pf-figure)}html[data-home=proof] .proof-visa dl{border-top:var(--border-width) solid color-mix(in srgb, var(--proof-white) var(--proof-card-rule-opacity), transparent);padding:0;display:grid}html[data-home=proof] .proof-visa dl>div{justify-content:space-between;align-items:center;gap:var(--space-2);padding-block:var(--space-3);border-bottom:var(--border-width) solid color-mix(in srgb, var(--proof-white) var(--proof-card-rule-opacity), transparent);display:flex}html[data-home=proof] .proof-visa dt{color:color-mix(in srgb, var(--proof-white) var(--proof-field-label-opacity), transparent)}html[data-home=proof] .proof-visa dd{font-family:var(--sys-font-label);font-size:var(--pf-label);align-items:center;gap:var(--space-2);display:flex}html[data-home=proof] .proof-status{width:var(--proof-dot-size);height:var(--proof-dot-size);border-radius:calc(var(--proof-dot-size) / 2);background:var(--proof-dot-colour);box-shadow:0 0 0 var(--proof-dot-ring) color-mix(in srgb, var(--proof-dot-colour) var(--proof-dot-ring-opacity), transparent)}html[data-home=proof] .proof-redacted{width:var(--proof-redacted-width);height:var(--proof-redacted-height);background:color-mix(in srgb, var(--proof-white) var(--proof-redacted-opacity), transparent)}html[data-home=proof] .proof-recognition{gap:var(--pf-recognition-gap);padding-block:var(--space-5);border-block:var(--border-width) solid var(--sys-rule);grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));display:grid}html[data-home=proof] .proof-recognition-cell{min-width:0}html[data-home=proof] .proof-logo{box-sizing:border-box;width:var(--pf-logo-tile-small);height:var(--pf-logo-tile-small);padding:var(--pf-logo-padding);margin-bottom:var(--space-4);background:var(--sys-card);border:var(--border-width) solid var(--sys-rule);border-radius:var(--pf-logo-tile-radius);justify-content:center;align-items:center;display:flex}html[data-home=proof] .proof-logo img{object-fit:contain;object-position:center;width:100%;height:100%}html[data-home=proof] .proof-recognition-name{-webkit-line-clamp:2;font-size:var(--pf-meta);font-weight:var(--proof-heading-weight);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}html[data-home=proof] .proof-recognition-cell .proof-label{margin-top:var(--space-2)}html[data-home=proof] #work{margin-top:var(--pf-work-space);scroll-margin-top:var(--proof-header-height)}html[data-home=proof] .proof-projects{gap:var(--pf-card-gap);grid-template-columns:minmax(0,1fr);display:grid}html[data-home=proof] .proof-project-card{box-sizing:border-box;background:var(--sys-card);min-width:0;color:var(--sys-ink);border:var(--border-width) solid var(--sys-rule);border-radius:var(--pf-card-radius);flex-direction:column;display:flex;overflow:hidden}html[data-home=proof] .proof-project-card:hover{border-color:color-mix(in srgb, var(--sys-ink) var(--proof-work-hover-opacity), transparent)}html[data-home=proof] .proof-project-copy{box-sizing:border-box;min-width:0;padding:var(--pf-card-mobile-padding);flex-direction:column;display:flex}html[data-home=proof] .proof-project-meta{max-height:calc(var(--pf-label) * var(--pf-body-leading));flex-wrap:wrap;flex-shrink:0;display:flex;overflow:hidden}html[data-home=proof] .proof-project-meta span{white-space:nowrap;flex-shrink:0}html[data-home=proof] .proof-project-card h2{margin-top:var(--space-3);font-size:var(--pf-title)}html[data-home=proof] .proof-project-stat{margin-top:var(--space-7)}html[data-home=proof] .proof-project-figure{white-space:nowrap;width:fit-content;font-size:var(--pf-figure);font-variant-numeric:tabular-nums;position:relative}html[data-home=proof] .proof-project-caption{margin-top:var(--space-2);font-size:var(--pf-meta);color:var(--sys-muted)}html[data-home=proof] .proof-project-label{font-weight:var(--proof-heading-weight);color:var(--sys-ink)}html[data-home=proof] .proof-project-paragraph{margin-top:var(--space-6);font-size:var(--pf-body);line-height:var(--pf-body-leading);color:color-mix(in srgb, var(--sys-ink) var(--pf-card-text-opacity), transparent)}html[data-home=proof] .proof-project-image{box-sizing:border-box;width:100%;aspect-ratio:var(--pf-mobile-image-ratio);border-bottom:var(--border-width) solid var(--sys-rule);flex-shrink:0;order:-1;display:block;position:relative;overflow:hidden}html[data-home=proof] .proof-project-image img{object-fit:cover;object-position:top left;width:100%;height:100%;position:absolute;inset:0}html[data-home=proof] .proof-project-image--board img{object-position:top center}html[data-home=proof] .proof-project-image--phones{grid-template-columns:repeat(2, var(--pf-phone-width));justify-content:center;align-items:center;gap:var(--pf-phone-gap);background:var(--sys-surface);grid-template-rows:minmax(0,1fr);display:grid}html[data-home=proof] .proof-project-image--phones img{object-fit:contain;object-position:center;min-width:0;min-height:0;position:static}html[data-home=proof] .proof-project-link{padding-top:var(--space-6);font-size:var(--pf-meta);font-weight:var(--proof-heading-weight);margin-top:auto}html[data-home=proof] .proof-project-link span{display:inline-block}html[data-home=proof] .proof-project-card:hover .proof-project-link span{transform:translate(var(--proof-email-arrow-shift), calc(-1 * var(--proof-email-arrow-shift)))}html[data-home=proof] .practice h2{font-size:var(--pf-title)}html[data-home=proof] .proof-credentials{margin-top:var(--space-8);border-top:var(--border-width) solid var(--sys-rule);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}html[data-home=proof] .proof-credential{padding:var(--space-5)}html[data-home=proof] .proof-credential-figure{font-size:var(--pf-title);font-variant-numeric:tabular-nums;position:relative}html[data-home=proof] .proof-credential-label{font-size:var(--pf-meta);font-weight:var(--proof-heading-weight)}html[data-home=proof] .proof-credential-line{margin-top:var(--space-2);font-size:var(--pf-meta);color:var(--sys-muted)}html[data-home=proof] .proof-footer{margin-top:var(--space-8);display:block}html[data-home=proof] .proof-footer-intro{justify-content:center;gap:var(--space-4);min-height:var(--proof-footer-mobile-min-height);flex-direction:column;display:flex}html[data-home=proof] .proof-email{align-items:baseline;gap:var(--proof-email-arrow-gap);width:fit-content;font-family:var(--proof-font-heading);font-weight:var(--proof-heading-weight);font-size:var(--proof-email-size);line-height:var(--proof-card-leading);letter-spacing:var(--proof-email-tracking);text-decoration:none;display:flex}html[data-home=proof] .proof-email:hover .proof-email-arrow{transform:translate(var(--proof-email-arrow-shift), calc(-1 * var(--proof-email-arrow-shift)))}html[data-home=proof] .proof-email:is(:hover,:focus) .proof-email-address{text-decoration:underline;text-decoration-thickness:var(--proof-email-underline-width);text-underline-offset:var(--proof-email-underline-offset)}html[data-home=proof] .proof-footer-bottom{justify-content:space-between;align-items:center;gap:var(--space-5);padding-block:var(--space-5);border-top:var(--border-width) solid var(--rule);font-size:var(--pf-meta);flex-wrap:wrap;display:flex}html[data-home=proof] .proof-footer-bottom>div{gap:var(--proof-header-link-gap);display:flex}html[data-home=proof] .proof-counting{color:#0000}html[data-home=proof] .proof-count-display{color:var(--ink);position:absolute;inset:0}@media (width>=640px){html[data-home=proof] .proof-visa{padding:var(--proof-card-padding)}html[data-home=proof] .proof-visa dl{grid-template-columns:repeat(2,minmax(0,1fr))}html[data-home=proof] .proof-visa dl>div:nth-child(odd){padding-right:var(--space-4)}html[data-home=proof] .proof-visa dl>div:nth-child(2n){padding-left:var(--space-4);border-left:var(--border-width) solid color-mix(in srgb, var(--proof-white) var(--proof-card-rule-opacity), transparent)}html[data-home=proof] .proof-recognition{grid-template-columns:repeat(3,minmax(0,1fr))}html[data-home=proof] .proof-footer-intro{min-height:var(--proof-footer-min-height)}}@media (width>=720px){html[data-home=proof] .proof-credentials{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width>=900px){html[data-home=proof] .masthead{grid-template-columns:var(--proof-hero-columns)}html[data-home=proof] .proof-project-card{grid-template-columns:var(--proof-work-feature-columns);min-height:var(--pf-card-min-height);display:grid}html[data-home=proof] .proof-project-copy{padding:var(--pf-card-padding);grid-column:1}html[data-home=proof] .proof-project-card .proof-project-image{aspect-ratio:auto;border-bottom:0;border-left:var(--border-width) solid var(--sys-rule);order:0;grid-area:1/2}html[data-home=proof] .proof-project-card--image-left{grid-template-columns:var(--proof-work-reverse-columns)}html[data-home=proof] .proof-project-card--image-left .proof-project-copy{grid-column:2}html[data-home=proof] .proof-project-card--image-left .proof-project-image{border-left:0;border-right:var(--border-width) solid var(--sys-rule);grid-column:1}}@media (width>=1100px){html[data-home=proof] .proof-recognition{grid-template-columns:repeat(6,minmax(0,1fr))}html[data-home=proof] .proof-logo{width:var(--pf-logo-tile);height:var(--pf-logo-tile)}}@media (width<640px){html[data-home=proof] .proof-identity{line-height:var(--leading-tight)}html[data-home=proof] .proof-role{display:block}}@media (width<480px){html[data-home=proof] .proof-role{display:none}}@media (width<360px){html[data-home=proof] .proof-email{font-size:var(--proof-email-smallest)}}html[data-skin=vercel]{color-scheme:light;background:var(--sys-bg)}html[data-skin=vercel] body{-webkit-font-smoothing:antialiased;overflow-x:clip}html[data-skin=vercel] ::selection{background:var(--vc-glow-1);color:var(--vc-white)}html[data-skin=vercel] a:hover{color:var(--sys-ink)}html[data-skin=vercel][data-home=proof] .proof-header{background:color-mix(in srgb, var(--sys-bg) var(--proof-header-opacity), transparent);transition:border-color var(--vc-duration) var(--vc-ease);border-bottom-color:#0000}html[data-skin=vercel][data-home=proof] .proof-header.is-scrolled{border-bottom-color:var(--sys-rule)}html[data-skin=vercel][data-home=proof] .proof-header nav{align-items:center}html[data-skin=vercel][data-home=proof] .proof-header nav a{color:var(--sys-muted);transition:color var(--vc-duration-fast) ease;text-decoration:none}html[data-skin=vercel][data-home=proof] .proof-header nav a:hover{color:var(--sys-ink)}html[data-skin=vercel][data-home=proof] .proof-header nav .proof-header-email{height:var(--vc-button-height-small);padding:var(--vc-button-padding-small);border-radius:var(--vc-button-radius-small);background:var(--vc-button-bg);color:var(--vc-button-fg);font-weight:var(--vc-button-weight);transition:background var(--vc-duration-fast) ease;align-items:center;display:inline-flex}html[data-skin=vercel][data-home=proof] .proof-header nav .proof-header-email:hover{background:var(--vc-button-hover);color:var(--vc-button-fg)}html[data-skin=vercel][data-home=proof] .masthead{isolation:isolate;padding-top:var(--space-8);position:relative}html[data-skin=vercel][data-home=proof] .vc-hero-bg{z-index:-1;top:calc(-1 * var(--proof-header-height));width:100vw;height:calc(100% + var(--proof-header-height));pointer-events:none;display:block;position:absolute;left:50%;overflow:hidden;transform:translate(-50%)}html[data-skin=vercel][data-home=proof] .vc-grid{background-image:linear-gradient(to right, var(--vc-grid-line) var(--border-width), transparent var(--border-width)), linear-gradient(to bottom, var(--vc-grid-line) var(--border-width), transparent var(--border-width));background-size:var(--vc-grid-size) var(--vc-grid-size);background-position:top;position:absolute;inset:0;mask-image:radial-gradient(at 50% 0,#000 0%,#0000 70%)}html[data-skin=vercel][data-home=proof] .vc-glow{top:calc(-.4 * var(--vc-glow-size));width:var(--vc-glow-size);height:var(--vc-glow-size);margin-left:calc(-.5 * var(--vc-glow-size));background:radial-gradient(circle at 30% 40%, var(--vc-glow-1), transparent 60%), radial-gradient(circle at 70% 50%, var(--vc-glow-2), transparent 60%), radial-gradient(circle at 50% 80%, var(--vc-glow-3), transparent 60%);filter:blur(var(--vc-glow-blur));opacity:var(--vc-glow-opacity);position:absolute;left:50%}html[data-skin=vercel][data-home=proof] .masthead h1{letter-spacing:var(--pf-heading-spacing);background:var(--vc-name-gradient);color:#0000;-webkit-background-clip:text;background-clip:text}html[data-skin=vercel][data-home=proof] .intro{color:var(--sys-muted)}@property --vc-angle{syntax:"<angle>";inherits:false;initial-value:0deg}html[data-skin=vercel][data-home=proof] .proof-visa{box-shadow:var(--vc-shadow-card)}html[data-skin=vercel][data-home=proof] .proof-visa:after{content:"";border-radius:inherit;padding:var(--border-width);background:conic-gradient(from var(--vc-angle), transparent 70%, var(--proof-dot-colour) 85%, transparent 100%);pointer-events:none;position:absolute;inset:0;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}html[data-skin=vercel][data-home=proof] .proof-recognition{border-block-color:var(--sys-rule)}html[data-skin=vercel][data-home=proof] .proof-logo{background:var(--sys-card);border-color:var(--sys-rule);transition:background var(--vc-duration) var(--vc-ease), border-color var(--vc-duration) var(--vc-ease), transform var(--vc-duration) var(--vc-ease)}html[data-skin=vercel][data-home=proof] .proof-logo img{filter:var(--vc-logo-tint);opacity:var(--vc-logo-rest-opacity);transition:filter var(--vc-duration) var(--vc-ease), opacity var(--vc-duration) var(--vc-ease)}html[data-skin=vercel][data-home=proof] .proof-recognition-cell:hover .proof-logo{border-color:var(--sys-ink);box-shadow:var(--vc-shadow-hover);transform:translateY(var(--vc-lift))}html[data-skin=vercel][data-home=proof] .proof-recognition-cell:hover .proof-logo img{filter:none;opacity:1}html[data-skin=vercel][data-home=proof] .proof-project-card{isolation:isolate;box-shadow:var(--vc-shadow-card);transition:box-shadow var(--vc-duration) var(--vc-ease), transform var(--vc-duration) var(--vc-ease);border:0;position:relative}html[data-skin=vercel][data-home=proof] .proof-project-card:hover{box-shadow:var(--vc-shadow-hover)}html[data-skin=vercel][data-home=proof] :is(.proof-project-card,.proof-visa):before{content:"";z-index:1;border-radius:inherit;background:radial-gradient(var(--vc-spotlight-size) circle at var(--vc-x,50%) var(--vc-y,50%), var(--vc-spotlight-colour), transparent 60%);opacity:0;transition:opacity var(--vc-duration) var(--vc-ease);pointer-events:none;position:absolute;inset:0}html[data-skin=vercel][data-home=proof] :is(.proof-project-card,.proof-visa):hover:before{opacity:1}html[data-skin=vercel][data-home=proof] .proof-project-image{border-color:var(--sys-rule)}html[data-skin=vercel][data-home=proof] .proof-project-image img{transition:transform var(--vc-duration-reveal) var(--vc-ease)}html[data-skin=vercel][data-home=proof] .proof-project-card:hover .proof-project-image img{transform:scale(var(--vc-image-zoom))}html[data-skin=vercel][data-home=proof] .proof-project-figure{background:var(--vc-name-gradient);color:#0000;-webkit-background-clip:text;background-clip:text}html[data-skin=vercel][data-home=proof] .proof-project-figure.proof-counting{background:0 0}html[data-skin=vercel][data-home=proof] .proof-count-display{color:var(--sys-ink)}html[data-skin=vercel][data-home=proof] .proof-project-link{z-index:2;align-items:center;gap:var(--space-2);box-sizing:border-box;height:var(--vc-button-height);padding:var(--vc-button-padding);border-radius:var(--vc-button-radius);background:var(--vc-button-bg);color:var(--vc-button-fg);font-size:var(--vc-button-size);font-weight:var(--vc-button-weight);white-space:nowrap;transition:background var(--vc-duration-fast) ease, transform var(--vc-duration-fast) ease, box-shadow var(--vc-duration) var(--vc-ease);align-self:flex-start;margin-top:auto;text-decoration:none;display:inline-flex;position:relative}html[data-skin=vercel][data-home=proof] .proof-project-paragraph{margin-bottom:var(--space-6)}html[data-skin=vercel][data-home=proof] .proof-project-link:hover{background:var(--vc-button-hover);color:var(--vc-button-fg);box-shadow:0 0 0 var(--vc-hover-ring) var(--sys-rule)}html[data-skin=vercel][data-home=proof] .proof-project-link:active{transform:scale(var(--vc-press-scale))}html[data-skin=vercel][data-home=proof] .proof-project-link:focus-visible{outline:var(--vc-focus-ring) solid var(--sys-accent);outline-offset:var(--vc-focus-ring)}html[data-skin=vercel][data-home=proof] .proof-project-link-arrow{transition:transform var(--vc-duration) var(--vc-ease);display:inline-block}html[data-skin=vercel][data-home=proof] .proof-project-card:hover .proof-project-link-arrow{transform:translate(var(--proof-email-arrow-shift), calc(-1 * var(--proof-email-arrow-shift)))}html[data-skin=vercel][data-home=proof] .proof-credentials{border:var(--border-width) solid var(--sys-rule);position:relative}html[data-skin=vercel][data-home=proof] .proof-credential+.proof-credential{border-left:var(--border-width) solid var(--sys-rule)}html[data-skin=vercel][data-home=proof] .proof-credentials:before,html[data-skin=vercel][data-home=proof] .proof-credentials:after{content:"";width:var(--vc-cross-size);height:var(--vc-cross-size);background:linear-gradient(var(--sys-ink), var(--sys-ink)) center / var(--border-width) 100% no-repeat, linear-gradient(var(--sys-ink), var(--sys-ink)) center / 100% var(--border-width) no-repeat;position:absolute}html[data-skin=vercel][data-home=proof] .proof-credentials:before{top:calc(-.5 * var(--vc-cross-size));left:calc(-.5 * var(--vc-cross-size))}html[data-skin=vercel][data-home=proof] .proof-credentials:after{bottom:calc(-.5 * var(--vc-cross-size));right:calc(-.5 * var(--vc-cross-size))}html[data-skin=vercel][data-home=proof] .proof-email{color:var(--sys-ink)}html[data-skin=vercel][data-home=proof] .proof-email-address{background:var(--vc-name-gradient);color:#0000;-webkit-background-clip:text;background-clip:text}html[data-skin=vercel][data-home=proof] .proof-email-arrow{transition:transform var(--vc-duration) var(--vc-ease);display:inline-block}html[data-skin=vercel][data-home=proof] .proof-footer-bottom a{color:var(--sys-muted);text-decoration:none}html[data-skin=vercel][data-home=proof] .proof-footer-bottom a:hover{color:var(--sys-ink)}html[data-skin=vercel][data-home=proof] .variant-switcher{background:var(--sys-card)}@media (width<720px){html[data-skin=vercel][data-home=proof] .proof-credential:nth-child(odd){border-left:0}html[data-skin=vercel][data-home=proof] .proof-credential:nth-child(n+3){border-top:var(--border-width) solid var(--sys-rule)}}@media (prefers-reduced-motion:no-preference){html[data-skin=vercel][data-home=proof] .vc-glow{animation:vc-drift var(--vc-duration-glow) ease-in-out infinite alternate}html[data-skin=vercel][data-home=proof] .proof-visa:after{animation:vc-spin var(--vc-duration-shine) linear infinite}html[data-skin=vercel][data-home=proof] .proof-status{animation:vc-pulse var(--vc-duration-pulse) ease-in-out infinite}html[data-skin=vercel][data-home=proof] .proof-project-card:hover{transform:translateY(var(--vc-lift))}html[data-skin=vercel][data-home=proof] .proof-email:hover .proof-email-arrow{transform:translate(calc(3 * var(--proof-email-arrow-shift)), calc(-3 * var(--proof-email-arrow-shift)))}html.vc-motion[data-skin=vercel] .vc-reveal{opacity:0;transform:translateY(var(--vc-reveal-distance));filter:blur(var(--vc-reveal-blur));transition:opacity var(--vc-duration-reveal) var(--vc-ease), transform var(--vc-duration-reveal) var(--vc-ease), filter var(--vc-duration-reveal) var(--vc-ease), box-shadow var(--vc-duration) var(--vc-ease);transition-delay:calc(var(--vc-i,0) * var(--vc-reveal-stagger))}html.vc-motion[data-skin=vercel] .vc-reveal.is-in{opacity:1;filter:none;transform:none}html.vc-motion[data-skin=vercel] .proof-project-card.vc-reveal.is-in:hover{transform:translateY(var(--vc-lift));transition-delay:0s}}@keyframes vc-drift{0%{transform:translate(-12%)rotate(0)scale(1)}to{transform:translate(12%,8%)rotate(40deg)scale(1.15)}}@keyframes vc-spin{to{--vc-angle:360deg}}@keyframes vc-pulse{50%{box-shadow:0 0 0 calc(2 * var(--proof-dot-ring)) color-mix(in srgb, var(--proof-dot-colour) var(--proof-dot-ring-opacity), transparent)}}html[data-skin=vercel][data-home=proof] .proof-identity{color:inherit;text-decoration:none}.variant-switcher[data-astro-cid-mjaf27fd]{right:var(--space-4);bottom:var(--space-4);gap:var(--space-4);padding:var(--space-3);background:var(--bg);color:var(--ink);border:var(--border-width) solid var(--rule);font-family:var(--sys-font-label);font-size:var(--size-small);z-index:1;display:flex;position:fixed}.variant-switcher[data-astro-cid-mjaf27fd] select[data-astro-cid-mjaf27fd]{font:inherit;color:inherit;background:var(--bg);border:var(--border-width) solid var(--rule)}@font-face{font-family:Instrument Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-ext-400-normal.C2je3j2s.woff2)format("woff2"),url(/_astro/instrument-serif-latin-ext-400-normal.CFCUzsTy.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-400-normal.DnYpCC2O.woff2)format("woff2"),url(/_astro/instrument-serif-latin-400-normal.BVbkICAY.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-ext-400-italic.C9HzH3YL.woff2)format("woff2"),url(/_astro/instrument-serif-latin-ext-400-italic.D7-lnxEk.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/instrument-serif-latin-400-italic.DKMiL14s.woff2)format("woff2"),url(/_astro/instrument-serif-latin-400-italic.u__WvvIK.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-cyrillic-ext-400-normal.BQZuk6qB.woff2)format("woff2"),url(/_astro/inter-cyrillic-ext-400-normal.DQukG94-.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-cyrillic-400-normal.obahsSVq.woff2)format("woff2"),url(/_astro/inter-cyrillic-400-normal.HOLc17fK.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-greek-ext-400-normal.DGGRlc-M.woff2)format("woff2"),url(/_astro/inter-greek-ext-400-normal.KugGGMne.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-greek-400-normal.B4URO6DV.woff2)format("woff2"),url(/_astro/inter-greek-400-normal.q2sYcFCs.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-vietnamese-400-normal.DMkecbls.woff2)format("woff2"),url(/_astro/inter-vietnamese-400-normal.Bbgyi5SW.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-latin-ext-400-normal.C1nco2VV.woff2)format("woff2"),url(/_astro/inter-latin-ext-400-normal.77YHD8bZ.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-latin-400-normal.C38fXH4l.woff2)format("woff2"),url(/_astro/inter-latin-400-normal.CyCys3Eg.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-cyrillic-ext-500-normal.B0yAr1jD.woff2)format("woff2"),url(/_astro/inter-cyrillic-ext-500-normal.BmqWE9Dz.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-cyrillic-500-normal.BasfLYem.woff2)format("woff2"),url(/_astro/inter-cyrillic-500-normal.CxZf_p3X.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-greek-ext-500-normal.C4iEst2y.woff2)format("woff2"),url(/_astro/inter-greek-ext-500-normal.2j5mBUwD.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-greek-500-normal.BIZE56-Y.woff2)format("woff2"),url(/_astro/inter-greek-500-normal.Xzm54t5V.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-vietnamese-500-normal.DOriooB6.woff2)format("woff2"),url(/_astro/inter-vietnamese-500-normal.mJboJaSs.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-latin-ext-500-normal.CV4jyFjo.woff2)format("woff2"),url(/_astro/inter-latin-ext-500-normal.BxGbmqWO.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-latin-500-normal.Cerq10X2.woff2)format("woff2"),url(/_astro/inter-latin-500-normal.BL9OpVg8.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/instrument-sans-latin-ext-500-normal.CTEe1bJa.woff2)format("woff2"),url(/_astro/instrument-sans-latin-ext-500-normal.CAxz3nsc.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/instrument-sans-latin-500-normal.Dk9ku72i.woff2)format("woff2"),url(/_astro/instrument-sans-latin-500-normal.Z6ESRlEs.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/instrument-sans-latin-ext-600-normal.BsaQcF38.woff2)format("woff2"),url(/_astro/instrument-sans-latin-ext-600-normal.DMks36a2.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/instrument-sans-latin-600-normal.B7fBEWYG.woff2)format("woff2"),url(/_astro/instrument-sans-latin-600-normal.B9e8oLYv.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-serif:"Instrument Serif", Georgia, serif;--font-sans:"Inter", system-ui, sans-serif;--bg:#fafaf8;--ink:#141414;--muted:#6b6b66;--rule:#e4e3de;--surface:#f1f0ec;--size-name:clamp(2.75rem, 1.6rem + 4vw, 4.5rem);--size-project:clamp(1.75rem, 1.3rem + 1.6vw, 2.5rem);--size-body:1.0625rem;--size-small:.875rem;--leading-tight:1.05;--leading-body:1.55;--measure:62ch;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4rem;--space-9:6rem;--space-10:8rem;--page-max:1200px;--gutter:clamp(1rem, .5rem + 2vw, 2.5rem);--grid-gap:var(--space-4);--radius:4px;--breakpoint-grid:720px;--border-width:1px;--tile-ratio:3 / 2;--ledger-year-width:5ch;--link-underline-offset:.2em;--case-board-max-width:800px;--sys-font-label:"IBM Plex Mono", ui-monospace, monospace}html[data-style=systems]{--sys-bg:#fbfbfa;--sys-ink:#0b0b0b;--sys-muted:#6e6e6a;--sys-rule:#e2e2df;--sys-surface:#f3f3f1;--sys-card:#fff;--sys-accent:#2e4bff;--sys-font-heading:"Instrument Sans", system-ui, sans-serif;--sys-heading-weight:500;--sys-heading-spacing:-.02em;--sys-heading-leading:1.05;--sys-label-size:.75rem;--sys-label-weight:400;--sys-label-spacing:.04em;--sys-number-weight:500;--sys-radius:0}html[data-home=index]{--index-row-height:72px;--index-preview-width:440px;--index-preview-ratio:3 / 2}html[data-home=proof]{--index-row-height:72px;--index-preview-width:440px;--index-preview-ratio:3 / 2;--proof-header-height:56px;--proof-header-opacity:92%;--proof-header-blur:8px;--proof-header-link-gap:24px;--proof-breakpoint-hero:900px;--proof-breakpoint-card:640px;--proof-breakpoint-recognition:1100px;--proof-breakpoint-email:360px;--proof-hero-columns:7fr 5fr;--proof-card-bg:#03431a;--proof-white:#fff;--proof-card-radius:12px;--proof-card-padding:40px;--proof-card-mobile-padding:28px 20px;--proof-card-min-height:360px;--proof-texture-opacity:.38;--proof-eyebrow-opacity:70%;--proof-card-rule-opacity:25%;--proof-field-label-opacity:58%;--proof-redacted-opacity:85%;--proof-card-small:12px;--proof-card-title:clamp(40px, 4vw, 56px);--proof-card-leading:1;--proof-card-tracking:-.04em;--proof-dot-size:6px;--proof-dot-colour:#77db85;--proof-dot-ring:4px;--proof-dot-ring-opacity:12%;--proof-redacted-width:5.5rem;--proof-redacted-height:.9rem;--proof-credential-size:2rem;--proof-email-size:clamp(40px, 6.5vw, 88px);--proof-email-tracking:-.05em;--proof-email-smallest:34px;--proof-email-arrow-gap:20px;--proof-email-arrow-shift:3px;--proof-footer-min-height:220px;--proof-footer-mobile-min-height:160px;--proof-count-duration:1.2s;--proof-font-heading:"Instrument Sans", system-ui, sans-serif;--proof-heading-weight:500;--proof-label-weight:400;--proof-label-size:.75rem;--proof-label-spacing:.04em;--proof-work-gap:24px;--proof-work-radius:12px;--proof-work-padding:56px;--proof-work-mobile-padding:28px 20px;--proof-work-figure-size:clamp(72px, 7vw, 120px);--proof-work-figure-leading:.9;--proof-work-tracking:-.05em;--proof-work-text-opacity:80%;--proof-work-measure:52ch;--proof-work-image-ratio:3 / 2;--proof-work-image-radius:8px;--proof-work-hover-opacity:20%;--proof-work-feature-columns:5fr 7fr;--proof-work-reverse-columns:7fr 5fr;--proof-email-underline-width:2px;--proof-email-underline-offset:.12em;--proof-breakpoint-header-role:480px;--pf-display:clamp(56px, 6.4vw, 96px);--pf-figure:clamp(48px, 5vw, 80px);--pf-title:clamp(24px, 2.2vw, 32px);--pf-lead:18px;--pf-body:15px;--pf-body-leading:1.55;--pf-meta:14px;--pf-label:11px;--pf-label-spacing:.06em;--pf-heading-spacing:-.03em;--pf-heading-leading:1;--pf-card-radius:16px;--pf-card-min-height:520px;--pf-card-padding:48px;--pf-card-mobile-padding:24px;--pf-card-gap:32px;--pf-work-space:96px;--pf-card-text-opacity:75%;--pf-phone-width:44%;--pf-phone-gap:24px;--pf-mobile-image-ratio:4 / 3;--pf-logo-tile:120px;--pf-logo-tile-small:100px;--pf-logo-tile-radius:12px;--pf-logo-padding:14px;--pf-recognition-gap:24px;--pf-hero-measure:46ch}:root{--geist-font-sans:"Geist Variable", system-ui, sans-serif;--geist-font-mono:"Geist Mono Variable", ui-monospace, monospace;--ds-background-100:#fff;--ds-background-200:#fafafa;--ds-gray-100:#f2f2f2;--ds-gray-200:#ebebeb;--ds-gray-300:#e6e6e6;--ds-gray-500:#c9c9c9;--ds-gray-600:#a8a8a8;--ds-gray-700:#8f8f8f;--ds-gray-800:#7d7d7d;--ds-gray-900:#4d4d4d;--ds-gray-1000:#171717;--ds-gray-alpha-100:#0000000d;--ds-gray-alpha-200:#00000014;--ds-blue-100:oklch(97.32% .0141 251.56);--ds-blue-700:oklch(57.61% .2508 258.23);--ds-blue-900:oklch(53.18% .2399 256.99);--ds-green-700:oklch(64.58% .1746 147.27);--ds-green-900:oklch(51.75% .1453 147.65);--ds-amber-700:oklch(81.87% .1969 76.46);--ds-shadow-border:0 0 0 1px #00000014;--ds-shadow-small:0 2px 2px #0000000a;--ds-shadow-border-small:0 0 0 1px #00000014, 0 2px 2px #0000000a;--ds-shadow-border-medium:0 0 0 1px #00000014, 0 2px 2px #0000000a, 0 8px 8px -8px #0000000a;--ds-shadow-border-large:0 0 0 1px #00000014, 0 2px 2px #0000000a, 0 8px 16px -4px #0000000a;--ds-shadow-menu:0 0 0 1px #00000014, 0 1px 1px #00000005, 0 4px 8px -4px #0000000a, 0 16px 24px -8px #0000000f;--geist-radius:6px;--geist-radius-card:12px;--geist-space:4px;--geist-space-2x:8px;--geist-space-3x:12px;--geist-space-4x:16px;--geist-space-6x:24px;--geist-space-8x:32px;--geist-space-10x:40px;--geist-space-12x:48px;--geist-space-16x:64px;--geist-space-24x:96px;--geist-space-32x:128px;--geist-space-40x:160px;--geist-page-width:1200px;--geist-page-margin:24px;--geist-form-height:36px;--geist-form-large-height:40px;--geist-heading-72:72px;--geist-heading-72-leading:72px;--geist-heading-72-tracking:-4.32px;--geist-heading-48:48px;--geist-heading-48-leading:56px;--geist-heading-48-tracking:-2.88px;--geist-heading-32:32px;--geist-heading-32-leading:40px;--geist-heading-32-tracking:-1.28px;--geist-heading-24:24px;--geist-heading-24-leading:32px;--geist-heading-24-tracking:-.96px;--geist-heading-20:20px;--geist-heading-20-leading:26px;--geist-heading-20-tracking:-.4px;--geist-heading-16:16px;--geist-heading-16-leading:24px;--geist-heading-16-tracking:-.32px;--geist-copy-20:20px;--geist-copy-20-leading:36px;--geist-copy-18:18px;--geist-copy-18-leading:28px;--geist-copy-16:16px;--geist-copy-16-leading:24px;--geist-copy-14:14px;--geist-copy-14-leading:20px;--geist-label-13:13px;--geist-label-12:12px;--geist-label-leading:20px;--geist-weight-regular:400;--geist-weight-title:450;--geist-weight-medium:500;--geist-weight-semibold:600;--blog-title-weight:450;--blog-h2-size:32px;--blog-h2-leading:35.2px;--blog-h2-gap:48px;--blog-h3-gap:40px;--blog-paragraph-gap:24px;--blog-text-width:677px;--blog-wide-width:1200px;--blog-wide-padding:56px;--blog-reader-height:44px;--blog-reader-list-height:60vh;--blog-figure-padding:32px;--blog-hr-gap:160px;--blog-breakpoint:880px;--blog-progress-height:2px;--blog-stat-size:clamp(56px, 7vw, 96px);--blog-number-highlight:#0070f31a;--blog-button-radius:9999px;--blog-title-measure:18ch;--blog-lede-measure:40em;--blog-award-min:220px;--blog-stat-leading:1;--blog-dot-ring-opacity:18%;--blog-duration-fast:.16s;--blog-press-scale:.97;--blog-arrow-shift:3px;--blog-image-lift:-2px;--blog-figure-image-radius:8px;--blog-stat-tracking:-.06em;--blog-reveal-distance:16px;--blog-reveal-duration:.7s;--blog-reveal-stagger:70ms;--blog-ease:cubic-bezier(.22, 1, .36, 1);--blog-cross-size:21px;--blog-dot-size:8px;--dg-padding:72px 48px;--dg-mobile-padding:24px 16px;--dg-canvas-radius:12px;--dg-dot:#0000001f;--dg-dot-gap:16px;--dg-bar-height:44px;--dg-node-min:168px;--dg-node-max:248px;--dg-node-padding:14px 16px;--dg-node-radius:8px;--dg-node-gap:12px;--dg-index-size:22px;--dg-index-radius:6px;--dg-edge-min:56px;--dg-edge-pad:18px;--dg-wire:#d4d4d4;--dg-wire-width:1.5px;--dg-wire-active:#171717;--dg-wire-dash:4px;--dg-port:3px;--dg-link-height:20px;--dg-group-padding:16px;--dg-group-dash:#c9c9c9;--dg-group-bg:#ffffff80;--dg-legend-offset:12px;--dg-pill-padding:2px 10px;--dg-pill-size:13px;--dg-badge-padding:2px 8px 2px 6px;--dg-funnel-step:8%;--dg-flow-length:14;--dg-flow-duration:2.8s;--dg-draw-duration:1.1s;--dg-stagger:80ms;--dg-rise:8px;--dg-small-leading:1.4;--dg-hover-lift:-2px}html[data-style][data-skin=vercel]{--sys-bg:#fff;--sys-ink:var(--ds-gray-1000);--sys-muted:var(--ds-gray-900);--sys-rule:var(--ds-gray-200);--sys-surface:var(--ds-background-200);--sys-card:#fff;--sys-accent:var(--ds-blue-700);--sys-font-heading:"Geist Variable", system-ui, sans-serif;--sys-font-label:"Geist Mono Variable", ui-monospace, monospace;--sys-heading-weight:600;--font-sans:"Geist Variable", system-ui, sans-serif;--proof-font-heading:"Geist Variable", system-ui, sans-serif;--proof-heading-weight:600;--pf-heading-spacing:-.045em;--vc-white:#fff;--vc-button-bg:var(--ds-gray-1000);--vc-button-fg:#fff;--vc-button-hover:#383838;--vc-glow-1:#0a72ef;--vc-glow-2:#de1d8d;--vc-glow-3:#ff7432;--vc-glow-opacity:.16;--vc-glow-blur:120px;--vc-glow-size:640px;--vc-grid-size:64px;--vc-grid-line:#0000000d;--vc-cross-size:21px;--vc-name-gradient:linear-gradient(180deg, #171717 35%, #171717a6 100%);--vc-button-height:40px;--vc-button-height-small:32px;--vc-button-padding:0 16px 0 18px;--vc-button-padding-small:0 12px;--vc-button-radius:9999px;--vc-button-radius-small:6px;--vc-button-size:14px;--vc-button-weight:500;--vc-shadow-border:var(--ds-shadow-border);--vc-shadow-card:var(--ds-shadow-border-medium);--vc-shadow-hover:0 0 0 1px #00000021, 0 24px 48px -16px #0070f333;--vc-spotlight-size:480px;--vc-spotlight-colour:#0070f30d;--vc-ease:cubic-bezier(.22, 1, .36, 1);--vc-duration-fast:.16s;--vc-duration:.4s;--vc-duration-reveal:.9s;--vc-duration-glow:18s;--vc-duration-shine:6s;--vc-reveal-distance:24px;--vc-reveal-stagger:80ms;--vc-lift:-4px;--vc-image-zoom:1.03;--vc-hover-ring:4px;--vc-press-scale:.97;--vc-focus-ring:2px;--vc-reveal-blur:4px;--vc-duration-pulse:2s;--vc-logo-tint:grayscale(1) contrast(1.1);--vc-logo-rest-opacity:.7}*{margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:var(--size-body);line-height:var(--leading-body)}h1,h2,h3,h4,h5,h6{font-family:var(--font-serif);font-weight:400;line-height:var(--leading-tight)}img{max-width:100%;display:block}.page{box-sizing:border-box;max-width:var(--page-max);padding-inline:var(--gutter);margin-inline:auto}.masthead{padding-block:var(--space-9);border-bottom:var(--border-width) solid var(--rule)}.masthead h1{font-size:var(--size-name)}.intro{margin-top:var(--space-6);max-width:var(--measure)}.availability{margin-top:var(--space-4)}.strip{margin-top:var(--space-6);font-size:var(--size-small);color:var(--muted)}.project{padding-top:var(--space-8)}.project+.project{margin-top:var(--space-8);border-top:var(--border-width) solid var(--rule)}.project h2{font-size:var(--size-project)}.project-meta{margin-top:var(--space-2);font-size:var(--size-small);color:var(--muted)}.project-paragraph{margin-top:var(--space-4);max-width:var(--measure)}.project-link{margin-top:var(--space-3);color:var(--muted)}.project-grid{gap:var(--grid-gap);margin-top:var(--space-6);grid-template-columns:1fr;display:grid}.project-tile{box-sizing:border-box;aspect-ratio:var(--tile-ratio);border-radius:var(--radius);border:var(--border-width) solid var(--rule);overflow:hidden}.project-tile img{object-fit:cover;object-position:top center;width:100%;height:100%}.project-tile--contain{padding:var(--space-4);background:var(--surface)}.project-tile--contain img{object-fit:contain;object-position:center}.project-tile--center img{object-position:center}.project-grid--phones{grid-template-columns:repeat(2,1fr)}.project-grid--phones .project-tile{aspect-ratio:auto;align-self:start}.project-grid--phones img{height:auto}.closing-section{margin-top:var(--space-8);padding-top:var(--space-8);border-top:var(--border-width) solid var(--rule)}.closing-section h2{font-size:var(--size-project)}.practice-paragraph{margin-top:var(--space-4);max-width:var(--measure)}.recognition-support{margin-top:var(--space-2);font-size:var(--size-small);color:var(--muted)}.recognition-ledger{margin-top:var(--space-6);max-width:var(--measure);padding:0;list-style:none}.recognition-row{padding-block:var(--space-3);border-top:var(--border-width) solid var(--rule)}.recognition-row:last-child{border-bottom:var(--border-width) solid var(--rule)}.recognition-year{color:var(--muted);display:block}.recognition-project{color:var(--muted)}.credentials{font-size:var(--size-small);color:var(--muted);margin-top:var(--space-8);max-width:var(--measure)}.footer{border-top:var(--border-width) solid var(--rule);margin-top:var(--space-8);padding-block:var(--space-7)}.footer-line1{font-size:var(--size-body)}.footer-line2{font-size:var(--size-small);color:var(--muted);margin-top:var(--space-2)}a{color:var(--ink);text-decoration:underline}.footer-line1 a{color:var(--muted);text-decoration:none}@media (width>=720px){.project-grid{grid-template-columns:repeat(2,1fr)}.project-grid--phones{grid-template-columns:repeat(4,1fr)}.recognition-row{grid-template-columns:var(--ledger-year-width) 1fr auto;display:grid}.recognition-project{text-align:right}.recognition-separator{display:none}}.project-link a,.case-back a{color:var(--muted);text-underline-offset:var(--link-underline-offset);text-decoration:underline}.case-back{padding-top:var(--space-7);font-size:var(--size-small)}.case-title{font-size:var(--size-name);margin-top:var(--space-6)}.case-lede{max-width:var(--measure);margin-top:var(--space-6)}.case-facts{column-gap:var(--grid-gap);row-gap:var(--space-4);margin-top:var(--space-7);padding-block:var(--space-5);border-block:var(--border-width) solid var(--rule);grid-template-columns:1fr;display:grid}.case-facts dt{font-size:var(--size-small);color:var(--muted)}.case-facts dd{font-size:var(--size-body);margin:0}.case-context{margin-top:var(--space-8);max-width:var(--measure)}.case-context p+p{margin-top:var(--space-4)}.case-section,.case-next{margin-top:var(--space-8);padding-top:var(--space-8);border-top:var(--border-width) solid var(--rule)}.case-section--first{border-top:0;margin-top:0}.case-section h2,.case-next h2{font-size:var(--size-project)}.case-section>p{margin-top:var(--space-4);max-width:var(--measure)}.case-section figure{margin:0;margin-top:var(--space-6)}.case-section figure img{box-sizing:border-box;border:var(--border-width) solid var(--rule);border-radius:var(--radius);width:100%;height:auto}.case-image--constrained{max-width:var(--case-image-max-width);display:block}.case-section figcaption{margin-top:var(--space-3);font-size:var(--size-small);color:var(--muted);max-width:var(--measure)}.case-next{padding-block:var(--space-8)}.case-next>p{font-size:var(--size-small);color:var(--muted)}.case-next a{text-decoration:none}.case-next a:hover{text-decoration:underline}@media (width>=720px){.case-facts{grid-template-columns:repeat(4,1fr)}}.case-phone-pair{gap:var(--grid-gap);max-width:var(--measure);grid-template-columns:repeat(2,1fr);display:grid}
