@font-face{font-family:Neue Montreal;font-style:normal;font-weight:300;font-display:swap;src:url(/fonts/neue-montreal-300.woff2)format("woff2")}@font-face{font-family:Neue Montreal;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/neue-montreal-400.woff2)format("woff2")}@font-face{font-family:Neue Montreal;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/neue-montreal-500.woff2)format("woff2")}@font-face{font-family:Gloock;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/gloock-latin.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-latin.woff2)format("woff2")}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:96px}body{background:#101010;min-width:320px;margin:0;overflow-x:clip}::selection{color:#101010;background:#f2f2f2}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.hw{--hw-page:#101010;--hw-ink:#f2f2f2;--hw-line:#3d3d3d;--hw-ink-rgb:242 242 242;--hw-page-rgb:16 16 16;--hw-white:#fff;--hw-close:#f46b5d;--hw-min:#f9bd4e;--hw-max:#57c353;--hw-sans:"Neue Montreal", Arial, sans-serif;--hw-serif:Gloock, Georgia, serif;--hw-mono:"IBM Plex Mono", ui-monospace, Menlo, monospace;--hw-grad-scrim:linear-gradient(#0006, transparent);--hw-grad-glow:radial-gradient(circle closest-corner at 50% 0, rgb(var(--hw-ink-rgb) / .15), transparent);--hw-grad-fade:linear-gradient(rgb(var(--hw-page-rgb) / 0), var(--hw-page) 60%);--hw-grad-glare:linear-gradient(to right, transparent 5%, #fffc 35%, var(--hw-white) 50%, #fffc 65%, transparent 95%);--hw-grad-ring:radial-gradient(circle farthest-side at 50% 0, rgb(var(--hw-ink-rgb) / .2), transparent);--hw-grad-bar:linear-gradient(to right, rgb(var(--hw-ink-rgb) / .1), rgb(var(--hw-ink-rgb) / .5) 50%, rgb(var(--hw-ink-rgb) / .1));--hw-grad-serif:linear-gradient(var(--hw-ink) 50%, transparent 90%);--hw-grad-card:linear-gradient(190deg, rgb(var(--hw-ink-rgb) / .093), rgb(var(--hw-ink-rgb) / 0)), var(--hw-page);--hw-grad-edge:linear-gradient(to right, transparent 20%, var(--hw-white) 50%, transparent 80%);--hw-grad-wash:radial-gradient(circle at 50% 0, #ffffff4d, transparent);--hw-noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='.33 .33 .33 0 0 .33 .33 .33 0 0 .33 .33 .33 0 0 0 0 0 0 1'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");--hw-shadow-window:inset 0 0 8px #0006, 0 0 60px #0003, 0 30px 120px #000c;--hw-shadow-frame:inset 0 0 10px #0000001a, 0 0 12px #0006;--hw-shadow-bar:0 10px 20px 4px #0003;--hw-shadow-pill:0 10px 25px #00000026;--hw-shadow-button:inset 0 0 10px #0000001a, 0 4px 16px #00000040;--hw-shadow-glow:0 2px 25px 2px var(--hw-white);--hw-shadow-card:0 40px 80px #00000080;--hw-shadow-thumb:0 40px 50px 10px #00000040;--hw-ease-out:cubic-bezier(.23, 1, .32, 1);--hw-ease-soft:cubic-bezier(.165, .84, .44, 1);--hw-ease-apple:cubic-bezier(.16, 1, .3, 1);--hw-ease-spring:cubic-bezier(.34, 1.56, .64, 1);--hw-z-below:-1;--hw-z-base:0;--hw-z-raised:1;--hw-z-window:3;--hw-z-chrome:5;--hw-z-nav:10;--hw-content-w:882px;--hw-ring:8px;--hw-ring-r:24px;--hw-frame-r:16px;color:var(--hw-ink);font-family:var(--hw-sans);-webkit-font-smoothing:antialiased;font-size:14px;line-height:20px}.hw,.hw *,.hw :before,.hw :after{box-sizing:border-box}:where(.hw) :where(h1,h2,h3,h4,p,ul,ol,dl,dd,pre,figure){margin:0}:where(.hw) :where(ul,ol){padding:0;list-style:none}:where(.hw) :where(a){color:inherit;text-decoration:none}:where(.hw) :where(svg,img){display:block}.hw a:focus-visible{outline:2px solid var(--hw-ink);outline-offset:3px}.hw-skip{z-index:calc(var(--hw-z-nav) + 1);background:var(--hw-ink);color:var(--hw-page);border-radius:100px;padding:10px 18px;font-weight:500;position:fixed;top:12px;left:16px;transform:translateY(-200%)}.hw-skip:focus{transform:none}.hw-sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.hw-dots{gap:10px;display:flex}.hw-dot{border:1px solid rgb(var(--hw-page-rgb) / .25);background:var(--hw-dot);width:12px;height:12px;box-shadow:0 0 20px 2px var(--hw-dot);border-radius:100px}.hw-dot-close{--hw-dot:var(--hw-close)}.hw-dot-min{--hw-dot:var(--hw-min)}.hw-dot-max{--hw-dot:var(--hw-max)}@keyframes hw-rise{0%{opacity:0;translate:0 40px}}@keyframes hw-fade{0%{opacity:0}}@keyframes hw-window-in{0%{opacity:0;filter:blur(16px);translate:0 56px;scale:.94}}@keyframes hw-word-in{0%{opacity:0;filter:blur(12px);translate:0 .5em}}@keyframes hw-pop-in{0%{opacity:0;rotate:-18deg;scale:.2}50%{opacity:1}}@keyframes hw-up-in{0%{opacity:0;filter:blur(8px);translate:0 28px}}@keyframes hw-down-in{0%{opacity:0;translate:0 -18px}}@keyframes hw-recede{to{transform:scale(.9)translateY(4%)}}@keyframes hw-dim{to{opacity:.35}}@keyframes hw-light{0%{opacity:.16}}@keyframes hw-zoom-in{0%{opacity:.3;scale:.88}}@keyframes hw-line{0%{background-size:0% 1px}}@keyframes hw-nudge{0%,50%,to{translate:0}25%{translate:0 6px}}@media (width>=1440px){.hw{--hw-content-w:1044px}}@media (width>=1920px){.hw{--hw-content-w:1440px;--hw-ring:12px;--hw-ring-r:36px;--hw-frame-r:24px}}@media (width<=991px){.hw{--hw-content-w:100%}}@media (prefers-reduced-motion:reduce){.hw *,.hw :before,.hw :after{transition-duration:.01ms!important;animation:none!important}}.hw{--hw-sec-pad:72px 0 120px;--hw-sec-gap:56px;--hw-rows-gap:64px;--hw-cols-gap:48px;--hw-h3:40px;--hw-h3-lh:50px;--hw-sub:24px;--hw-sub-lh:30px;--hw-meta:16px;--hw-body:16px;--hw-body-lh:24px;--hw-block-gap:20px;--hw-label:18px;--hw-statement:48px;--hw-statement-lh:1.1;--hw-statement-track:-1px;--hw-lead:18px;--hw-story-gap:80px;--hw-story-inner:64px;--hw-story-offset:48px;--hw-story-pad:0 24px}.hw-section{padding:var(--hw-sec-pad);flex-direction:column;align-items:center;scroll-margin-top:-56px;display:flex}.hw-section-inner{gap:var(--hw-sec-gap);width:var(--hw-content-w);flex-direction:column;max-width:100%;display:flex}.hw-rows{gap:var(--hw-rows-gap);flex-direction:column;display:flex}.hw-cols{gap:16px var(--hw-cols-gap);display:flex}.hw-cols>*{flex:1 1 0;min-width:0}.hw-overline{background:linear-gradient(rgb(var(--hw-ink-rgb) / .12), rgb(var(--hw-ink-rgb) / .12)) no-repeat 0 0 / 100% 1px;font-size:var(--hw-label);letter-spacing:-.01em;color:var(--hw-ink);padding-top:16px;font-weight:500;line-height:1.3}.hw-statement{max-width:22ch;font-size:var(--hw-statement);font-weight:500;line-height:var(--hw-statement-lh);letter-spacing:var(--hw-statement-track);text-shadow:0 0 30px #fff3}.hw-statement .hw-serif{padding-right:.15em}.hw-h3{font-size:var(--hw-h3);font-weight:500;line-height:var(--hw-h3-lh);letter-spacing:-.1px}.hw-sub{font-size:var(--hw-sub);font-weight:500;line-height:var(--hw-sub-lh);letter-spacing:.1px;padding-right:24px}.hw-meta{font-size:var(--hw-meta);color:rgb(var(--hw-ink-rgb) / .5);align-items:center;gap:8px;line-height:1.25;display:flex}.hw-text{font-size:var(--hw-body);font-weight:300;line-height:var(--hw-body-lh);letter-spacing:.4px;color:rgb(var(--hw-ink-rgb) / .6);padding-right:24px}.hw-text strong{font-size:var(--hw-lead);color:rgb(var(--hw-ink-rgb) / .9);font-weight:500}.hw-block{gap:var(--hw-block-gap);flex-direction:column;display:flex}.hw-block-head{flex-direction:column;gap:8px;display:flex}.hw-live{background:var(--hw-max);width:8px;height:8px;box-shadow:0 0 12px var(--hw-max);border-radius:50%;flex:none}.hw-tags{flex-wrap:wrap;gap:8px;display:flex}.hw-tag{border:1px solid rgb(var(--hw-ink-rgb) / .1);background:rgb(var(--hw-ink-rgb) / .04);letter-spacing:.2px;height:30px;color:rgb(var(--hw-ink-rgb) / .8);border-radius:24px;align-items:center;gap:6px;padding:0 12px 0 10px;font-size:13px;font-weight:500;display:flex}.hw-tag .ti{fill:currentColor;opacity:.85;flex:none;width:14px;height:14px}.hw-tag .ti-line{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round}.hw-button{border:1px solid rgb(var(--hw-ink-rgb) / .1);background:rgb(var(--hw-ink-rgb) / .05);width:fit-content;height:48px;font:500 15px/1 var(--hw-sans);letter-spacing:.2px;color:var(--hw-ink);cursor:pointer;transition:background-color .3s var(--hw-ease-soft), border-color .4s var(--hw-ease-soft);border-radius:100px;justify-content:center;align-items:center;gap:8px;padding:0 20px;display:inline-flex}.hw-button:hover{border-color:rgb(var(--hw-ink-rgb) / .3);background:rgb(var(--hw-ink-rgb) / .1)}.hw-button-main{background:var(--hw-ink);color:var(--hw-page);border-color:#0000;box-shadow:0 2px 25px 2px #ffffff26}.hw-button-main:hover{background:var(--hw-white)}.hw-button:disabled{opacity:.55;cursor:wait}.hw-button svg{stroke-width:1.4px;width:16px;height:16px;transition:transform .3s var(--hw-ease-soft)}.hw-button:hover svg{transform:translate(3px)}.hw-ring{padding:var(--hw-ring);border-radius:var(--hw-ring-r);background-image:var(--hw-grad-ring);position:relative;box-shadow:inset 0 0 8px #0006,0 0 60px #0003,0 30px 80px #00000080}.hw-ring:before{content:"";inset:var(--hw-ring) var(--hw-ring) auto;z-index:var(--hw-z-raised);background-image:var(--hw-grad-edge);height:1px;position:absolute}.hw-ring-inner{border:1px solid rgb(var(--hw-ink-rgb) / .3);border-radius:var(--hw-frame-r);overflow:hidden}.hw-ring-inner img{width:100%;height:auto}.hw-story{gap:var(--hw-story-gap);flex-direction:column;display:flex}.hw-story-head{flex-direction:column;gap:24px;display:flex}.hw-story .hw-cols>*{gap:var(--hw-story-inner);flex-direction:column;display:flex}.hw-story .hw-cols>:last-child{padding-top:var(--hw-story-offset)}.hw-story .hw-text{padding:var(--hw-story-pad)}.hw-facts{padding:var(--hw-story-pad);flex-direction:column;display:flex}.hw-facts>div{border-top:1px solid rgb(var(--hw-ink-rgb) / .1);justify-content:space-between;gap:16px;padding:14px 0;display:flex}.hw-facts dt{font-size:var(--hw-meta);color:rgb(var(--hw-ink-rgb) / .5)}.hw-facts dd{font-size:var(--hw-meta);text-align:right;margin:0;font-weight:500}.hw-story-actions{padding:var(--hw-story-pad);flex-wrap:wrap;gap:12px;display:flex}.hw .terminal{border:1px solid rgb(var(--hw-ink-rgb) / .1);border-radius:var(--hw-frame-r);background:var(--hw-page);box-shadow:var(--hw-shadow-thumb);overflow:hidden}.hw .term-bar{border-bottom:1px solid rgb(var(--hw-ink-rgb) / .08);background:rgb(var(--hw-ink-rgb) / .06);align-items:center;gap:10px;height:40px;padding:0 20px;display:flex;position:relative}.hw .term-bar span{background:var(--hw-close);border-radius:100px;width:12px;height:12px}.hw .term-bar span:nth-child(2){background:var(--hw-min)}.hw .term-bar span:nth-child(3){background:var(--hw-max)}.hw .term-bar b{font:400 12px var(--hw-mono);color:rgb(var(--hw-ink-rgb) / .5);pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.hw .term-body{overscroll-behavior:contain;height:min(480px,75vh);font:400 13.5px/1.75 var(--hw-mono);cursor:text;scrollbar-width:thin;scrollbar-color:rgb(var(--hw-ink-rgb) / .2) transparent;padding:20px 24px;position:relative;overflow-y:auto}.hw .term-entry+.term-entry{margin-top:12px}.hw .term-line{color:var(--hw-ink);overflow-wrap:anywhere}.hw .term-user{color:var(--hw-max)}.hw .term-path{color:var(--hw-min)}.hw .term-out{white-space:pre-wrap;overflow-wrap:anywhere;color:rgb(var(--hw-ink-rgb) / .8);margin-top:4px}.hw .term-h{color:var(--hw-min)}.hw .term-ai{border-left:2px solid #57c35380;padding-left:12px}.hw .term-ai .term-cursor{margin-left:2px}.hw .term-body:focus{outline:none}.hw .term-thinking{color:rgb(var(--hw-ink-rgb) / .55)}.hw .term-spinner{width:1ch;color:var(--hw-max);display:inline-block}.hw .term-elapsed{color:rgb(var(--hw-ink-rgb) / .35)}.hw .term-form{margin-top:12px;display:flex}.hw .term-entry:empty+.term-form,.hw [role=log]:empty+.term-form{margin-top:0}.hw .term-prompt{white-space:pre;flex:none}.hw .term-input{min-width:0;font:inherit;color:var(--hw-ink);caret-color:var(--hw-ink);background:0 0;border:0;outline:none;flex:1;padding:0}.hw .term-input::placeholder{color:rgb(var(--hw-ink-rgb) / .5)}.hw .terminal:has(.term-input:focus-visible){border-color:rgb(var(--hw-ink-rgb) / .3)}.hw .term-cursor{vertical-align:text-bottom;background:var(--hw-ink);width:.56em;height:1.1em;margin-left:1px;display:inline-block}.hw .term-cursor:not(.is-typing){animation:1.1s step-end infinite hw-blink}@keyframes hw-blink{50%{opacity:0}}.hw-list{flex-direction:column;display:flex}.hw-list li{border-top:1px solid rgb(var(--hw-ink-rgb) / .1);font-size:var(--hw-body);line-height:var(--hw-body-lh);color:rgb(var(--hw-ink-rgb) / .8);gap:12px;padding:14px 0;display:flex}.hw-list li:before{content:"";width:6px;height:6px;margin-top:calc((var(--hw-body-lh) - 6px) / 2);background:rgb(var(--hw-ink-rgb) / .5);border-radius:50%;flex:none}.hw-gallery{flex-direction:column;gap:20px;margin:0;display:flex}.hw-gallery-head{justify-content:space-between;align-items:center;gap:16px;display:flex}.hw-gallery-nav{gap:8px;display:flex}.hw-gallery-btn{border:1px solid rgb(var(--hw-ink-rgb) / .1);background:rgb(var(--hw-ink-rgb) / .05);width:40px;height:40px;color:var(--hw-ink);cursor:pointer;transition:background-color .3s var(--hw-ease-soft), border-color .4s var(--hw-ease-soft), opacity .3s var(--hw-ease-soft);border-radius:100px;justify-content:center;align-items:center;padding:0;display:flex}.hw-gallery-btn:hover:not(:disabled){border-color:rgb(var(--hw-ink-rgb) / .3);background:rgb(var(--hw-ink-rgb) / .1)}.hw-gallery-btn:disabled{opacity:.35;cursor:default}.hw-gallery-btn svg{width:18px;height:18px}.hw-gallery-track{overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;border-radius:var(--hw-frame-r);overflow-x:auto}.hw-gallery-track::-webkit-scrollbar{display:none}.hw-gallery-track:focus-visible{outline:2px solid var(--hw-ink);outline-offset:4px}.hw-gallery-list{gap:16px;width:max-content;display:flex}.hw-shot{scroll-snap-align:start;border:1px solid rgb(var(--hw-ink-rgb) / .1);background:var(--hw-page);border-radius:10px;flex-direction:column;flex:none;display:flex;overflow:hidden}.hw-shot[data-phone]{border-radius:22px}.hw-shot-bar{border-bottom:1px solid rgb(var(--hw-ink-rgb) / .08);background:rgb(var(--hw-ink-rgb) / .06);align-items:center;gap:12px;height:32px;padding:0 12px;display:flex}.hw-shot .hw-dots{gap:6px}.hw-shot .hw-dot{width:8px;height:8px;box-shadow:none;border:0}.hw-shot-label{font:400 12px/1 var(--hw-mono);color:rgb(var(--hw-ink-rgb) / .5);white-space:nowrap}.hw-shot-image{width:auto;height:var(--hw-shot-h,520px);display:block}.hw-core{border:1px solid var(--hw-line);border-radius:var(--hw-frame-r);background:var(--hw-grad-card);overflow:hidden}.hw-core summary{cursor:pointer;align-items:center;gap:16px;padding:24px 28px;list-style:none;display:flex}.hw-core summary::-webkit-details-marker{display:none}.hw-core summary:focus-visible{outline:2px solid var(--hw-ink);outline-offset:-4px;border-radius:var(--hw-frame-r)}.hw-core-title{flex:1}.hw-core-chevron{stroke-width:1px;width:24px;height:24px;transition:transform .4s var(--hw-ease-soft);flex:none;transform:rotate(90deg)}.hw-core[open] .hw-core-chevron{transform:rotate(-90deg)}.hw-core-body{flex-direction:column;gap:40px;padding:8px 28px 32px;display:flex}.hw-core-group{flex-direction:column;gap:16px;display:flex}.hw-core-items{flex-wrap:wrap;gap:32px;display:flex}.hw-core-items>li{flex-direction:column;flex:calc(33.3333% - 21.3333px);gap:6px;min-width:220px;display:flex}.hw-core-name{align-items:center;gap:6px;width:fit-content;font-size:18px;font-weight:500;line-height:24px;display:flex}.hw-core-name svg{stroke-width:1.4px;width:16px;height:16px}.hw-core-items p{letter-spacing:.2px;color:rgb(var(--hw-ink-rgb) / .6);font-size:15px;font-weight:300;line-height:22px}.hw-skills{gap:var(--hw-rows-gap) var(--hw-cols-gap);flex-wrap:wrap;display:flex}.hw-skills>*{flex:1 1 calc((100% - 2 * var(--hw-cols-gap)) / 3);min-width:240px}.hw-contact-card{gap:32px var(--hw-cols-gap);border:1px solid var(--hw-line);border-radius:var(--hw-frame-r);background:var(--hw-grad-card);padding:clamp(24px,5vw,56px);display:flex;position:relative;overflow:hidden}.hw-contact-card:before{content:"";pointer-events:none;background-image:radial-gradient(circle at 0 0,#ffffff1f,#0000 60%);position:absolute;inset:0}.hw-contact-card>*{flex:1 1 0;min-width:0;position:relative}.hw-contact-cta{flex-direction:column;align-items:flex-start;gap:24px;display:flex}.hw-contact-title{max-width:16ch;font-size:var(--hw-h3);letter-spacing:-1px;text-shadow:0 0 30px #fff3;font-weight:500;line-height:1.1}.hw-contact-cta .hw-text{max-width:30em}.hw-details{flex-direction:column;align-self:stretch;margin-top:12px;display:flex}.hw-details li{border-top:1px solid rgb(var(--hw-ink-rgb) / .1);align-items:center;gap:12px;padding:14px 0;font-size:15px;display:flex}.hw-details li>svg{width:18px;height:18px;color:rgb(var(--hw-ink-rgb) / .7);flex:none}.hw-details-k{width:80px;color:rgb(var(--hw-ink-rgb) / .5);flex:none}.hw-details a{overflow-wrap:anywhere;align-items:center;gap:6px;font-weight:500;display:inline-flex}.hw-details a svg{stroke-width:1.4px;width:14px;height:14px;transition:transform .3s var(--hw-ease-soft)}.hw-details a:hover svg{transform:translate(2px,-2px)}.hw-form{flex-direction:column;gap:16px;display:flex}.hw-form-title{margin-bottom:4px;font-size:18px;font-weight:500;line-height:24px}.hw-field{flex-direction:column;gap:8px;display:flex}.hw-field span{color:rgb(var(--hw-ink-rgb) / .6);font-size:14px;font-weight:500}.hw-field input,.hw-field textarea{border:1px solid rgb(var(--hw-ink-rgb) / .1);background:rgb(var(--hw-ink-rgb) / .04);width:100%;font:400 16px/1.4 var(--hw-sans);color:var(--hw-ink);transition:border-color .4s var(--hw-ease-soft), box-shadow .4s var(--hw-ease-soft);border-radius:10px;padding:12px 16px}.hw-trap{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.hw-field input:hover,.hw-field textarea:hover{border-color:rgb(var(--hw-ink-rgb) / .2)}.hw-field input:focus,.hw-field textarea:focus{border-color:rgb(var(--hw-ink-rgb) / .5);box-shadow:0 0 0 3px rgb(var(--hw-ink-rgb) / .1);outline:0}.hw-field textarea{resize:vertical;min-height:140px}.hw-field ::placeholder{color:rgb(var(--hw-ink-rgb) / .5)}.hw-form-foot{flex-wrap:wrap;align-items:center;gap:16px;margin-top:4px;display:flex}.hw-form-status{font-size:14px}.hw-form-status[data-status=success]{color:var(--hw-max)}.hw-form-status[data-status=error],.hw-form-status[data-status=invalid]{color:var(--hw-close)}.hw-footer{padding:var(--hw-footer-pad,88px 0 80px);border-top:1px solid rgb(var(--hw-ink-rgb) / .1);justify-content:center;display:flex}.hw-footer-inner{gap:var(--hw-footer-gap,64px);width:var(--hw-content-w);flex-direction:column;max-width:100%;display:flex}.hw-footer-top{justify-content:space-between;gap:48px;display:flex}.hw-footer-cols{gap:32px var(--hw-footer-cols-gap,48px);flex-wrap:wrap;display:flex}.hw-footer-col{flex-direction:column;gap:16px;display:flex}.hw-footer-h{color:rgb(var(--hw-ink-rgb) / .5);font-size:14px;font-weight:400;line-height:20px}.hw-footer-col ul{flex-direction:column;gap:8px;display:flex}.hw-footer-link{letter-spacing:.2px;min-height:40px;transition:opacity .3s var(--hw-ease-soft);align-items:center;gap:4px;font-size:16px;font-weight:500;line-height:20px;display:flex}.hw-footer-link:hover{opacity:.7}.hw-footer-link svg{stroke-width:1.2px;width:18px;height:18px}.hw-footer-link .hw-footer-logo{width:16px;height:16px;margin-right:6px}.hw-footer-bottom{gap:48px;display:flex}.hw-footer-bottom>*{flex-direction:column;flex:1 1 0;gap:4px;min-width:0;display:flex}.hw-footer-copy{letter-spacing:.2px;font-size:16px;font-weight:500;line-height:24px}.hw-footer-end{justify-content:flex-end;align-items:flex-end}.hw-footer-under{letter-spacing:.2px;color:rgb(var(--hw-ink-rgb) / .5);font-size:14px;line-height:20px}.hw-footer-small{letter-spacing:.2px;color:rgb(var(--hw-ink-rgb) / .6);font-size:12px;font-weight:300;line-height:20px}.hw-motion .hw-reveal{transition:opacity 1.1s var(--hw-ease-apple) var(--hw-reveal-delay,0s), translate 1.3s var(--hw-ease-apple) var(--hw-reveal-delay,0s), scale 1.3s var(--hw-ease-apple) var(--hw-reveal-delay,0s), filter 1.1s var(--hw-ease-apple) var(--hw-reveal-delay,0s)}.hw-motion .hw-reveal:not([data-shown]){opacity:0;filter:blur(10px);translate:0 64px;scale:.97}.hw-button{transition:background-color .3s var(--hw-ease-soft), border-color .4s var(--hw-ease-soft), scale .5s var(--hw-ease-spring)}.hw-button:active{transition-duration:.3s,.4s,.12s;scale:.96}.hw-rise-words .hw-w{animation:hw-word-in 1.1s var(--hw-ease-apple) calc(.1s + var(--i) * 60ms) backwards;display:inline-block}.hw-rise-words .hw-w.hw-serif{margin:0 -.15em -.22em 0;padding:0 .15em .22em 0}@supports (animation-timeline:view()){.hw-lit .hw-w{animation:linear both hw-light;animation-timeline:view();animation-range:cover calc(6% + var(--i) * 2.4%) cover calc(20% + var(--i) * 2.4%)}.hw-overline{animation:linear both hw-line;animation-timeline:view();animation-range:entry 20% cover 35%}.hw-gallery-track{animation:linear both hw-zoom-in;animation-timeline:view();animation-range:entry cover 40%}}@media (width>=1440px){.hw{--hw-rows-gap:72px;--hw-cols-gap:56px;--hw-meta:18px;--hw-body:18px;--hw-body-lh:27px;--hw-block-gap:24px;--hw-statement:56px;--hw-statement-lh:1;--hw-lead:20px;--hw-story-gap:88px;--hw-story-pad:0 32px}}@media (width>=1920px){.hw{--hw-sec-pad:112px 0 168px;--hw-sec-gap:64px;--hw-rows-gap:80px;--hw-cols-gap:72px;--hw-h3:48px;--hw-h3-lh:62px;--hw-sub:28px;--hw-sub-lh:38px;--hw-meta:20px;--hw-body:20px;--hw-body-lh:30px;--hw-label:20px;--hw-statement:80px;--hw-statement-track:-1.5px;--hw-lead:24px;--hw-story-gap:120px;--hw-story-inner:88px;--hw-story-offset:80px;--hw-story-pad:0 48px;--hw-footer-pad:96px 0;--hw-footer-gap:80px}}@media (width<=991px){.hw{--hw-sec-pad:72px 48px 120px;--hw-cols-gap:32px;--hw-statement:42px;--hw-story-inner:56px;--hw-footer-pad:88px 48px 80px;--hw-footer-cols-gap:32px}}@media (width<=767px){.hw{--hw-sec-pad:64px 24px;--hw-sec-gap:32px;--hw-h3:32px;--hw-h3-lh:40px;--hw-body:15px;--hw-body-lh:22.5px;--hw-block-gap:16px;--hw-statement:8vw;--hw-story-gap:64px;--hw-story-pad:0 24px;--hw-footer-pad:48px 24px}.hw-cols,.hw-contact-card,.hw-footer-bottom{flex-direction:column}.hw-cols>*,.hw-contact-card>*,.hw-footer-bottom>*{flex:none}.hw-story .hw-cols{gap:80px}.hw-skills>*{flex-basis:100%}.hw-footer-end{align-items:flex-start}}@media (width<=479px){.hw{--hw-sec-pad:56px 16px 64px;--hw-h3:28px;--hw-h3-lh:32px;--hw-sub:20px;--hw-sub-lh:26px;--hw-meta:15px;--hw-label:16px;--hw-statement:7.9vw;--hw-statement-track:-.1vw;--hw-story-gap:40px;--hw-story-pad:0 16px;--hw-footer-pad:64px 16px 48px;--hw-footer-gap:48px;--hw-footer-cols-gap:16px}.hw-footer-top{flex-direction:column}.hw-footer-bottom{gap:32px}.hw-shot-image{--hw-shot-h:min(380px, 56vh)}.hw-core summary{flex-wrap:wrap;padding:20px}.hw-core-body{padding:8px 20px 24px}.hw-details-k{display:none}.hw .term-body{height:min(420px,70vh);padding:16px;font-size:12.5px}}.hw{--hw-cards-gap:48px;--hw-card-pad:32px 28px 0;--hw-card-gap:56px;--hw-card-top-gap:8px;--hw-card-title:24px;--hw-card-arrow:32px;--hw-card-desc:14px;--hw-card-desc-lh:20px;--hw-thumb-w:90%;--hw-thumb-bleed:32px}.hw-cards{gap:var(--hw-cards-gap);flex-direction:column;display:flex}.hw-card{padding:var(--hw-ring);border-radius:var(--hw-ring-r);background:rgb(var(--hw-ink-rgb) / .04);box-shadow:var(--hw-shadow-card);position:relative}.hw-card-link{gap:var(--hw-card-gap);padding:var(--hw-card-pad);border:1px solid var(--hw-line);border-radius:var(--hw-frame-r);background:var(--hw-grad-card);transition:border-color .4s var(--hw-ease-soft);flex-direction:column;display:flex;position:relative;overflow:hidden}.hw-card-glare{z-index:var(--hw-z-raised);pointer-events:none;height:1px;position:absolute;inset:0 0 auto}.hw-card-glare-outer{background-image:var(--hw-grad-glare)}.hw-card-glare-inner{background-image:var(--hw-grad-edge)}.hw-card-wash{z-index:var(--hw-z-base);background-image:var(--hw-grad-wash);pointer-events:none;position:absolute;inset:0}.hw-card-top{z-index:var(--hw-z-raised);gap:var(--hw-card-top-gap);flex-direction:column;display:flex;position:relative}.hw-card-title-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.hw-card-title{font-size:var(--hw-card-title);font-weight:500;line-height:1}.hw-card-arrow{width:var(--hw-card-arrow);height:var(--hw-card-arrow);stroke-width:1px;flex:none}.hw-card-desc{font-size:var(--hw-card-desc);line-height:var(--hw-card-desc-lh);letter-spacing:.2px;color:rgb(var(--hw-ink-rgb) / .5);padding-right:32px}.hw-card-org{color:rgb(var(--hw-ink-rgb) / .8);font-weight:500}.hw-thumb{z-index:var(--hw-z-raised);width:var(--hw-thumb-w);aspect-ratio:866/560;margin-bottom:calc(var(--hw-thumb-bleed) * -1);border:1px solid rgb(var(--hw-ink-rgb) / .1);background:var(--hw-page);box-shadow:var(--hw-shadow-thumb);transition:transform .6s var(--hw-ease-soft);border-radius:10px;flex-direction:column;align-self:center;display:flex;position:relative;overflow:hidden;container-type:inline-size}.hw-thumb-bar{border-bottom:1px solid rgb(var(--hw-ink-rgb) / .08);background:rgb(var(--hw-ink-rgb) / .06);flex:none;align-items:center;gap:2.4cqi;height:4.6cqi;padding:0 2.3cqi;display:flex}.hw-thumb .hw-dots{gap:.9cqi}.hw-thumb .hw-dot{width:1.2cqi;height:1.2cqi;box-shadow:none;border:0}.hw-thumb-label{font-family:var(--hw-mono);color:rgb(var(--hw-ink-rgb) / .5);font-size:1.3cqi;line-height:1}.hw-thumb-image{object-fit:cover;object-position:top;flex:1;width:100%;min-height:0}.hw-thumb-code{min-height:0;font-family:var(--hw-mono);white-space:pre;tab-size:4;color:rgb(var(--hw-ink-rgb) / .6);flex:1;padding:2.6cqi 0;font-size:1.5cqi;line-height:1.6;overflow:hidden}.hw-thumb-code code{font:inherit}.hw-code-line{padding:0 2.6cqi;display:block}.hw-code-line[data-on]{background:rgb(var(--hw-ink-rgb) / .06);color:var(--hw-ink)}.hw-code-n{text-align:right;width:3ch;color:rgb(var(--hw-ink-rgb) / .25);-webkit-user-select:none;user-select:none;margin-right:3ch;display:inline-block}.hw-card-glare,.hw-card-wash{opacity:0;transition:opacity .6s var(--hw-ease-soft)}.hw-card-arrow{opacity:0;transition:opacity .3s var(--hw-ease-soft), transform .6s var(--hw-ease-out);transform:translate(-10px)}.hw-card:is(:hover,:has(:focus-visible)) :is(.hw-card-glare,.hw-card-wash,.hw-card-arrow){opacity:1}.hw-card:is(:hover,:has(:focus-visible)) .hw-card-arrow{transform:none}.hw-card:is(:hover,:has(:focus-visible)) .hw-card-link{border-color:rgb(var(--hw-ink-rgb) / .5)}.hw-card:is(:hover,:has(:focus-visible)) .hw-thumb{transform:translateY(-24px)}@media (width>=1440px){.hw{--hw-card-pad:36px 32px 0;--hw-card-gap:64px;--hw-card-desc:16px;--hw-thumb-bleed:26px}}@media (width>=1920px){.hw{--hw-cards-gap:80px;--hw-card-pad:44px 44px 0;--hw-card-gap:88px;--hw-card-top-gap:12px;--hw-card-title:32px;--hw-card-arrow:48px;--hw-card-desc:18px;--hw-card-desc-lh:26px;--hw-thumb-bleed:32px}}@media (width<=991px){.hw{--hw-thumb-bleed:0px}}@media (width<=767px){.hw{--hw-thumb-w:100%}}@media (width<=479px){.hw{--hw-cards-gap:40px;--hw-card-pad:26px 24px 0;--hw-card-gap:48px;--hw-card-desc:15px;--hw-card-desc-lh:19px}}@media (width<=767px),(hover:none){.hw-card-glare,.hw-card-wash,.hw-card-arrow{opacity:1}.hw-card-arrow,.hw-card:is(:hover,:has(:focus-visible)) .hw-thumb{transform:none}}@supports (animation-timeline:view()){.hw-thumb{animation:linear both hw-zoom-in;animation-timeline:view();animation-range:entry cover 40%}}.hw{--hw-nav-pad:24px 48px 88px;--hw-logo:20px;--hw-hero-pad:160px 0 4px;--hw-body-pad:80px 56px 192px;--hw-stack-gap:64px;--hw-display:80px;--hw-display-lh:.9;--hw-display-track:-2px;--hw-serif-track:-2px;--hw-about-gap:24px;--hw-about:20px;--hw-fade-h:200px;--hw-fade-pad:48px}.hw-nav{z-index:var(--hw-z-nav);padding:var(--hw-nav-pad);background-image:var(--hw-grad-scrim);pointer-events:none;transition:translate .5s var(--hw-ease-soft);display:flex;position:fixed;inset:0 0 auto}@property --hw-blur{syntax:"<number>";inherits:true;initial-value:0}@keyframes hw-blur-in{0%{--hw-blur:0}to{--hw-blur:1}}.hw-nav-blur{--hw-blur:0;z-index:var(--hw-z-below);pointer-events:none;transition:--hw-blur .7s cubic-bezier(.32,.72,0,1);position:absolute;inset:0}.hw-nav[data-scrolled] .hw-nav-blur{--hw-blur:1}@supports (animation-timeline:scroll()){.hw-nav-blur{transition:none;animation:linear both hw-blur-in;animation-timeline:scroll(root);animation-range:0 140px}}.hw-nav-blur:after{content:"";background:linear-gradient(rgb(var(--hw-page-rgb) / .55), rgb(var(--hw-page-rgb) / .3) 45%, transparent);opacity:var(--hw-blur);position:absolute;inset:0}.hw-nav-blur i{position:absolute;inset:0}.hw-nav-blur i:first-child{-webkit-backdrop-filter:blur(calc(var(--hw-blur) * 1px));-webkit-mask-image:linear-gradient(#000 65%,#0000);mask-image:linear-gradient(#000 65%,#0000)}.hw-nav-blur i:nth-child(2){-webkit-backdrop-filter:blur(calc(var(--hw-blur) * 2px));-webkit-mask-image:linear-gradient(#000 52%,#0000 88%);mask-image:linear-gradient(#000 52%,#0000 88%)}.hw-nav-blur i:nth-child(3){-webkit-backdrop-filter:blur(calc(var(--hw-blur) * 4px));-webkit-mask-image:linear-gradient(#000 42%,#0000 76%);mask-image:linear-gradient(#000 42%,#0000 76%)}.hw-nav-blur i:nth-child(4){-webkit-backdrop-filter:blur(calc(var(--hw-blur) * 8px));-webkit-mask-image:linear-gradient(#000 32%,#0000 64%);mask-image:linear-gradient(#000 32%,#0000 64%)}.hw-nav-blur i:nth-child(5){-webkit-backdrop-filter:blur(calc(var(--hw-blur) * 16px)) saturate(calc(1 + var(--hw-blur) * .3));-webkit-mask-image:linear-gradient(#000 22%,#0000 52%);mask-image:linear-gradient(#000 22%,#0000 52%)}.hw-nav-bar{height:56px;animation:hw-down-in 1s var(--hw-ease-apple) .1s backwards;flex:1;justify-content:space-between;align-items:center;display:flex}.hw-nav-side{flex:1;display:flex}.hw-nav-end{justify-content:flex-end;align-items:center;gap:8px}.hw-logo{pointer-events:auto;flex-direction:column;gap:8px;display:flex}.hw-logo-name{font-size:var(--hw-logo);font-weight:500;line-height:1}.hw-logo-role{letter-spacing:.2px;color:rgb(var(--hw-ink-rgb) / .5);font-size:12px;line-height:12px}.hw-pill{isolation:isolate;border:1px solid rgb(var(--hw-ink-rgb) / .1);background:rgb(var(--hw-ink-rgb) / .05);width:180px;height:48px;box-shadow:var(--hw-shadow-pill);-webkit-backdrop-filter:blur(15px);pointer-events:auto;transition:box-shadow 1s var(--hw-ease-out), border .6s var(--hw-ease-soft);border-radius:24px;justify-content:space-between;align-items:center;padding:0 6px;display:flex;position:relative}.hw-pill:hover{border-color:rgb(var(--hw-ink-rgb) / .2)}.hw-pill-indicator,.hw-pill-glow{transform:translateX(calc(var(--view,0) * 86px));transition:transform .3s var(--hw-ease-soft);position:absolute}.hw-pill-indicator{z-index:var(--hw-z-below);background:rgb(var(--hw-ink-rgb) / .05);border-radius:18px;width:80px;height:36px;top:5px;left:6px}.hw-pill-glow{background:var(--hw-ink);width:24px;height:4px;box-shadow:var(--hw-shadow-glow);border-radius:2px;top:-3px;left:34px}.hw-pill-link{letter-spacing:.2px;width:80px;height:36px;transition:.2s var(--hw-ease-soft);border-radius:18px;justify-content:center;align-items:center;font-weight:500;line-height:18px;display:flex}.hw-chips{gap:8px;display:flex}.hw-chip{letter-spacing:.2px;pointer-events:auto;height:48px;transition:background-color .3s var(--hw-ease-soft);border-radius:24px;align-items:center;gap:4px;padding:0 12px 0 16px;font-weight:500;line-height:18px;display:flex}.hw-chip:hover{background:rgb(var(--hw-ink-rgb) / .05)}.hw-chip-icon{width:18px;height:18px}.hw-chip-logo{flex:none;width:16px;height:16px;margin-right:4px}.hw-lang{font:inherit;letter-spacing:1px;color:inherit;cursor:pointer;background:0 0;border:0;padding:0 16px;font-weight:500}.hw-contact{border:1px solid rgb(var(--hw-ink-rgb) / .1);background:rgb(var(--hw-ink-rgb) / .05);width:48px;height:48px;box-shadow:var(--hw-shadow-button);pointer-events:auto;border-radius:100px;justify-content:center;align-items:center;display:none}.hw-contact-icon{width:24px;height:24px}.hw-hero{z-index:var(--hw-z-raised);padding:var(--hw-hero-pad);background-image:var(--hw-grad-glow);justify-content:center;display:flex;position:relative;overflow:hidden}.hw-noise,.hw-grain{z-index:var(--hw-z-base);background-image:var(--hw-noise);mix-blend-mode:overlay;pointer-events:none;position:absolute;inset:0}.hw-noise{opacity:.2}.hw-grain{opacity:.25}.hw-window{z-index:var(--hw-z-window);width:var(--hw-content-w);max-width:100%;padding:var(--hw-ring);border-radius:var(--hw-ring-r);background-image:var(--hw-grad-ring);box-shadow:var(--hw-shadow-window);animation:hw-window-in 1.5s var(--hw-ease-apple) backwards;position:relative;overflow:hidden}.hw-frame{border:1px solid rgb(var(--hw-ink-rgb) / .3);border-radius:var(--hw-frame-r);box-shadow:var(--hw-shadow-frame);overflow:hidden}.hw-bar{background-image:var(--hw-grad-bar);height:40px;box-shadow:var(--hw-shadow-bar);justify-content:space-between;align-items:center;padding:0 12px 0 20px;display:flex}.hw-bar-plus{fill:none;width:24px;height:24px;stroke:var(--hw-ink);stroke-width:1.5px;stroke-linecap:round;opacity:.2}.hw-body{z-index:var(--hw-z-chrome);padding:var(--hw-body-pad);background:rgb(var(--hw-page-rgb) / .7);flex-direction:column;justify-content:space-around;display:flex;position:relative}.hw-stack{z-index:var(--hw-z-raised);gap:var(--hw-stack-gap);flex-direction:column;display:flex;position:relative}.hw-heading{flex-direction:column;gap:3vh;display:flex}.hw-eyebrow{color:rgb(var(--hw-ink-rgb) / .5);font-size:16px;display:none}.hw-avatar{vertical-align:-.16em;width:auto;height:1.05em;transition:transform .6s var(--hw-ease-out);margin:0 .02em;display:inline-block}.hw-avatar:hover{transform:rotate(-8deg)scale(1.06)}.hw-display .hw-w{animation:hw-word-in 1.2s var(--hw-ease-apple) calc(.45s + var(--i) * 75ms) backwards;display:inline-block}.hw-display .hw-w.hw-serif{margin:0 -.1em -.22em 0;padding:0 .14em .22em 0}.hw-avatar{animation:hw-pop-in 1s var(--hw-ease-spring) calc(.45s + var(--i) * 75ms) backwards}.hw-about-col>*{animation:hw-up-in 1.1s var(--hw-ease-apple) backwards}.hw-about-col>:first-child{animation-delay:1s}.hw-about-col>:nth-child(2){animation-delay:1.12s}.hw-about-col>:nth-child(3){animation-delay:1.24s}.hw-display{font-size:var(--hw-display);font-weight:500;line-height:var(--hw-display-lh);letter-spacing:var(--hw-display-track);text-shadow:0 -5px 25px #ffffff4d}.hw-serif{-webkit-box-decoration-break:clone;box-decoration-break:clone;font-family:var(--hw-serif);letter-spacing:var(--hw-serif-track);background-image:var(--hw-grad-serif);-webkit-text-fill-color:transparent;text-shadow:0 0 30px #fff3;-webkit-background-clip:text;background-clip:text;padding-right:12px;font-style:italic;font-weight:400}.hw-about-row{column-gap:var(--hw-about-gap);grid-template-columns:1fr 1fr;display:grid}.hw-about{font-size:var(--hw-about);flex-direction:column;font-weight:500;line-height:1.4;display:flex}.hw-about-muted{color:rgb(var(--hw-ink-rgb) / .5);font-weight:400}.hw-about-col{flex-direction:column;align-items:flex-start;gap:28px;display:flex}.hw-status{letter-spacing:.2px;color:rgb(var(--hw-ink-rgb) / .7);align-items:flex-start;gap:10px;margin-bottom:-12px;font-size:15px;line-height:21px;display:flex}.hw-status .hw-live{margin-top:6.5px}.hw-hero-actions{flex-wrap:wrap;gap:12px;display:flex}.hw-fade{z-index:var(--hw-z-chrome);height:var(--hw-fade-h);padding-top:var(--hw-fade-pad);background-image:var(--hw-grad-fade);flex-direction:column;align-items:center;display:flex;position:absolute;inset:auto 0 0}.hw-scroll{border-radius:24px;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.hw-down{stroke-width:1px;width:24px;height:24px;transform:rotate(90deg)}:is(.hw-scroll,.hw-cue) .hw-down{animation:hw-nudge 2.4s 1.4s var(--hw-ease-soft) infinite}@supports (animation-timeline:scroll()){@media (width>=480px){.hw-window{animation:hw-window-in 1.5s var(--hw-ease-apple) backwards, hw-recede linear both;animation-timeline:auto,scroll(root);animation-range:normal,0 100vh}.hw-frame{animation:linear both hw-dim;animation-timeline:scroll(root);animation-range:10vh 100vh}}}.hw-cue{border-top:1px solid rgb(var(--hw-ink-rgb) / .1);color:rgb(var(--hw-ink-rgb) / .5);align-items:center;gap:6px;padding-top:16px;font-size:16px;display:none}@media (width>=1440px){.hw{--hw-body-pad:96px 72px 200px;--hw-stack-gap:72px;--hw-display:96px;--hw-display-track:-2.2px;--hw-about-gap:48px;--hw-about:24px;--hw-fade-pad:64px}}@media (width>=1920px){.hw{--hw-nav-pad:32px 48px 112px;--hw-logo:22px;--hw-hero-pad:200px 0 0;--hw-body-pad:120px 88px 280px;--hw-stack-gap:96px;--hw-display:132px;--hw-display-track:-3px;--hw-serif-track:-3px;--hw-about-gap:88px;--hw-about:32px;--hw-fade-h:280px;--hw-fade-pad:96px}}@media (width<=991px){.hw{--hw-hero-pad:160px 48px 4px;--hw-body-pad:8vw 5vw 26vw;--hw-stack-gap:7vw;--hw-display:8.2vw;--hw-serif-track:-1.5px;--hw-about-gap:2vw;--hw-about:2.2vw}}@media (width<=767px){.hw{--hw-nav-pad:24px 24px 64px;--hw-logo:18px;--hw-hero-pad:120px 24px 4px;--hw-body-pad:8vw 5vw 28vw;--hw-stack-gap:6vw;--hw-display:8.4vw;--hw-display-track:-1.5px;--hw-about:3vw;--hw-fade-h:24vw;--hw-fade-pad:4vw}.hw-chips{display:none}.hw-contact{display:flex}.hw-about-row{grid-template-columns:1fr}.hw-about-row>:first-child{display:none}}@media (width<=479px){.hw{--hw-nav-pad:20px 16px 48px;--hw-hero-pad:20vh 16px 6vh;--hw-stack-gap:6vh;--hw-display:13vw;--hw-display-lh:12vw;--hw-display-track:-.75vw;--hw-serif-track:-.25vw;--hw-about:5vw}.hw-nav-side:first-child{display:none}.hw-hero{flex-direction:column;gap:10vh}.hw-window{width:auto;box-shadow:none;background:0 0;border-radius:0;padding:0;overflow:visible}.hw-frame{box-shadow:none;border:0;border-radius:0;overflow:visible}.hw-bar,.hw-grain,.hw-fade{display:none}.hw-body{background:0 0;padding:0 8px}.hw-eyebrow,.hw-cue{display:flex}.hw-about{color:rgb(var(--hw-ink-rgb) / .9)}.hw-about-muted{font-weight:500}}
