body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Proxima Nova,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}*{-ms-overflow-style:none;scrollbar-width:none}::-webkit-scrollbar{display:none;height:0;width:0}.App{align-items:center;background-color:#fafafa;display:flex;height:100vh;justify-content:center;transition:background-color .4s ease;width:100%}.App-header{display:flex;height:80%;max-width:1500px;transition:width .5s ease,height .5s ease,padding-top .5s ease;width:80%}.LeftCl{align-items:start;display:flex;flex-direction:column;flex-shrink:0;gap:5px;height:100%;justify-content:center;overflow:hidden;transition:width .5s ease,opacity .4s ease,transform .5s ease;width:50%}.LeftCl--hidden{opacity:0;transform:translateX(-24px);width:0!important}.LeftCl-text{display:flex;flex-direction:column;gap:20px;height:320px;width:100%}.Name{font-size:52px}.Name,.bio{margin-left:150px}.bio{color:#a0a0a0;font-size:20px;margin-top:0;padding:10px;width:70%}.bio-italic{font-style:italic}.Name,.bio{animation:textSwapIn .5s ease}@keyframes textSwapIn{0%{opacity:0}to{opacity:1}}@keyframes introUp{0%{opacity:0;translate:0 14px}to{opacity:1;translate:0 0}}@keyframes introFade{0%{opacity:0}to{opacity:1}}.App--intro .glass-shell,.App--intro .topbar{animation:introFade .7s ease both}.App--intro .sections li{animation:introUp .6s cubic-bezier(.22,1,.36,1) both;animation-delay:.1s;animation-delay:calc(.1s + var(--i, 0)*.05s)}.App--intro .Name{animation:textSwapIn .9s ease .25s both}.App--intro .bio{animation:textSwapIn .9s ease .42s both}.App--intro .c1{animation:introUp .8s cubic-bezier(.22,1,.36,1) .55s both}.App--intro .c2{animation:introUp .8s cubic-bezier(.22,1,.36,1) .68s both}.App--intro .c3{animation:introUp .8s cubic-bezier(.22,1,.36,1) .81s both}.App--intro .profilePic-wrapper{filter:blur(10px);opacity:0;scale:.92}.App--intro.App--avatar-in .profilePic-wrapper{filter:blur(0);opacity:1;scale:1;transition:opacity .9s ease,scale 1.2s cubic-bezier(.22,1,.36,1),filter .9s ease}@media (prefers-reduced-motion:reduce){.App--intro .c1,.App--intro .c2,.App--intro .c3,.App--intro .glass-shell,.App--intro .sections li,.App--intro .topbar{animation:none}.App--intro .Name,.App--intro .bio{animation-delay:0s}.App--intro .profilePic-wrapper{filter:none;scale:1}.App--intro.App--avatar-in .profilePic-wrapper{transition:opacity .4s ease}}.RightCl{align-items:center;display:flex;flex-direction:column;height:108%;min-width:0;transition:width .5s ease;width:50%}.profilePic-wrapper{animation:subtleMove 10s ease-in-out infinite alternate;border-radius:50%;box-shadow:0 4px 8px #0003;flex-shrink:0;height:350px;margin-left:140px;overflow:hidden;position:relative;width:350px}.pic-layer{height:100%;left:0;object-fit:cover;position:absolute;top:0;transition:opacity .5s ease;width:100%}.pic-layer.hidden{opacity:0}@keyframes subtleMove{0%{transform:translate(0)}50%{transform:translate(10px,10px)}to{transform:translate(0)}}.sections{align-items:center;border-bottom:none;color:#2e2e2e;cursor:pointer;display:flex;flex-direction:row;gap:30px;justify-content:space-between;list-style-type:none;margin:0;padding:0;width:100%}.RightCl>.sections{flex-wrap:wrap;justify-content:flex-start;row-gap:14px}.sections li{border-bottom:2px solid #0000;line-height:1;padding-bottom:3px;text-align:center;transition:all .5s}.sections li.active,.sections li:hover{border-bottom:2px solid #000;color:#000}.sections li.clicked{animation:navClickBounce .5s}@keyframes navClickBounce{0%{animation-timing-function:ease-in;transform:scale(1)}50%{animation-timing-function:ease-out;transform:scale(.8)}to{transform:scale(1)}}.c3,.cMaster{transition:opacity .3s ease}.section-fading{opacity:0}.cMaster{display:flex;flex-flow:row wrap;height:50%;justify-content:center;width:100%}.c1,.c2{height:85%;margin:auto;width:45%}.c1,.c2,.c3{background-color:#0000001a;border-radius:10px}.c3{height:60%;width:95%}.Name,.bio,.sections,.sections li{transition:color .4s ease,border-color .4s ease,background-color .4s ease}.c1,.c2,.c3{transition:background-color .4s ease,opacity .3s ease}.topbar{align-items:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);background:#ffffff8c;box-shadow:0 2px 8px #0000000f;box-sizing:border-box;display:flex;gap:12px;left:0;padding:10px 20px;position:fixed;top:0;transition:background-color .4s ease;width:100%;z-index:30}body.dark .topbar{background:#28282a8c}.theme-toggle{align-items:center;background:none;border:none;color:#333;cursor:pointer;display:flex;justify-content:center;margin-left:auto;padding:6px;transition:transform .3s ease,color .4s ease}.theme-toggle:hover{transform:scale(1.15)}body.dark .theme-toggle{color:#f1f1f1}.topbar-nav{flex:1 1 auto;gap:20px;justify-content:flex-start;margin:0;min-width:0;overflow-x:auto;padding:0;width:auto}.topbar-nav li{flex-shrink:0;font-size:14px;white-space:nowrap}body.dark .App{background-color:#252527}body.dark .Name{color:#f1f1f1}body.dark .bio{color:#8c8c8c}body.dark .sections{color:#c8c8c8}body.dark .sections li.active,body.dark .sections li:hover{border-bottom-color:#fff;color:#fff}body.dark .c1,body.dark .c2,body.dark .c3{background-color:#ffffff14}body.dark .hamburger{color:#dcdcdc}.App-header--full{height:100%;max-width:100%;width:95%}.RightCl--full{align-items:stretch;height:100%;width:100%}@media (max-width:800px){.LeftCl--hidden{display:none!important}}@media (min-width:1451px){.topbar{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;box-shadow:none!important}.topbar,body.dark .topbar{background:#0000!important}.App--full-width .topbar{pointer-events:none}.App--full-width .topbar .theme-toggle{display:none}.App-header--full{box-sizing:border-box;padding-top:14px}}.sections li.nav-theme-toggle{align-items:center;display:flex;margin-left:auto}.sections li.nav-theme-toggle,.sections li.nav-theme-toggle:hover{border-bottom:2px solid #0000!important}.sections li.nav-theme-toggle .theme-toggle{margin-left:0}@media (min-width:1451px){.App:not(.App--full-width) .LeftCl{width:44%}.App:not(.App--full-width) .RightCl{width:56%}.App:not(.App--full-width) .profilePic-wrapper{margin-left:16px}.App:not(.App--full-width) .Name{margin-bottom:4px;margin-left:24px}.App:not(.App--full-width) .bio{margin-left:14px;width:80%}.App:not(.App--full-width) .RightCl>.sections{column-gap:30px;justify-content:center;width:95%}.App:not(.App--full-width) .cMaster{flex-wrap:nowrap;gap:30px;margin:20px auto 0;width:95%}.App:not(.App--full-width) .c1{flex:0 0 42.2%;margin:auto 0 0;width:auto}.App:not(.App--full-width) .c2{flex:1 1 auto;margin:auto 0 0;width:auto}.App:not(.App--full-width) .c3.specialPosition{margin:30px auto 0;width:95%}.App:not(.App--full-width) .bioSheet-wrapper{margin:0 auto;width:95%}}.hamburger{color:#818181;display:none}@media (max-width:1450px){.App{box-sizing:border-box;flex-direction:column;justify-content:flex-start;min-height:100vh;padding-top:64px;width:100%}.App,.App-header{display:flex;height:auto}.App-header{margin-top:10px;width:90%}.LeftCl{align-items:start;display:flex;flex-direction:column;gap:30px;justify-content:flex-start;width:50%}.LeftCl,.LeftCl-text,.RightCl{height:auto}.RightCl{width:50%}.profilePic-wrapper{animation:none;height:300px;margin:0 0 0 35px;width:300px}.Name{font-size:clamp(34px,5.2vw,60px);margin-bottom:0;overflow-wrap:break-word}.Name,.bio{margin-left:35px;margin-top:0}.bio{color:#a0a0a0;font-size:large;padding:0;width:80%}.c1,.c2{height:auto;margin:50px auto 0;min-height:220px;width:90%}.c3{margin:50px auto 90px;min-height:200px}.bioSheet,.c3{height:auto;width:86%}.bioSheet{margin:30px auto 0}.App-header--full,.RightCl--full{width:100%}}@media (min-width:801px) and (max-width:960px){.App-header:not(.App-header--full){flex-direction:column;gap:10px;margin:24px auto 0;width:88%}.LeftCl{grid-column-gap:32px;grid-row-gap:22px;align-items:center;column-gap:32px;display:grid;grid-template-areas:"pic name" "bio bio";grid-template-columns:auto 1fr;row-gap:22px;width:100%}.LeftCl--hidden{display:none!important}.LeftCl-text{display:contents}.profilePic-wrapper{grid-area:pic;height:190px;margin:0;width:190px}.Name{font-size:clamp(34px,5.4vw,48px);grid-area:name;margin:0}.bio{grid-area:bio;margin:0}.RightCl,.bio{width:100%}.c1,.c2{margin:36px auto 0;min-height:240px;width:47%}.c3{margin:36px auto 90px;width:88%}.bioSheet{margin:30px 0 40px;width:100%}.topbar-nav{gap:16px}.topbar-nav li{font-size:13px}.RightCl:not(.RightCl--full) .project-grid-wrapper{margin-top:30px;max-height:none;overflow:visible;padding:0}}@media (max-width:1450px) and (max-height:500px) and (orientation:landscape){.profilePic-wrapper{height:150px;width:150px}.Name{font-size:34px}.LeftCl{gap:16px}.project-grid-wrapper{max-height:none;overflow:visible;padding-bottom:24px}}@media (orientation:landscape) and (max-width:1200px){.App{display:flex;flex-direction:column;height:auto;min-height:100vh;width:100%}}@media (max-width:800px){.App{box-sizing:border-box;min-height:100vh;padding-bottom:40px}.App,.App-header{flex-direction:column;height:auto;justify-content:flex-start;width:100%}.App-header{display:flex;gap:5px}.App--full-width{padding-top:56px}.App--full-width .App-header{margin-top:0}.LeftCl{grid-column-gap:18px;grid-row-gap:16px;align-items:center;column-gap:18px;display:grid;grid-template-areas:"pic name" "bio bio";grid-template-columns:auto 1fr;height:auto;margin-top:10px;row-gap:16px;text-align:left;width:100%}.LeftCl-text{display:contents}.RightCl{height:auto;width:100%}.glass-shell{--bar-h:54px;--col-w:280px;backdrop-filter:blur(22px) saturate(180%);-webkit-backdrop-filter:blur(22px) saturate(180%);background:linear-gradient(135deg,#ffffff3d,#ffffff14);clip-path:polygon(0 0,100% 0,100% var(--bar-h),var(--col-w) var(--bar-h),var(--col-w) var(--bar-h),0 var(--bar-h));filter:drop-shadow(0 6px 22px rgba(31,38,135,.18));height:100%;left:0;position:fixed;top:0;transition:clip-path .5s cubic-bezier(.22,1,.36,1);width:100%;will-change:clip-path;z-index:30}.glass-shell.open{clip-path:polygon(0 0,100% 0,100% var(--bar-h),var(--col-w) var(--bar-h),var(--col-w) 100%,0 100%)}.glass-shell-bar{align-items:center;box-sizing:border-box;display:flex;gap:12px;height:var(--bar-h);left:0;padding:0 18px;position:absolute;top:0;width:100%}.glass-shell-bar .theme-toggle{margin-left:auto}.glass-shell-title{align-items:center;color:#141414eb;display:flex;font-size:16px;font-weight:600;height:var(--bar-h);left:50%;letter-spacing:.04em;max-width:60%;overflow:hidden;pointer-events:none;position:absolute;text-overflow:ellipsis;top:0;transform:translateX(-50%);white-space:nowrap}body.dark .glass-shell-title{color:#f5f5f5f2}.hamburger{all:unset;align-items:center;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;gap:5px;height:28px;justify-content:center;width:28px}.hamburger-bar{background:#464646;border-radius:2px;display:block;height:2px;transition:transform .4s cubic-bezier(.68,-.3,.32,1.3),opacity .25s ease,background .4s ease;width:24px}.hamburger.open .hamburger-bar:first-child{transform:translateY(7px) rotate(45deg)}.hamburger.open .hamburger-bar:nth-child(2){opacity:0;transform:scaleX(.2)}.hamburger.open .hamburger-bar:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.glass-shell-nav{box-sizing:border-box;color:#373737;display:flex;flex-direction:column;gap:10px;height:calc(100% - var(--bar-h));justify-content:flex-start;left:0;list-style:none;margin:0;opacity:0;overflow-y:auto;padding:0 20px 40px;pointer-events:none;position:absolute;top:var(--bar-h);transition:opacity .3s ease;width:var(--col-w)}.glass-shell-nav li{flex-shrink:0}.glass-shell-nav li:first-child{margin-top:auto}.glass-shell-nav li:last-child{margin-bottom:auto}.glass-shell-nav.open{opacity:1;pointer-events:auto}.glass-shell-nav li{border:none;border-radius:12px;box-sizing:border-box;display:block;font-size:19px;opacity:0;overflow:hidden;padding:12px 16px;position:relative;text-align:center;transform:translateX(-18px);transition:color .3s ease,transform .4s cubic-bezier(.22,1,.36,1),opacity .4s ease;width:100%}.glass-shell-nav.open li{opacity:1;transform:translateX(0)}.glass-shell-nav.open li:first-child{transition-delay:.1s}.glass-shell-nav.open li:nth-child(2){transition-delay:.15s}.glass-shell-nav.open li:nth-child(3){transition-delay:.2s}.glass-shell-nav.open li:nth-child(4){transition-delay:.25s}.glass-shell-nav.open li:nth-child(5){transition-delay:.3s}.glass-shell-nav.open li:nth-child(6){transition-delay:.35s}.glass-shell-nav.open li:nth-child(7){transition-delay:.4s}.glass-shell-nav.open li:nth-child(8){transition-delay:.45s}.glass-shell-nav.open li:nth-child(9){transition-delay:.5s}.glass-shell-nav.open li:nth-child(10){transition-delay:.55s}.glass-shell-nav.open li:nth-child(n+11){transition-delay:.6s}.glass-shell-nav li.clicked{animation:navClickBounce .5s}.glass-shell-nav li:before{background:#0000000f;border-radius:12px;content:"";inset:0;opacity:0;position:absolute;transition:opacity .3s ease;z-index:-1}.glass-shell-nav li:hover:before{opacity:1}.glass-shell-nav li.active,.glass-shell-nav li:hover{color:#000}.glass-shell-nav li.active{font-weight:600}.glass-shell-nav li.active:before{background:#0000001a;opacity:1}.glass-shell-nav li.on-dark,.glass-shell-nav li.on-dark.active,.glass-shell-nav li.on-dark:hover{color:#fff}.glass-shell-nav li.on-dark.active:before{background:#ffffff29}.Name{font-size:28px;grid-area:name;margin:0}.profilePic-wrapper{animation:none;grid-area:pic;height:130px;margin-left:35px;margin-top:0;width:130px}.bio{border-radius:0;box-shadow:none;font-size:16px;font-weight:500;grid-area:bio;margin:14px 0 0 35px;padding:0;text-align:left;width:80%}.cMaster{align-items:center;display:flex;flex-direction:column;gap:20px;height:auto;margin-top:0;width:100%}.c1,.c2,.c3{background-color:rgba(0,0,0,.178);border-radius:20px;display:block;min-height:150px;width:85%}}@media (max-width:360px){.profilePic-wrapper{height:100px;margin-left:20px;width:100px}.Name{font-size:23px;min-width:0;overflow-wrap:break-word}.bio{margin-left:20px;width:calc(100% - 40px)}.LeftCl{column-gap:14px}}@media (max-width:800px){body.dark .glass-shell{background:linear-gradient(135deg,#46464c66,#1e1e2229);filter:drop-shadow(0 6px 22px rgba(0,0,0,.4))}body.dark .hamburger-bar{background:#e1e1e1}body.dark .glass-shell-nav{color:#d2d2d2}body.dark .glass-shell-nav li.active,body.dark .glass-shell-nav li:hover{color:#fff}body.dark .glass-shell-nav li:before{background:#ffffff1f}body.dark .c1,body.dark .c2,body.dark .c3{background-color:#ffffff1a}}.nav-scrim{display:none}@media (max-width:800px){.nav-scrim{backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);background:#00000040;display:block;inset:0;opacity:0;pointer-events:none;position:fixed;transition:opacity .4s ease;z-index:9}.nav-scrim.open{opacity:1;pointer-events:auto}}@media (prefers-reduced-motion:reduce){.glass-shell,.glass-shell-nav,.glass-shell-nav li,.hamburger-bar,.nav-scrim{transition-duration:.01ms!important}}@media (min-width:1451px) and (max-height:900px){.App:not(.App--full-width){align-items:flex-start;box-sizing:border-box;height:auto;min-height:100vh;padding:90px 0 60px}.App:not(.App--full-width) .App-header,.App:not(.App--full-width) .LeftCl,.App:not(.App--full-width) .RightCl,.App:not(.App--full-width) .cMaster{height:auto}.App:not(.App--full-width) .c1,.App:not(.App--full-width) .c2{height:auto;min-height:260px}.App:not(.App--full-width) .c3{height:auto;min-height:220px}}.project-grid-wrapper{align-self:center;box-sizing:border-box;margin:24px auto 0;max-height:calc(100vh - 160px);max-width:1040px;overflow-y:auto;padding:0 12px;transition:opacity .3s ease;width:100%}.project-grid{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(3,1fr)}.grid-cell{animation:gridCellIn .45s ease both;aspect-ratio:1;background:#0000000d;border:none;border-radius:12px;cursor:pointer;display:block;overflow:hidden;padding:0;position:relative}@keyframes gridCellIn{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.grid-cell{animation:none}}.grid-cover{display:block;height:100%;object-fit:cover;width:100%}.grid-overlay{align-items:flex-end;background:linear-gradient(0deg,#000000b3 0,#0000 55%);box-sizing:border-box;display:flex;inset:0;opacity:0;padding:12px;position:absolute;transition:opacity .3s ease}.grid-cell:focus-visible .grid-overlay,.grid-cell:hover .grid-overlay{opacity:1}.grid-title{color:#fff;font-size:14px;font-weight:600;line-height:1.3;text-align:left;text-shadow:0 1px 3px #00000080}.grid-cell:focus-visible{outline:2px solid #4a90d9;outline-offset:2px}.grid-state{color:#a0a0a0;font-size:16px;padding:40px 0;text-align:center}@media (max-width:1450px){.project-grid-wrapper{max-height:calc(100vh - 150px);padding:0 24px}}@media (max-width:800px){.project-grid-wrapper{margin-top:0;max-height:calc(100vh - 70px);padding:0 12px}.RightCl:not(.RightCl--full) .project-grid-wrapper{margin-top:24px}.project-grid{gap:6px}.grid-cell{border-radius:8px}.grid-title{font-size:12px}}body.dark .grid-cell{background:#ffffff0d}body.dark .grid-state{color:#8c8c8c}.modal-overlay{align-items:center;animation:modalFadeIn .3s ease;backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);background:#1212164d;box-sizing:border-box;display:flex;inset:0;justify-content:center;outline:none;overflow:hidden;padding:20px;position:fixed;z-index:100}.modal-overlay.closing{animation:modalFadeOut .4s ease forwards}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalFadeOut{0%{opacity:1}to{opacity:0}}.modal-content{animation:modalEnter .5s cubic-bezier(.34,1.32,.46,1) both;backdrop-filter:blur(22px) saturate(180%);-webkit-backdrop-filter:blur(22px) saturate(180%);background:linear-gradient(135deg,#ffffff3d,#ffffff14);border:1px solid #ffffff59;border-radius:16px;box-shadow:0 18px 50px #1f268738,inset 0 1px 0 #ffffff73;box-sizing:border-box;color:#141416;max-height:90vh;max-width:800px;overflow-y:auto;padding:32px;position:relative;width:100%}.modal-overlay.closing .modal-content{animation:modalExit .4s cubic-bezier(.55,0,.78,.2) forwards}@keyframes modalEnter{0%{opacity:0;transform:translateX(110%)}to{opacity:1;transform:translateX(0)}}@keyframes modalExit{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-110%)}}@media (prefers-reduced-motion:reduce){.modal-content{animation:modalFadeIn .2s ease both}.modal-overlay.closing .modal-content{animation:modalFadeOut .2s ease forwards}}.modal-close{background:none;border:none;border-radius:4px;color:#141418b3;cursor:pointer;font-size:18px;line-height:1;padding:4px 8px;position:absolute;right:16px;top:16px;transition:color .2s ease,background .2s ease}.modal-close:hover{background:#ffffff59;color:#000}.modal-title{font-size:26px;margin:0 40px 12px;text-align:center}.modal-description{color:#141418c7;font-size:15px;line-height:1.65;margin:0 0 16px;text-align:center;white-space:pre-line}.modal-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}.modal-tag{background:#ffffff52;border:1px solid #ffffff73;border-radius:20px;color:#141418d1;font-size:12px;padding:4px 11px}.modal-media-list{display:flex;flex-direction:column;gap:0}.modal-media-item{width:100%}.modal-image{border-radius:0;display:block;height:auto;width:100%}.modal-caption{color:#141418a6;font-size:13px;margin:8px 0 0;text-align:center}.modal-video-embed{border-radius:8px;height:0;overflow:hidden;padding-bottom:56.25%;position:relative}.modal-video-embed iframe{border:none;height:100%;inset:0;position:absolute;width:100%}.modal-media-link{background:#ffffff47;border:1px solid #fff6;border-radius:10px;box-sizing:border-box;padding:12px 16px}.modal-link{color:#0057c2;font-size:15px;text-decoration:none;word-break:break-all}.modal-link:hover{text-decoration:underline}.sw-chip{align-items:center;backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%);background:linear-gradient(140deg,#ffffff9e,#ffffff29);border:1px solid #fff9;border-radius:15px;box-shadow:0 8px 22px #0f142d2e,inset 0 1px 1px #ffffffd9,inset 0 -1px 1px #ffffff2e;box-sizing:border-box;color:#1c1c1e;display:inline-flex;font-size:14px;font-weight:700;height:46px;isolation:isolate;justify-content:center;letter-spacing:-.02em;line-height:1;position:relative;transition:transform .35s cubic-bezier(.22,1,.36,1),box-shadow .35s ease;width:46px}.sw-chip:before{background:radial-gradient(120% 70% at 25% 0,#ffffff8c,#0000 60%);border-radius:14px;content:"";inset:1px;pointer-events:none;position:absolute;z-index:-1}.modal-software{align-items:center;border-top:1px solid #ffffff59;display:flex;flex-wrap:wrap;gap:10px;justify-content:center;list-style:none;margin:28px 0 0;padding:18px 0 0}.sw-pill{align-items:center;background:#ffffff38;border:1px solid #fff6;border-radius:999px;color:#141418d9;display:inline-flex;font-size:13px;gap:9px;padding:4px 14px 4px 4px}.sw-pill .sw-chip{box-shadow:0 3px 10px #0f142d24,inset 0 1px 1px #ffffffd9;font-size:12px;height:34px;width:34px}.sw-pill .sw-chip,.sw-pill .sw-chip:before{border-radius:999px}.modal-software-rail{align-items:center;animation:railIn .6s cubic-bezier(.22,1,.36,1) .25s both;display:none;flex-direction:column;gap:12px;left:calc(50% + 424px);list-style:none;margin:0;padding:0;position:absolute;top:50%;transform:translateY(-50%)}@keyframes railIn{0%{opacity:0;translate:12px 0}to{opacity:1;translate:0 0}}.modal-overlay.closing .modal-software-rail{animation:modalFadeOut .3s ease forwards}.sw-chip--rail{cursor:default}.sw-chip--rail:hover{box-shadow:0 12px 28px #0f142d42,inset 0 1px 1px #ffffffe6,inset 0 -1px 1px #fff3;transform:translateY(-3px) scale(1.05)}.sw-tip{backdrop-filter:blur(14px) saturate(180%);-webkit-backdrop-filter:blur(14px) saturate(180%);background:#ffffffb8;border:1px solid #ffffffb3;border-radius:10px;box-shadow:0 6px 18px #0f142d2e;color:#1c1c1e;font-size:12px;font-weight:600;letter-spacing:0;opacity:0;padding:6px 11px;pointer-events:none;position:absolute;right:calc(100% + 10px);top:50%;transition:opacity .2s ease,translate .3s cubic-bezier(.22,1,.36,1);translate:6px -50%;white-space:nowrap}.sw-chip--rail:hover .sw-tip{opacity:1;translate:0 -50%}@media (min-width:1000px){.modal-software-rail{display:flex}.modal-software{display:none}}@media (prefers-reduced-motion:reduce){.modal-software-rail{animation:none}.sw-chip,.sw-tip{transition:none}}@media (max-width:800px){.modal-content{border-radius:8px;max-height:95vh;padding:20px}.modal-title{font-size:20px}}body.dark .modal-content{background:linear-gradient(135deg,#46464c66,#1e1e2229);border-color:#ffffff24;box-shadow:0 18px 50px #00000073,inset 0 1px 0 #ffffff1a;color:#f1f1f1}body.dark .modal-close{color:#999}body.dark .modal-close:hover{background:#ffffff1a;color:#fff}body.dark .modal-description{color:#f1f1f1c7}body.dark .modal-tag{background:#ffffff1a;border-color:#ffffff24;color:#ddd}body.dark .modal-caption{color:#f1f1f19e}body.dark .modal-media-link{background:#ffffff12;border-color:#ffffff1f}body.dark .modal-software{border-top-color:#ffffff1f}body.dark .sw-chip{background:linear-gradient(140deg,#fff3,#ffffff0d);border-color:#ffffff2e;box-shadow:0 8px 22px #00000059,inset 0 1px 1px #ffffff47;color:#f2f2f4}body.dark .sw-chip:before{background:radial-gradient(120% 70% at 25% 0,#ffffff2e,#0000 60%)}body.dark .sw-pill{background:#ffffff12;border-color:#ffffff1f;color:#f1f1f1e0}body.dark .sw-tip{background:#323238bf;border-color:#ffffff24;color:#f2f2f4}body.dark .modal-link{color:#4da3ff}.compare-box{border-radius:0;overflow:hidden;position:relative;user-select:none;-webkit-user-select:none;width:100%}.compare-box.is-dragging{cursor:grabbing}.compare-img{display:block;height:auto;pointer-events:none;width:100%}.compare-img--overlay{height:100%;inset:0;object-fit:cover;position:absolute}.compare-divider{background:#fffffff2;bottom:0;box-shadow:0 0 8px #00000073;pointer-events:none;position:absolute;top:0;transform:translateX(-1px);width:2px}.compare-handle{align-items:center;backdrop-filter:blur(14px) saturate(180%);-webkit-backdrop-filter:blur(14px) saturate(180%);background:linear-gradient(145deg,#ffffffc7,#ffffff6b);border:1px solid #ffffffd9;border-radius:50%;box-shadow:0 6px 18px #00000052,inset 0 1px 1px #ffffffe6;color:#1c1c1e;cursor:grab;display:flex;height:44px;justify-content:center;left:50%;outline:none;pointer-events:auto;position:absolute;top:50%;touch-action:none;transition:scale .25s cubic-bezier(.22,1,.36,1),box-shadow .25s ease;translate:-50% -50%;width:44px}.compare-handle:before{border-radius:50%;content:"";inset:-10px;position:absolute}.compare-handle svg{fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.compare-handle:hover{scale:1.08}.compare-box.is-dragging .compare-handle{box-shadow:0 3px 10px #00000059,inset 0 1px 1px #ffffffe6;cursor:grabbing;scale:.94}.compare-handle:focus-visible{box-shadow:0 0 0 3px #4a90d9e6,0 6px 18px #00000052}@media (max-width:800px){.compare-handle{height:38px;width:38px}}@media (prefers-reduced-motion:reduce){.compare-handle{transition:none}}.sites-wrapper{align-self:center;box-sizing:border-box;margin:24px auto 0;max-height:calc(100vh - 160px);overflow-y:auto;padding:0 clamp(12px,1.6vw,32px) 40px;transition:opacity .3s ease;width:100%}.sites-list{display:flex;flex-direction:column;gap:clamp(16px,2.4vw,32px)}.site-card{align-items:center;animation:siteIn .6s cubic-bezier(.22,1,.36,1) both;background:#fff;border:1px solid #0000000f;border-radius:22px;box-shadow:0 14px 40px #14182812;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);overflow:hidden}@keyframes siteIn{0%{opacity:0;translate:0 18px}to{opacity:1;translate:0 0}}.site-shot{aspect-ratio:2/1;background:#e9e9ec;border:1px solid #00000012;border-radius:14px;color:inherit;display:block;isolation:isolate;margin:12px 0 12px 12px;overflow:hidden;padding:0;text-decoration:none}.site-shot-img{display:block;height:100%;object-fit:cover;object-position:top center;transition:scale .6s cubic-bezier(.22,1,.36,1);width:100%}a.site-shot:hover .site-shot-img{scale:1.025}.site-info{justify-content:center;padding:clamp(18px,2vw,40px) clamp(22px,3.4vw,72px)}.site-head-text,.site-info{display:flex;flex-direction:column;min-width:0}.site-head-text{gap:4px}.site-title{color:#111;font-size:clamp(22px,2.1vw,30px);font-weight:700;line-height:1.15;margin:0}.site-domain{color:#8a8a90;font-size:13px;letter-spacing:.01em}.site-body{display:grid;grid-template-rows:1fr}.site-body-inner{display:flex;flex-direction:column;gap:12px;min-height:0;padding-top:12px}.site-desc{-webkit-line-clamp:5;-webkit-box-orient:vertical;color:#141418b8;display:-webkit-box;font-size:15px;line-height:1.6;margin:0;overflow:hidden;white-space:pre-line}.site-software,.site-tags{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}.site-tags li{background:#f2f2f4;border-radius:20px;color:#4a4a50;font-size:12px;padding:4px 11px}.site-software .sw-pill{background:#f6f6f8;border-color:#0000000f}.site-software .sw-pill .sw-chip{box-shadow:0 2px 6px #0f142d1f,inset 0 1px 1px #ffffffe6}.site-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px}.site-btn{align-items:center;background:#0000;border:1px solid #00000024;border-radius:999px;color:#111;cursor:pointer;display:inline-flex;font:inherit;font-size:14px;font-weight:600;gap:8px;justify-content:center;padding:11px 18px;text-decoration:none;transition:background .2s ease,transform .25s cubic-bezier(.22,1,.36,1)}.site-btn:hover{background:#0000000d;transform:translateY(-1px)}.site-btn--primary{background:#111;border-color:#111;color:#fff}.site-btn--primary:hover{background:#2a2a2e}.site-btn svg,.site-chevron{fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;height:16px;width:16px}.site-btn:focus-visible,.site-head:focus-visible,.site-shot:focus-visible{outline:2px solid #4a90d9;outline-offset:3px}@media (max-width:1450px){.sites-wrapper{max-height:calc(100vh - 150px)}}@media (max-width:1199px){.site-card{align-items:stretch;border-radius:18px;box-shadow:0 8px 26px #14182812;grid-template-columns:minmax(0,1fr)}.site-shot{-webkit-tap-highlight-color:transparent;aspect-ratio:2/1;border-radius:12px;cursor:pointer;font:inherit;margin:8px 8px 0;width:calc(100% - 16px)}.site-info{padding:0}.site-head{-webkit-tap-highlight-color:transparent;all:unset;align-items:center;box-sizing:border-box;cursor:pointer;display:flex;gap:12px;justify-content:space-between;padding:12px 16px 14px}.site-title{font-size:19px}.site-domain{font-size:12px}.site-chevron{color:#555;flex-shrink:0;height:20px;transition:transform .35s cubic-bezier(.22,1,.36,1);width:20px}.site-card--compact.is-open .site-chevron{transform:rotate(180deg)}.site-card--compact .site-body{grid-template-rows:0fr;opacity:0;transition:grid-template-rows .4s cubic-bezier(.22,1,.36,1),opacity .3s ease}.site-card--compact.is-open .site-body{grid-template-rows:1fr;opacity:1}.site-body-inner{gap:12px;overflow:hidden;padding:0 16px}.site-body-inner:after{content:"";display:block;height:4px}.site-desc{-webkit-line-clamp:unset;display:block;font-size:14px}.site-btn{flex:1 1 auto}.site-software{gap:6px}.site-software .sw-pill{font-size:12px;gap:6px;padding:2px 10px 2px 2px}.site-software .sw-pill .sw-chip{box-shadow:inset 0 1px 1px #ffffffe6;font-size:9.5px;height:22px;width:22px}}@media (min-width:700px) and (max-width:1199px){.sites-list{align-items:start;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:800px){.sites-wrapper{margin-top:8px;max-height:calc(100vh - 70px);padding:0 12px 32px}}@media (max-width:1450px) and (max-height:500px) and (orientation:landscape){.sites-wrapper{max-height:none;overflow:visible}}@media (prefers-reduced-motion:reduce){.site-card{animation:none}.site-btn,.site-card--compact .site-body,.site-chevron,.site-shot-img{transition:none}}body.dark .site-card{background:#ffffff0a;border-color:#ffffff14;box-shadow:0 14px 40px #00000059}body.dark .site-shot{background:#2c2c30;border-color:#ffffff14}body.dark .site-title{color:#f2f2f4}body.dark .site-chevron{color:#c8c8ce}body.dark .site-desc{color:#f1f1f1b8}body.dark .site-tags li{background:#ffffff14;color:#d6d6da}body.dark .site-software .sw-pill{background:#ffffff0f;border-color:#ffffff1a}body.dark .site-btn{border-color:#fff3;color:#f2f2f4}body.dark .site-btn:hover{background:#ffffff14}body.dark .site-btn--primary{background:#f2f2f4;border-color:#f2f2f4;color:#111}body.dark .site-btn--primary:hover{background:#fff}.c1:has(>.contacts){container-type:inline-size}.contacts{background-color:#f57f99;border-radius:10px;box-sizing:border-box;color:#fff;display:flex;flex-direction:column;gap:18px;height:100%;justify-content:center;overflow:hidden;padding:clamp(16px,8cqi,28px);width:100%}.contacts-title{font-size:22px;font-weight:700;letter-spacing:.5px;margin:0}.contacts-list{display:flex;flex-direction:column;gap:16px;list-style:none;margin:0;padding:0}.contact-item{align-items:center;display:flex;gap:14px}.contact-icon{display:flex;flex-shrink:0;height:22px;width:22px}.contact-icon svg{height:100%;width:100%}.contact-text{display:flex;flex-direction:column;line-height:1.25;min-width:0}.contact-label{font-size:11px;letter-spacing:1px;opacity:.8;text-transform:uppercase}.contact-value{color:#fff;font-size:clamp(11px,4.9cqi,15px);overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.contact-value:hover{text-decoration:underline}.contacts-body{display:grid;grid-template-rows:1fr}.contacts-body>.contacts-list{min-height:0;overflow:hidden}.contacts--collapsible{gap:0;justify-content:flex-start;padding:0}.contacts--collapsible .contacts-title{font-size:20px}.contacts-toggle{-webkit-tap-highlight-color:transparent;all:unset;align-items:center;box-sizing:border-box;cursor:pointer;display:flex;justify-content:space-between;padding:18px 22px;width:100%}.contacts-toggle:focus-visible{border-radius:10px;outline:2px solid #fff;outline-offset:-4px}.contacts-chevron{fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;height:22px;transition:transform .35s cubic-bezier(.22,1,.36,1);width:22px}.contacts--collapsible.is-open .contacts-chevron{transform:rotate(180deg)}.contacts--collapsible .contacts-body{grid-template-rows:0fr;opacity:0;transition:grid-template-rows .4s cubic-bezier(.22,1,.36,1),opacity .3s ease}.contacts--collapsible.is-open .contacts-body{grid-template-rows:1fr;opacity:1}.contacts--collapsible .contacts-list{padding:0 22px}.contacts--collapsible .contacts-list:after{content:"";display:block;height:6px}@media (max-width:800px){.c1:has(>.contacts){background:none;min-height:0}}@media (prefers-reduced-motion:reduce){.contacts--collapsible .contacts-body,.contacts-chevron{transition:none}}@keyframes bioFadeIn{0%{opacity:0}to{opacity:1}}.bioSheet-wrapper{animation:bioFadeIn 1.5s ease;transition:opacity .3s ease;width:100%}.bioSheet{background-color:#1e1e1e;border-radius:12px;box-shadow:0 4px 24px #0000001a;height:70vh;margin:40px auto 0 0;overflow:hidden;width:100%}.skill-panel{box-sizing:border-box;color:#d4d4d4;font-family:Consolas,Courier New,monospace;font-size:13px;height:100%;line-height:1.65;overflow-y:auto;padding:20px 0}.code-line{align-items:baseline;display:flex}.gutter{color:#858585;flex-shrink:0;min-width:44px;padding-right:20px;text-align:right;-webkit-user-select:none;user-select:none}.code-content{white-space:pre}.sk-keyword{color:#569cd6}.sk-variable{color:#9cdcfe}.sk-string{color:#ce9178}.sk-comment{color:#6a9955}.sk-punct{color:#d4d4d4}.sk-bar{color:grey}.sk-legend{color:#acabab}.cursor{animation:cursorBlink 1s step-end infinite;background-color:#d4d4d4;display:inline-block;height:1em;margin-left:1px;vertical-align:text-bottom;width:2px}@keyframes cursorBlink{0%,to{opacity:1}50%{opacity:0}}@media (max-width:800px){.bioSheet{height:auto;margin:10px auto;width:96%}.skill-panel{font-size:11px;height:auto;overflow:hidden;padding:16px 0}.gutter{min-width:30px;padding-right:12px}.skill-panel--fade{animation:skillFadeIn .8s ease}@keyframes skillFadeIn{0%{opacity:0}to{opacity:1}}}
/*# sourceMappingURL=main.794f3df6.css.map*/