html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-behavior:allow-discrete;transition-property:overflow;transition-duration:1ms}:root{color:oklch(94% .018 92);font-synthesis:none;text-rendering:optimizelegibility;--canvas:oklch(16% .02 155);--surface:oklch(21% .028 154);--surface-raised:oklch(25% .032 153);--bone:oklch(94% .018 92);--sand:oklch(84% .045 82);--heading-dark:oklch(27% .03 154);--muted:oklch(70% .025 145);--subtle:oklch(57% .022 147);--lichen:oklch(80% .13 126);--moss:oklch(43% .1 143);--forest-ink:oklch(18% .03 154);--line:oklch(27% .025 153);--ease:cubic-bezier(.16, 1, .3, 1);background:oklch(16% .02 155);font-family:Poppins,sans-serif}*{box-sizing:border-box}html{background:var(--canvas)}body{min-width:320px;min-height:100vh;color:var(--bone);background:var(--canvas);margin:0;overflow-x:hidden}button,input,select,textarea,a{font:inherit}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}::selection{color:var(--forest-ink);background:var(--lichen)}:focus-visible{outline:2px solid var(--lichen);outline-offset:4px}.skip-link{z-index:1000;color:var(--forest-ink);background:var(--lichen);transition:transform .25s var(--ease);padding:.75rem 1rem;position:fixed;top:1rem;left:1rem;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.site-header{z-index:100;background:var(--surface);border-radius:16px;width:292px;height:48px;padding:4px 11px;position:fixed;top:30px;left:50%;transform:translate(-50%);box-shadow:0 14px 36px #0000002e}.site-header nav{justify-content:space-between;align-items:center;height:100%;display:flex}.site-header nav a{width:42px;height:40px;color:var(--bone);transition:color .25s ease, background .25s ease, transform .3s var(--ease);border-radius:11px;place-items:center;display:grid;position:relative}.site-header nav a:hover{color:var(--lichen);transform:translateY(-1px)}.site-header nav a.active{color:var(--lichen);background:oklch(94% .018 92/.04)}.site-header nav a:after,.profile-links a:after{content:attr(data-label);color:var(--bone);background:var(--surface-raised);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .2s ease, transform .25s var(--ease);border-radius:5px;padding:.3rem .45rem;font-size:.58rem;position:absolute;top:calc(100% + 9px);left:50%;transform:translate(-50%,-3px)}.site-header nav a:hover:after,.site-header nav a:focus-visible:after,.profile-links a:hover:after,.profile-links a:focus-visible:after{opacity:1;transform:translate(-50%)}.portfolio-shell{grid-template-columns:344px minmax(0,696px);align-items:start;gap:100px;width:min(100% - 40px,1140px);margin:160px auto 0;display:grid}.profile-column{align-self:stretch;min-width:0}.profile-card{width:344px;height:640px;color:var(--forest-ink);background:var(--bone);animation:profile-in .8s var(--ease) both;border-radius:16px;flex-direction:column;display:flex;position:sticky;top:40px;overflow:hidden}.profile-card:before,.profile-card:after{content:"";z-index:3;border:3px dashed var(--moss);pointer-events:none;border-radius:50%;width:185px;height:185px;position:absolute}.profile-card:before{top:-105px;left:-6px}.profile-card:after{clip-path:polygon(50% 50%,100% 50%,100% 100%,50% 100%);width:150px;height:150px;bottom:75px;left:-78px}.profile-portrait{background:var(--sand);border-radius:16px;flex:0 0 284px;width:240px;height:284px;margin:30px auto 0;position:relative;overflow:hidden}.profile-portrait img{object-fit:cover;object-position:65% center;width:100%;height:100%}.portrait-badge{z-index:4;border:4px solid var(--bone);width:36px;height:36px;color:var(--bone);background:var(--moss);border-radius:50%;place-items:center;display:grid;position:absolute;bottom:-1px;left:49px}.profile-copy{text-align:center;flex-direction:column;flex:1;align-items:center;min-height:0;padding:21px 30px 27px;display:flex}.profile-copy h1{letter-spacing:-1.5px;white-space:nowrap;margin:0;font-size:32px;font-weight:700;line-height:1.08}.profile-copy>p{color:oklch(44% .026 151);margin:auto 0 0;font-size:16px;font-weight:500;line-height:1.25}.profile-location{color:oklch(54% .022 149);align-items:center;gap:6px;margin-top:12px;font-size:11px;display:flex}.profile-links{color:var(--moss);justify-content:center;align-items:center;gap:25px;margin-top:auto;display:flex}.profile-links a{width:27px;height:27px;transition:color .25s ease, transform .3s var(--ease);place-items:center;display:grid;position:relative}.profile-links a:hover{color:var(--forest-ink);transform:translateY(-2px)}.content-column{min-width:0}.page-section{min-width:0;scroll-margin-top:90px}.split-heading{letter-spacing:-5px;margin:0;font-size:90px;font-weight:700;line-height:1}.split-heading span{white-space:nowrap;display:block}.split-heading span:last-child{color:var(--heading-dark)}.hero-section{height:788px}.hero-section .split-heading{letter-spacing:-6px;font-size:110px;line-height:1}.hero-intro{width:535px;color:var(--muted);margin:18px 0 0;font-size:18px;line-height:1.4}.hero-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px;width:min(100%,460px);margin-top:62px;display:grid}.hero-stats>div{flex-direction:column;display:flex}.hero-stats strong{letter-spacing:-4px;font-size:66px;font-weight:600;line-height:.9}.hero-stats span{color:var(--muted);margin-top:20px;font-size:16px;font-weight:400;line-height:1.15}.hero-cards{grid-template-columns:300px 366px;gap:30px;margin-top:60px;display:grid}.hero-card{height:240px;transition:transform .4s var(--ease);border-radius:10px;flex-direction:column;padding:24px 21px;display:flex;position:relative;overflow:hidden}.hero-card:hover{transform:translateY(-5px)}.hero-card>svg{z-index:2;position:relative}.hero-card h3{z-index:2;letter-spacing:-.5px;max-width:12ch;margin:auto 0 0;font-size:24px;font-weight:500;line-height:1.08;position:relative}.hero-card>span{z-index:3;width:34px;height:34px;transition:transform .35s var(--ease);border:1px solid;border-radius:7px;place-items:center;display:grid;position:absolute;bottom:20px;right:20px}.hero-card:hover>span{transform:translate(4px)}.hero-card:before{content:"";pointer-events:none;position:absolute}.hero-card-lichen{color:var(--forest-ink);background:var(--lichen)}.hero-card-lichen:before{opacity:.42;clip-path:polygon(0 50%,12.5% 0,25% 50%,37.5% 0,50% 50%,62.5% 0,75% 50%,87.5% 0,100% 50%,100% 57%,87.5% 7%,75% 57%,62.5% 7%,50% 57%,37.5% 7%,25% 57%,12.5% 7%,0 57%);background:oklch(43% .1 143);width:252px;height:58px;top:48px;right:-22px;transform:rotate(-4deg)}.hero-card-sand{color:var(--forest-ink);background:var(--sand)}.hero-card-sand:before{opacity:.4;background:repeating-linear-gradient(135deg,#0000 0 24px,oklch(58% .06 125) 24px 26px,#0000 26px 50px);inset:-28px -18px -28px 42%}.projects-section{min-height:845px;margin-top:-20px}.education-section{min-height:914px}.tools-section{min-height:616px}.notes-section{min-height:1050px}.contact-section{min-height:617px}.projects-section>.split-heading,.education-section>.split-heading,.tools-section>.split-heading,.notes-section>.split-heading,.contact-section>.split-heading{flex-direction:column;justify-content:center;height:320px;display:flex}.project-list{width:100%}.project-row{min-height:175px;transition:background .35s ease, transform .4s var(--ease);border-radius:16px;grid-template-columns:130px minmax(0,1fr) 24px;align-items:center;gap:20px;padding:20px 16px;display:grid;position:relative}.project-row:hover{background:var(--surface);transform:translate(5px)}.project-preview{border-radius:8px;place-items:center;width:130px;height:135px;display:grid;position:relative;overflow:hidden}.project-preview img{transition:transform .45s var(--ease)}.caledoro-preview{background:#fff}.caledoro-preview img{object-fit:cover;width:100%;height:100%}.nitpicker-preview{background:linear-gradient(145deg,#22142f,#7031b5)}.nitpicker-preview img{object-fit:contain;width:82%;height:82%}.chronos-preview{color:#191c1e;background:#f2f4f6;border:1px solid #c2c6d6;place-items:center start;padding:16px}.chronos-brand{transition:transform .45s var(--ease);flex-direction:column;align-items:flex-start;display:flex}.chronos-brand strong{letter-spacing:-.04em;font-family:Space Grotesk,Poppins,sans-serif;font-size:24px;font-weight:700;line-height:1}.chronos-brand small{color:#0058be;letter-spacing:.13em;text-transform:uppercase;margin-top:5px;font-size:6px;font-weight:600;line-height:1.25}.project-row:hover .project-preview img{transform:scale(1.05)}.project-row:hover .chronos-brand{transform:translateY(-3px)}.project-details{min-width:0}.project-details>span{color:var(--lichen);letter-spacing:.08em;font-size:10px}.project-details h3{margin:4px 0 0;font-size:26px;font-weight:600;line-height:1.1}.project-details p{color:var(--muted);margin:1px 0 0;font-size:15px}.project-details small{max-width:55ch;color:var(--subtle);overflow-wrap:anywhere;white-space:normal;margin-top:7px;font-size:11px;line-height:1.4;display:block}.project-details i{color:oklch(50% .02 148);overflow-wrap:anywhere;margin-top:5px;font-size:9px;font-style:normal;line-height:1.4;display:block}.row-arrow{color:var(--lichen);justify-self:end}.education-row{height:198px;transition:background .35s ease, transform .4s var(--ease);border-radius:16px;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:20px;padding:24px 16px;display:grid}.education-row:hover{background:var(--surface);transform:translate(5px)}.education-copy>span{color:var(--lichen);letter-spacing:.06em;text-transform:uppercase;font-size:11px}.education-copy h3{margin:6px 0 2px;font-size:26px;font-weight:600;line-height:1.12}.education-copy p{color:var(--muted);margin:0;font-size:16px}.education-copy small{max-width:52ch;color:var(--subtle);margin-top:13px;font-size:13px;line-height:1.45;display:block}.education-row time{color:var(--muted);white-space:nowrap;padding-top:3px;font-size:14px}.tools-grid{grid-template-columns:repeat(2,343px);gap:10px;display:grid}.tool-item{height:92px;transition:background .3s ease, transform .35s var(--ease);border-radius:8px;align-items:center;gap:16px;padding:10px 16px;display:flex}.tool-item:hover{background:var(--surface);transform:translateY(-2px)}.tool-item>span{width:60px;height:60px;color:var(--forest-ink);background:var(--bone);border-radius:14px;flex:0 0 60px;place-items:center;display:grid}.tool-item:nth-child(2)>span,.tool-item:nth-child(5)>span{color:var(--forest-ink);background:var(--lichen)}.tool-item:first-child>span,.tool-item:nth-child(4)>span{color:var(--forest-ink);background:var(--sand)}.tool-item>div{min-width:0}.tool-item h3{margin:0;font-size:23px;font-weight:600;line-height:1.1}.tool-item:nth-child(3) h3{letter-spacing:-.35px;white-space:nowrap;font-size:20px}.tool-item p{color:var(--muted);margin:3px 0 0;font-size:16px}.note-row{min-height:235px;transition:background .35s ease, transform .4s var(--ease);border-radius:16px;padding:22px 16px;position:relative}.note-row:hover{background:var(--surface);transform:translate(5px)}.note-row>svg{color:var(--lichen);position:absolute;top:24px;right:16px}.note-row h3{max-width:19ch;margin:0;font-size:26px;font-weight:600;line-height:1.2}.note-row p{max-width:57ch;color:var(--muted);margin:14px 0 20px;font-size:16px;line-height:1.45}.note-row>span{color:var(--subtle);font-size:13px}.contact-section>.split-heading{height:350px}.contact-list{border-top:1px solid var(--line);height:267px;margin:0;font-style:normal}.contact-row{border-bottom:1px solid var(--line);grid-template-columns:155px minmax(0,1fr) auto;align-items:center;gap:16px;height:89px;padding:0 16px;transition:color .3s,background .3s;display:grid}.contact-label{color:var(--lichen);letter-spacing:.07em;font-size:11px;font-weight:500}.contact-row>strong{overflow-wrap:anywhere;letter-spacing:-.35px;min-width:0;font-size:21px;font-weight:500}.contact-action{color:var(--lichen);letter-spacing:.07em;white-space:nowrap;justify-self:end;align-items:center;gap:7px;font-size:10px;font-weight:500;display:inline-flex}.contact-action svg{transition:transform .35s var(--ease)}button.contact-row{border:0;border-bottom:1px solid var(--line);width:100%;color:inherit;cursor:pointer;text-align:left;background:0 0}a.contact-row:hover,button.contact-row:hover{color:var(--lichen);background:var(--surface)}a.contact-row:hover .contact-action svg,button.contact-row:hover .contact-action svg{transform:translate(3px,-3px)}.site-footer{border-top:1px solid var(--line);min-height:180px;color:var(--muted);grid-template-columns:1.2fr 1fr auto;align-items:start;gap:50px;margin-top:20px;padding:50px max(20px,50vw - 570px);font-size:13px;display:grid}.site-footer>div{flex-direction:column;gap:10px;display:flex}.site-footer strong{color:var(--bone);font-size:18px}.site-footer a{color:var(--bone);align-items:center;gap:5px;transition:color .25s;display:inline-flex}.site-footer a:hover{color:var(--lichen)}.footer-note{justify-self:center}.footer-top{justify-self:end}.reveal{opacity:0;transition:opacity .65s ease, transform .8s var(--ease);transform:translateY(18px)}.reveal.is-visible{opacity:1;transform:translateY(0)}@keyframes profile-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (width<=1200px){.portfolio-shell{grid-template-columns:320px minmax(0,1fr);gap:64px;width:min(100% - 64px,1060px)}.profile-card{width:320px}.profile-copy{padding-inline:18px}.profile-copy h1{font-size:30px}.hero-section .split-heading{font-size:clamp(88px,9vw,103px)}.split-heading{font-size:clamp(75px,7.5vw,88px)}.hero-cards{grid-template-columns:minmax(0,300px) minmax(0,1fr)}.tools-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tool-item:nth-child(3) h3{white-space:normal;font-size:18px;line-height:1.05}}@media (width<=920px){.portfolio-shell{width:min(100% - 40px,696px);margin-top:120px;display:block}.profile-card{width:344px;margin-inline:auto;position:relative;top:auto}.content-column{margin-top:60px}.hero-section .split-heading{font-size:clamp(80px,13.5vw,106px)}.split-heading{font-size:clamp(72px,11.5vw,88px)}}@media (width<=600px){.site-header{width:min(291px,100% - 28px);top:20px}.site-header nav a:after{display:none}.portfolio-shell{width:calc(100% - 40px);margin-top:100px}.profile-card{width:100%;height:461px}.profile-card:before{top:-116px;left:-8px}.profile-card:after{clip-path:polygon(50% 50%,100% 50%,100% 100%,50% 100%);width:120px;height:120px;top:160px;bottom:auto;left:-83px}.profile-portrait{flex-basis:210px;width:calc(100% - 90px);height:210px;margin-top:30px}.profile-portrait img{object-position:64% 42%}.portrait-badge{bottom:-1px;left:5px}.profile-copy{padding:22px 24px 24px}.profile-copy h1{letter-spacing:-1.3px;font-size:clamp(27px,8.2vw,32px)}.profile-copy>p{max-width:29ch;margin-top:18px;font-size:16px}.profile-location{display:none}.profile-links{margin-top:auto}.content-column{margin-top:40px}.hero-section{text-align:center;height:880px}.hero-section .split-heading{letter-spacing:-3px;text-align:left;font-size:clamp(46px,14vw,56px);line-height:.98}.hero-intro{text-align:center;width:100%;margin-top:12px;font-size:16px;line-height:1.45}.hero-stats{text-align:left;gap:10px;margin-top:77px}.hero-stats strong{letter-spacing:-3px;font-size:clamp(42px,13vw,52px)}.hero-stats span{margin-top:14px;font-size:13px}.hero-cards{grid-template-columns:1fr;gap:20px;margin-top:70px}.hero-card{text-align:left;width:100%;height:212px}.hero-card h3{font-size:23px}.projects-section{min-height:690px;margin-top:0}.education-section{min-height:810px}.tools-section{min-height:866px}.notes-section{min-height:1000px}.contact-section{min-height:500px}.projects-section>.split-heading,.education-section>.split-heading,.tools-section>.split-heading,.notes-section>.split-heading,.contact-section>.split-heading{letter-spacing:-3px;height:184px;font-size:clamp(44px,14vw,55px);line-height:.98}.project-row{border-radius:10px;grid-template-columns:100px minmax(0,1fr) 18px;gap:12px;min-height:155px;padding:11px 12px}.project-row:hover{transform:none}.project-preview{width:100px;height:112px}.chronos-preview{padding:10px}.chronos-brand strong{font-size:18px}.chronos-brand small{margin-top:4px;font-size:5px}.project-details>span{font-size:8px}.project-details h3{font-size:22px}.project-details p{font-size:12px;line-height:1.3}.project-details small{margin-top:5px;font-size:11px;line-height:1.4}.project-details i{margin-top:6px;font-size:9px;line-height:1.45}.education-row{border-radius:10px;gap:10px;height:195px;padding:20px 12px}.education-row:hover{transform:none}.education-copy h3{font-size:22px}.education-copy p{font-size:14px}.education-copy small{margin-top:10px;font-size:11px}.education-row time{font-size:10px}.tools-grid{grid-template-columns:1fr;gap:6px}.tool-item{padding-inline:12px}.tool-item h3{font-size:21px}.note-row{min-height:250px;padding-inline:12px}.note-row:hover{transform:none}.note-row h3{padding-right:25px;font-size:23px}.note-row p{font-size:15px}.contact-section>.split-heading{height:210px}.contact-list{height:auto}.contact-row{grid-template-rows:auto auto;grid-template-columns:minmax(0,1fr) auto;gap:5px 16px;height:auto;min-height:92px;padding:16px 12px}.contact-label{grid-column:1}.contact-row>strong{grid-column:1;font-size:18px}.contact-action{grid-area:1/2/3}.site-footer{grid-template-columns:1fr;gap:24px;min-height:235px;padding:42px 20px}.footer-note,.footer-top{justify-self:start}}@media (width<=360px){.portfolio-shell{width:calc(100% - 24px)}.profile-portrait{width:calc(100% - 64px)}.profile-copy h1{font-size:28px}.hero-section .split-heading,.projects-section>.split-heading,.education-section>.split-heading,.tools-section>.split-heading,.notes-section>.split-heading,.contact-section>.split-heading{font-size:43px}}@media (hover:none),(pointer:coarse){.profile-links{gap:10px}.profile-links a{touch-action:manipulation;width:44px;height:44px;transition:color .2s ease, transform .2s var(--ease)}.profile-links a:after{display:none}.profile-links a:hover{color:var(--moss);transform:none}.profile-links a:active{color:var(--forest-ink);transform:scale(.9)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.reveal{opacity:1;transform:none}}
