.hub-scope{--hub-paper:#fff;--hub-ink:#121212;--hub-ink-soft:#525252;--hub-ink-mute:gray;--hub-rule:#dedede;--hub-hover:#f3f3f3;--hub-focus:#555;--hub-font-primary:var(--font-sans), ui-sans-serif, system-ui, sans-serif;--hub-font-secondary:var(--font-hub-secondary), ui-sans-serif, sans-serif;--hub-text-xs:.72rem;--hub-text-sm:.86rem;--hub-text-base:1rem;--hub-text-lg:1.12rem;--hub-text-name:1.5rem;--hub-space-xs:8px;--hub-space-sm:12px;--hub-space-md:18px;--hub-space-lg:28px;--hub-space-xl:44px;--hub-dur-fast:.12s;--hub-ease-out:cubic-bezier(.22, 1, .36, 1);background:var(--hub-paper);min-height:100vh;color:var(--hub-ink);font-family:var(--hub-font-primary);font-size:var(--hub-text-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;line-height:1.62}@supports (color:lab(0% 0 0)){.hub-scope{--hub-paper:lab(100% 0 0);--hub-ink:lab(5.26802% 0 0);--hub-ink-soft:lab(35.04% -.0000149012 0);--hub-ink-mute:lab(53.6% 0 0);--hub-rule:lab(88.4% 0 .0000119209);--hub-hover:lab(95.94% 0 0);--hub-focus:lab(36.2% 0 .00000596046)}}.hub-scope.hub-scope--with-dock .sheet,.hub-scope.hub-scope--with-dock .hub-page{padding-bottom:calc(var(--hub-space-xl) + 4.5rem)}.hub-dock{--hub-dock-paper:var(--hub-paper,#fff);--hub-dock-ink:var(--hub-ink,#121212);--hub-dock-ink-mute:var(--hub-ink-mute,gray);--hub-dock-rule:var(--hub-rule,#dedede);--hub-dock-hover:var(--hub-hover,#f3f3f3);inset-inline:0;z-index:40;padding:0 var(--hub-space-md) var(--hub-space-md);pointer-events:none;justify-content:center;display:flex;position:fixed;bottom:0}@supports (color:lab(0% 0 0)){.hub-dock{--hub-dock-paper:var(--hub-paper,lab(100% 0 0));--hub-dock-ink:var(--hub-ink,lab(5.26802% 0 0));--hub-dock-ink-mute:var(--hub-ink-mute,lab(53.6% 0 0));--hub-dock-rule:var(--hub-rule,lab(88.4% 0 .0000119209));--hub-dock-hover:var(--hub-hover,lab(95.94% 0 0))}}.dark .hub-dock{--hub-dock-paper:#090909;--hub-dock-ink:#f2f2f2;--hub-dock-ink-mute:#7a7a7a;--hub-dock-rule:#242424;--hub-dock-hover:#161616}@supports (color:lab(0% 0 0)){.dark .hub-dock{--hub-dock-paper:lab(2.47865% 0 0);--hub-dock-ink:lab(95.36% 0 0);--hub-dock-ink-mute:lab(51.28% -.0000298023 0);--hub-dock-rule:lab(14.16% 0 0);--hub-dock-hover:lab(7.22637% -.0000149012 0)}}.hub-dock__bar{pointer-events:auto;border:1px solid var(--hub-dock-rule);background:var(--hub-dock-paper);border-radius:999px;align-items:center;gap:2px;padding:5px 8px;display:inline-flex;box-shadow:0 1px 2px #1212120a,0 8px 28px -6px #1212121f;box-shadow:0 1px 2px lab(5.26802% 0 0/.04),0 8px 28px -6px lab(5.26802% 0 0/.12)}.hub-dock__link{width:42px;height:42px;color:var(--hub-dock-ink-mute);transition:background var(--hub-dur-fast,.12s) var(--hub-ease-out), color var(--hub-dur-fast,.12s) var(--hub-ease-out);border-radius:999px;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.hub-dock__link:hover{background:var(--hub-dock-hover);color:var(--hub-dock-ink)}.hub-dock__link:focus-visible{outline:2px solid var(--hub-focus,#555);outline-offset:2px}@supports (color:lab(0% 0 0)){.hub-dock__link:focus-visible{outline:2px solid var(--hub-focus,lab(36.2% 0 .00000596046))}}.hub-dock__sep{background:var(--hub-dock-rule);flex:none;width:1px;height:22px;margin:0 6px}.hub-dock__link svg{width:16px;height:16px}.hub-dock__link.is-active{color:var(--hub-dock-ink);background:var(--hub-dock-hover)}.hub-lang{background:0 0;align-items:center;gap:2px;padding:0;display:inline-flex}.hub-scope .hub-lang__btn{width:36px;height:36px;box-shadow:none;color:inherit;background:0 0;border:1.5px solid #0000;border-radius:999px;padding:0}.hub-scope .hub-lang__btn:hover{background:var(--hub-hover)}.hub-scope .hub-lang__btn[data-state=on]{border-color:var(--hub-ink);color:inherit;background:0 0}.hub-scope .hub-lang__btn:focus-visible{outline:2px solid var(--hub-focus);outline-offset:2px}.hub-scope .hub-lang__flag{width:22px;height:22px}.hub-dock .hub-theme-toggle,.dark .hub-dock .hub-theme-toggle{width:42px;height:42px;color:var(--hub-dock-ink-mute);background:0 0;border:none}.hub-dock .hub-theme-toggle:hover{background:var(--hub-dock-hover);color:var(--hub-dock-ink)}.hub-dock .hub-theme-toggle svg{width:16px;height:16px}.dark .hub-scope{--hub-paper:#090909;--hub-ink:#f2f2f2;--hub-ink-soft:#a4a4a4;--hub-ink-mute:#7a7a7a;--hub-rule:#242424;--hub-hover:#161616;--hub-focus:#9e9e9e}@supports (color:lab(0% 0 0)){.dark .hub-scope{--hub-paper:lab(2.47865% 0 0);--hub-ink:lab(95.36% 0 0);--hub-ink-soft:lab(67.52% -.0000298023 0);--hub-ink-mute:lab(51.28% -.0000298023 0);--hub-rule:lab(14.16% 0 0);--hub-hover:lab(7.22637% -.0000149012 0);--hub-focus:lab(65.2% 0 0)}}.hub-scope .sheet{max-width:1180px;padding:var(--hub-space-xl) var(--hub-space-lg) var(--hub-space-xl);grid-template:"head projects""side projects"1fr/minmax(0,380px) minmax(0,1fr);column-gap:64px;margin:0 auto;display:grid}.hub-scope .head{align-items:center;gap:var(--hub-space-md);margin-bottom:var(--hub-space-lg);grid-area:head;display:flex}.hub-scope .side{grid-area:side}.hub-scope .projects{grid-area:projects}.hub-scope .head__text{flex:1;min-width:0}.hub-scope .head__top{align-items:center;gap:var(--hub-space-md);display:flex}.hub-scope .head__top .head__socials{gap:var(--hub-space-sm);margin-left:auto}.hub-scope .head__top .head__socials svg{width:16px;height:16px}.hub-scope .head__socials{align-items:center;gap:var(--hub-space-md);margin-left:auto;display:inline-flex}.hub-scope .head__socials a{color:var(--hub-ink-mute);transition:color var(--hub-dur-fast) var(--hub-ease-out);display:inline-flex}.hub-scope .head__socials a:hover{color:var(--hub-ink)}.hub-scope .head__socials a:focus-visible{outline:2px solid var(--hub-focus);outline-offset:3px;border-radius:4px}.hub-scope .head__socials svg{width:17px;height:17px;display:block}.hub-scope .head__photo{object-fit:cover;border:1px solid var(--hub-rule);border-radius:50%;flex:none;width:64px;height:64px}.hub-scope .head__name{font-size:var(--hub-text-name);letter-spacing:-.01em;margin:0;font-weight:500;line-height:1.1}.hub-scope .head__role{font-family:var(--hub-font-primary);font-style:italic;font-size:var(--hub-text-sm);color:var(--hub-ink-soft);margin:4px 0 0}.hub-scope .grid{gap:var(--hub-space-lg) var(--hub-space-md);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.hub-scope .card{gap:var(--hub-space-sm);color:inherit;flex-direction:column;min-width:0;text-decoration:none;display:flex}.hub-scope .card__shot{aspect-ratio:16/10;border:1px solid var(--hub-rule);background:var(--hub-hover);transition:border-color var(--hub-dur-fast) var(--hub-ease-out), box-shadow .22s var(--hub-ease-out), translate .22s var(--hub-ease-out);border-radius:8px;display:block;position:relative;overflow:hidden}.hub-scope .card__shot img{object-fit:cover;object-position:top;width:100%;height:100%;display:block}.hub-scope a.card:hover .card__shot{border-color:#bebebe;border-color:lab(76.8% -.0000298023 0);translate:0 -2px;box-shadow:0 10px 28px -14px #12121259;box-shadow:0 10px 28px -14px lab(5.26802% 0 0/.35)}.hub-scope a.card:focus-visible{outline:none}.hub-scope a.card:focus-visible .card__shot{outline:2px solid var(--hub-focus);outline-offset:2px}.hub-scope .card__body{flex-direction:column;gap:2px;padding:0 2px;display:flex}.hub-scope .card__name{font-size:var(--hub-text-lg);letter-spacing:-.005em;align-items:center;gap:8px;font-weight:500;line-height:1.3;display:inline-flex}.hub-scope .card__icon{object-fit:cover;border-radius:7px;flex:none;width:26px;height:26px}.hub-scope a.card:hover .card__name>span{text-underline-offset:3px;text-decoration:underline}.hub-scope .card__meta{font-family:var(--hub-font-secondary);font-size:var(--hub-text-xs);color:var(--hub-ink-mute);transition:color var(--hub-dur-fast) var(--hub-ease-out);align-items:center;gap:5px;display:inline-flex}.hub-scope a.card:hover .card__meta{color:var(--hub-ink)}.hub-scope .card__meta svg{flex:none;width:11px;height:11px}.hub-scope .grid>.card:first-child{grid-column:1/-1}.hub-scope .grid>.card:first-child .card__name:after{content:"new";font-family:var(--hub-font-secondary);letter-spacing:.09em;text-transform:uppercase;color:#317a45;color:lab(45.7105% -33.1533 21.792);vertical-align:.25em;margin-left:.45em;font-size:.62rem;display:inline-block}.hub-scope .label{font-family:var(--hub-font-secondary);font-size:var(--hub-text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--hub-ink-mute);margin:var(--hub-space-lg) 0 var(--hub-space-xs);padding-bottom:var(--hub-space-xs);border-bottom:1px solid var(--hub-rule)}.hub-scope .label--first{margin-top:0}.hub-scope .list{flex-direction:column;display:flex}.hub-scope .row{align-items:baseline;gap:var(--hub-space-md);padding:var(--hub-space-sm) var(--hub-space-xs);margin:0 calc(var(--hub-space-xs) * -1);color:inherit;transition:background var(--hub-dur-fast) var(--hub-ease-out);border-radius:6px;text-decoration:none;display:flex}.hub-scope .row+.row{border-top:1px solid var(--hub-rule)}.hub-scope a.row:hover{background:var(--hub-hover)}.hub-scope a.row:focus-visible{outline:2px solid var(--hub-focus);outline-offset:2px}.hub-scope .row__name{min-width:0;font-size:var(--hub-text-base);letter-spacing:-.005em;flex:1;font-weight:500}.hub-scope a.row:hover .row__name{text-underline-offset:3px;text-decoration:underline}.hub-scope .row__meta{font-family:var(--hub-font-secondary);font-size:var(--hub-text-xs);color:var(--hub-ink-mute);white-space:nowrap;transition:color var(--hub-dur-fast) var(--hub-ease-out);flex:none;align-items:center;gap:5px;display:inline-flex}.hub-scope a.row:hover .row__meta{color:var(--hub-ink)}.hub-scope .row__meta svg{width:11px;height:11px}.hub-scope .video{padding-top:var(--hub-space-sm)}.hub-scope .video__head{justify-content:space-between;align-items:baseline;gap:var(--hub-space-md);margin-bottom:var(--hub-space-xs);display:flex}.hub-scope .video__title{font-size:var(--hub-text-base);letter-spacing:-.005em;text-overflow:ellipsis;white-space:nowrap;text-transform:lowercase;flex:1;min-width:0;margin:0;font-weight:400;overflow:hidden}.hub-scope .video__watch{font-family:var(--hub-font-secondary);font-size:var(--hub-text-xs);color:var(--hub-ink-mute);white-space:nowrap;transition:color var(--hub-dur-fast) var(--hub-ease-out);flex:none;align-items:center;gap:5px;text-decoration:none;display:inline-flex}.hub-scope .video__watch:hover{color:var(--hub-ink)}.hub-scope .video__watch svg{width:11px;height:11px}.hub-scope .video__frame{aspect-ratio:16/9;border:1px solid var(--hub-rule);background:var(--hub-hover);cursor:pointer;border-radius:6px;width:100%;padding:0;display:block;position:relative;overflow:hidden}.hub-scope iframe.video__frame{cursor:default;border:0}.hub-scope .video__thumb{object-fit:cover;width:100%;height:100%;display:block}.hub-scope .video__play{color:#fff;color:lab(100% 0 0);width:56px;height:56px;transition:background var(--hub-dur-fast) var(--hub-ease-out);pointer-events:none;background:#121212b3;background:lab(5.26802% 0 0/.7);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;left:50%;translate:-50% -50%}.hub-scope .video__play svg{width:22px;height:22px;margin-left:3px}.hub-scope button.video__frame:hover .video__play{background:#121212e6;background:lab(5.26802% 0 0/.9)}.hub-top-bar{top:var(--hub-space-md);right:var(--hub-space-md);z-index:50;align-items:center;gap:var(--hub-space-xs);display:inline-flex;position:fixed}.hub-top-bar .hub-lang-switcher [data-state=on]{border-color:var(--hub-ink-mute)!important}.hub-top-bar .hub-lang-switcher button{border-color:var(--hub-rule)!important}.hub-top-bar .hub-lang-switcher button:hover{background:var(--hub-hover)!important}.hub-theme-toggle{border:1px solid var(--hub-rule,#dedede);background:var(--hub-paper,#fff);width:40px;height:40px;color:var(--hub-ink,#121212);cursor:pointer;transition:background var(--hub-dur-fast,.12s) var(--hub-ease-out), border-color var(--hub-dur-fast,.12s) var(--hub-ease-out);border-radius:100%;justify-content:center;align-items:center;display:inline-flex}@supports (color:lab(0% 0 0)){.hub-theme-toggle{border:1px solid var(--hub-rule,lab(88.4% 0 .0000119209));background:var(--hub-paper,lab(100% 0 0));color:var(--hub-ink,lab(5.26802% 0 0))}}.dark .hub-theme-toggle{color:#f2f2f2;color:lab(95.36% 0 0);background:#090909;background:lab(2.47865% 0 0);border-color:#242424;border-color:lab(14.16% 0 0)}.hub-theme-toggle:hover{background:var(--hub-hover,#f3f3f3)}@supports (color:lab(0% 0 0)){.hub-theme-toggle:hover{background:var(--hub-hover,lab(95.94% 0 0))}}.hub-theme-toggle:focus-visible{outline:2px solid var(--hub-focus,#555);outline-offset:2px}@supports (color:lab(0% 0 0)){.hub-theme-toggle:focus-visible{outline:2px solid var(--hub-focus,lab(36.2% 0 .00000596046))}}.hub-scope .hub-page{max-width:720px;padding:var(--hub-space-xl) var(--hub-space-lg) var(--hub-space-xl);margin:0 auto}.hub-scope .hub-page--wide{max-width:960px}.hub-scope .hub-page-back{font-family:var(--hub-font-secondary);font-size:var(--hub-text-xs);color:var(--hub-ink-mute);margin-bottom:var(--hub-space-lg);transition:color var(--hub-dur-fast) var(--hub-ease-out);align-items:center;gap:6px;text-decoration:none;display:inline-flex}.hub-scope .hub-page-back:hover{color:var(--hub-ink)}.hub-scope .hub-page-title{font-size:var(--hub-text-name);margin:0 0 var(--hub-space-sm);letter-spacing:-.01em;font-weight:500}.hub-scope .hub-project-title{margin-bottom:var(--hub-space-sm);align-items:center;gap:14px;display:flex}.hub-scope .hub-project-title .hub-page-title{margin:0}.hub-scope .hub-project-icon{object-fit:cover;border-radius:14px;flex:none;width:56px;height:56px}.hub-scope .hub-breadcrumb{font-family:var(--hub-font-secondary);font-size:var(--hub-text-xs);color:var(--hub-ink-mute);margin-bottom:var(--hub-space-md);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.hub-scope .hub-breadcrumb a{color:var(--hub-ink-mute);transition:color var(--hub-dur-fast) var(--hub-ease-out);text-decoration:none}.hub-scope .hub-breadcrumb a:hover{color:var(--hub-ink);text-underline-offset:3px;text-decoration:underline}.hub-scope .hub-page-header{margin-bottom:var(--hub-space-lg)}.hub-scope .hub-page-lead{font-size:var(--hub-text-sm);color:var(--hub-ink-soft);margin:0 0 var(--hub-space-md);max-width:42rem;line-height:1.55}.hub-scope .hub-tags{gap:var(--hub-space-xs);flex-wrap:wrap;margin:0;padding:0;display:flex}.hub-scope .hub-tech-badge{border-color:var(--hub-rule);color:var(--hub-ink-soft);font-family:var(--hub-font-secondary);font-size:var(--hub-text-xs);box-shadow:none;background:0 0;border-radius:999px;padding:4px 10px;font-weight:400}.hub-scope .hub-tech-badge:hover{background:var(--hub-hover);color:var(--hub-ink)}.hub-scope .hub-row-with-icon{align-items:center;gap:.45em;display:inline-flex}.hub-scope .hub-row-with-icon svg{color:var(--hub-ink-soft)}.hub-scope .hub-gallery{margin:0 0 var(--hub-space-xl)}.hub-scope .hub-gallery__track{align-items:flex-start;gap:var(--hub-space-md);padding-bottom:var(--hub-space-xs);scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;display:flex;overflow-x:auto}.hub-scope .hub-gallery__slide{scroll-snap-align:center;aspect-ratio:16/10;border:1px solid var(--hub-rule);background:var(--hub-hover);border-radius:8px;flex:none;width:min(85vw,420px);overflow:hidden}.hub-scope .hub-gallery__img{object-fit:cover;object-position:top;width:100%;height:100%;display:block}.hub-scope .hub-gallery__slide--portrait{aspect-ratio:9/16;background:#000;width:min(62vw,240px)}.hub-scope .hub-gallery__video{object-fit:cover;background:#000;width:100%;height:100%;display:block}.hub-scope .hub-project-layout{gap:var(--hub-space-xl);align-items:start;display:grid}@media (min-width:900px){.hub-scope .hub-project-layout{column-gap:var(--hub-space-xl);grid-template-columns:minmax(0,1fr) minmax(0,260px)}.hub-scope .hub-aside{top:calc(var(--hub-space-xl) + 48px);position:sticky}}.hub-scope .hub-sections{gap:var(--hub-space-lg);flex-direction:column;display:flex}.hub-scope .hub-section__label{font-family:var(--hub-font-secondary);font-size:var(--hub-text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--hub-ink-mute);margin:0 0 var(--hub-space-xs);padding-bottom:var(--hub-space-xs);border-bottom:1px solid var(--hub-rule);font-weight:500}.hub-scope .hub-section__body{font-size:var(--hub-text-sm);color:var(--hub-ink-soft);margin:0;line-height:1.62}.hub-scope .hub-work-list{flex-direction:column;gap:0;display:flex}.hub-scope .hub-exp-accordion{border-top:1px solid var(--hub-rule)}.hub-scope .hub-exp-accordion:first-child{border-top:none}.hub-scope .hub-exp-accordion__trigger{justify-content:space-between;align-items:flex-start;gap:var(--hub-space-md);width:100%;padding:var(--hub-space-md) 0;color:inherit;text-align:left;cursor:pointer;font:inherit;background:0 0;border:none;display:flex}.hub-scope .hub-exp-accordion__trigger:hover .hub-exp-accordion__title{color:var(--hub-ink)}.hub-scope .hub-exp-accordion__trigger:focus-visible{outline:2px solid var(--hub-focus);outline-offset:2px;border-radius:4px}.hub-scope .hub-exp-accordion__head{flex:1;min-width:0}.hub-scope .hub-exp-accordion__title{font-size:var(--hub-text-lg);letter-spacing:-.005em;transition:color var(--hub-dur-fast) var(--hub-ease-out);align-items:center;gap:8px;margin:0 0 4px;font-weight:500;display:inline-flex}.hub-scope .hub-exp-accordion__meta{font-family:var(--hub-font-secondary);font-size:var(--hub-text-xs);color:var(--hub-ink-mute);margin:0}.hub-scope .hub-exp-accordion__chevron{width:16px;height:16px;color:var(--hub-ink-mute);flex-shrink:0;margin-top:4px;transition:transform .28s cubic-bezier(.16,1,.3,1)}.hub-scope .hub-exp-accordion__chevron--open{transform:rotate(90deg)}.hub-scope .hub-exp-accordion__panel{overflow:hidden}.hub-scope .hub-exp-accordion__body{padding-bottom:var(--hub-space-md);font-size:var(--hub-text-sm);color:var(--hub-ink-soft);line-height:1.62}.hub-scope .hub-exp-accordion__body>p{margin:0 0 var(--hub-space-sm)}.hub-scope .hub-exp-accordion__list{margin:0;padding-left:1.25rem;list-style:outside}.hub-scope .hub-exp-accordion__list li+li{margin-top:.35rem}.hub-scope .hub-exp-accordion__active{flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex;position:relative}.hub-scope .hub-exp-accordion__active-ping{opacity:.35;background:#0f74c5;background:lab(47.0007% -3.24479 -50.2754);border-radius:50%;width:16px;height:16px;animation:1.5s cubic-bezier(0,0,.2,1) infinite hub-exp-ping;position:absolute}.hub-scope .hub-exp-accordion__active-dot{background:#0f74c5;background:lab(47.0007% -3.24479 -50.2754);border-radius:50%;width:8px;height:8px;position:relative}@keyframes hub-exp-ping{75%,to{opacity:0;transform:scale(1.8)}}.hub-scope .sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (max-width:900px){.hub-scope .sheet{max-width:640px;padding:var(--hub-space-xl) var(--hub-space-md) var(--hub-space-lg);grid-template:"head""projects""side"/minmax(0,1fr)}}@media (max-width:560px){.hub-scope .grid{grid-template-columns:minmax(0,1fr)}.hub-scope .head__text{flex-direction:column;display:flex}.hub-scope .head__top{display:contents}.hub-scope .head__top .head__socials{margin:var(--hub-space-xs) 0 0;gap:var(--hub-space-md);order:3}}@media (max-width:480px){.hub-scope .sheet{padding:var(--hub-space-lg) var(--hub-space-md)}.hub-scope .row{flex-direction:column;gap:2px}.hub-scope .row__meta{order:2}}@media (prefers-reduced-motion:reduce){.hub-scope *{transition-duration:1ms!important}}
