@font-face{font-family:Vercetti;src:url(/assets/Vercetti-Regular-DGbWtGvr.otf);font-display:swap}@font-face{font-family:Clash-Display;src:url(/assets/ClashDisplay-Variable-BID3Ydx1.woff2);font-weight:600;font-display:swap}:root{--color-dark: #14130d;--color-light: #f0ede8;--color-muted: #6b6a60;--color-hairline: rgba(240, 237, 232, .16);--color-accent: #c46a4a;--page-transition: 1.05s;--logo-size: 32px;--font-display: "Clash-Display", system-ui, sans-serif;--font-ui: "Vercetti", "Inter", system-ui, sans-serif}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;overflow:hidden;background:var(--color-dark);color:var(--color-light);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overscroll-behavior:none}.deck{position:fixed;top:0;right:0;bottom:0;left:0;height:100vh;height:100dvh;width:100%;overflow:hidden;user-select:none;-webkit-user-select:none;touch-action:none}.page{position:absolute;top:0;right:0;bottom:0;left:0;height:100vh;height:100dvh;width:100%;display:flex;align-items:center;justify-content:center;will-change:transform;backface-visibility:hidden}.page--dark{background:var(--color-dark);color:var(--color-light)}.page--light{background:var(--color-light);color:var(--color-dark)}.page__title{margin:0;font-family:var(--font-display);font-weight:500;font-size:clamp(2.5rem,12vw,11rem);line-height:1;letter-spacing:-.03em}.scrollspy{position:fixed;right:clamp(16px,2.5vw,36px);bottom:max(clamp(20px,4vh,48px),env(safe-area-inset-bottom,0px));z-index:100;display:flex;flex-direction:column;align-items:flex-end;gap:12px;mix-blend-mode:difference}.scrollspy__mark{-moz-appearance:none;appearance:none;-webkit-appearance:none;margin:0;padding:0;border:0;width:22px;height:2px;border-radius:2px;background:#fff;opacity:.35;cursor:pointer;transition:width .5s cubic-bezier(.22,1,.36,1),opacity .5s cubic-bezier(.22,1,.36,1)}.scrollspy__mark:hover{opacity:.65}.scrollspy__mark.is-active{width:40px;opacity:1}.scrollspy__mark:focus-visible{outline:2px solid #fff;outline-offset:4px}.intro-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:var(--color-dark)}.brand-logo{position:relative;height:var(--logo-size);aspect-ratio:624.61 / 822.18;pointer-events:none;visibility:hidden;--fill: 0;isolation:isolate;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.brand-logo__base{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(155deg,#423f35,#211e15);box-shadow:inset 0 0 1px #ffffff26,inset -3px -3px 6px #312e25;filter:drop-shadow(-1px -1px 0 rgba(255,255,255,.15)) drop-shadow(1px 1px 0 #312e25) drop-shadow(8px 8px 20px #312e25)}.brand-logo__fill{position:absolute;left:0;right:0;bottom:0;height:calc(var(--fill) * 100%);background:linear-gradient(155deg,#fff,#ece8e1 55%,#d8d1c4)}.brand-logo__sheen{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(157deg,#ffffff80,#ffffff1a 24%,#0000 50%,#00000057);mix-blend-mode:overlay;pointer-events:none}.navbar{position:fixed;top:clamp(14px,2.4vh,26px);left:50%;transform:translate(-50%);z-index:1001;display:inline-flex;align-items:center}.navbar__logo{-moz-appearance:none;appearance:none;-webkit-appearance:none;margin:0;padding:0;border:0;background:none;line-height:0;flex:0 0 auto;cursor:pointer;touch-action:none}.navbar__logo:focus-visible{outline:2px solid var(--color-light);outline-offset:5px;border-radius:3px}.navbar__links{display:inline-flex;align-items:center;gap:clamp(14px,1.6vw,26px);width:0;opacity:0;overflow:hidden;white-space:nowrap}.navbar__link:first-child{margin-left:clamp(16px,2vw,30px)}.navbar__link{-moz-appearance:none;appearance:none;-webkit-appearance:none;margin:0;padding:4px 2px;border:0;background:none;flex:0 0 auto;white-space:nowrap;font-family:var(--font-ui);font-size:clamp(.7rem,.95vw,.82rem);letter-spacing:.08em;text-transform:uppercase;color:var(--color-light);opacity:.5;cursor:pointer;transition:opacity .25s ease}.navbar__link:hover{opacity:.85}.navbar__link.is-active{opacity:1;text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px}.navbar__link.is-targeted{opacity:1}.navbar__link:focus-visible{outline:2px solid var(--color-light);outline-offset:3px;border-radius:2px}@media(hover:none),(pointer:coarse){.navbar__links{position:absolute;top:100%;left:50%;flex-direction:column;align-items:center;gap:clamp(10px,2.4vw,18px);width:auto;padding-left:0;padding-top:14px;overflow:visible;opacity:0;transform:translate(-50%) translateY(4px);pointer-events:none;transition:opacity .28s ease,transform .28s ease}.navbar.is-open .navbar__links{opacity:1;transform:translate(-50%) translateY(12px);pointer-events:auto}.navbar__link{padding:8px 12px;font-size:.95rem;opacity:.7}.navbar__link:first-child{margin-left:0}}.home{position:relative;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:clamp(14px,2.4vh,26px);padding:0 24px}.home__name{margin:0;display:flex;flex-wrap:wrap;justify-content:center;gap:0 .28em;font-family:var(--font-display);font-weight:600;font-size:clamp(2.6rem,9vw,8rem);line-height:1;letter-spacing:-.03em}.home__word{display:inline-block;white-space:nowrap}.home__char{display:inline-block;opacity:0;will-change:transform,opacity}.home__role{margin:0;font-family:var(--font-ui);font-size:clamp(.72rem,1.4vw,.95rem);text-transform:uppercase;letter-spacing:.22em;color:#f0ede89e;opacity:0}.home__pitch{margin:0;max-width:24ch;font-family:var(--font-ui);font-weight:300;font-size:clamp(1rem,2.1vw,1.55rem);line-height:1.35;color:#f0ede8e6;opacity:0}.scrollcue{position:fixed;left:50%;bottom:max(clamp(18px,5vh,44px),env(safe-area-inset-bottom,0px));transform:translate(-50%);z-index:90;display:flex;flex-direction:column;align-items:center;gap:6px;opacity:0;pointer-events:none}.scrollcue__label{font-family:var(--font-ui);font-size:.48rem;text-transform:uppercase;letter-spacing:.22em;color:#f0ede861}.scrollcue__line{position:relative;width:1px;height:26px;background:#f0ede81f;overflow:hidden}.scrollcue__line:after{content:"";position:absolute;inset:0 0 auto 0;height:45%;background:var(--color-light);animation:cueSlide 1.9s ease-in-out infinite}@keyframes cueSlide{0%{transform:translateY(-120%)}to{transform:translateY(260%)}}.home__draw-hint{position:absolute;left:clamp(20px,5vw,64px);bottom:clamp(22px,9vh,80px);margin:0;max-width:15ch;font-family:var(--font-ui);font-size:.72rem;line-height:1.4;letter-spacing:.04em;color:#f0ede880;opacity:0}@media(hover:none),(pointer:coarse){.home__draw-hint{display:none}}@media(pointer:fine){*{cursor:none!important}}.cursor-canvas,.cursor-imprint{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;mix-blend-mode:difference}.cursor-imprint{z-index:9998;opacity:0}.cursor-canvas{z-index:9999}@media(pointer:coarse){.cursor-canvas,.cursor-imprint{display:none}}.about{width:100%;height:100%;display:grid;grid-template-columns:1.05fr 1fr;align-items:center;gap:clamp(40px,6vw,110px);padding:clamp(84px,12vh,150px) clamp(28px,6vw,110px) clamp(48px,8vh,96px)}.about__intro{display:flex;flex-direction:column;align-items:flex-start;max-width:44ch}.about__kicker{font-family:var(--font-ui);font-size:.72rem;letter-spacing:.3em;text-transform:uppercase;color:var(--color-muted)}.about__statement{margin:clamp(20px,3vh,36px) 0 0;font-family:var(--font-display);font-weight:600;font-size:clamp(1.1rem,1.85vw,1.75rem);line-height:1.22;letter-spacing:-.01em}.about__word{display:inline-block;will-change:transform}.about__skills{display:flex;flex-direction:column}.skillrow{border-top:1px solid var(--color-hairline)}.skillrow:last-child{border-bottom:1px solid var(--color-hairline)}.skillrow__head{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:100%;margin:0;border:0;background:none;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:clamp(14px,1.9vh,24px) 0;color:var(--color-light);cursor:pointer;text-align:left}.skillrow__name{font-family:var(--font-display);font-weight:500;font-size:clamp(1.2rem,2vw,1.9rem);line-height:1;letter-spacing:-.01em}.skillrow__icon{position:relative;flex:none;width:clamp(16px,1.2vw,20px);height:clamp(16px,1.2vw,20px)}.skillrow__icon:before,.skillrow__icon:after{content:"";position:absolute;background:currentColor}.skillrow__icon:before{left:0;right:0;top:50%;height:1.5px;transform:translateY(-50%)}.skillrow__icon:after{top:0;bottom:0;left:50%;width:1.5px;transform:translate(-50%) scaleY(1);transition:transform .4s cubic-bezier(.22,1,.36,1)}.skillrow[data-open] .skillrow__icon:after{transform:translate(-50%) scaleY(0)}.skillrow__panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s cubic-bezier(.22,1,.36,1)}.skillrow[data-open] .skillrow__panel{grid-template-rows:1fr}.skillrow__panel-inner{overflow:hidden}.skillrow__list{list-style:none;margin:0;padding:0 0 clamp(16px,2.2vh,26px);display:flex;flex-direction:column;gap:clamp(8px,1.1vh,14px);opacity:0;transform:translateY(8px);transition:opacity .45s ease,transform .45s ease}.skillrow[data-open] .skillrow__list{opacity:1;transform:translateY(0)}.skillrow__item{font-family:var(--font-ui);font-size:clamp(.85rem,1.05vw,1.05rem);letter-spacing:.01em;color:var(--color-muted)}@media(max-width:820px){.about{grid-template-columns:1fr;align-content:center;gap:clamp(28px,5vh,48px)}}.projects{width:100%;height:100%;padding:clamp(64px,7vh,104px) clamp(20px,3vw,52px) clamp(28px,5vh,64px)}.pgrid{position:relative;width:100%;height:100%;display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(4,1fr);gap:16px;perspective:900px}.pcell{position:relative;will-change:transform;transform-origin:center center;backface-visibility:hidden}.pcard{position:relative;width:100%;height:100%;overflow:hidden;border:1px solid rgba(240,237,232,.22);border-radius:14px;background-color:#1b1713;color:var(--color-light);opacity:0;transition:background-color .45s ease,color .45s ease,border-color .45s ease,box-shadow .45s ease}.pcard:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background:radial-gradient(135% 120% at 72% 22%,#14130d,transparent 58%),radial-gradient(120% 120% at 50% 118%,#1b1713,transparent 70%),linear-gradient(160deg,#3a332c,#1b1713);transition:opacity .45s ease}.pcard__name,.pcard__details{z-index:1}.pcell[data-active] .pcard{background-color:var(--color-light);color:var(--color-dark);border-color:var(--color-light);box-shadow:0 26px 60px -24px #000000d9}.pcell[data-active] .pcard:before{opacity:0}.pcard__star{position:absolute;top:clamp(10px,1vw,14px);right:clamp(10px,1vw,14px);z-index:2;width:clamp(15px,1.2vw,19px);height:clamp(15px,1.2vw,19px);color:var(--color-light);filter:drop-shadow(0 1px 2px rgba(0,0,0,.45));transition:color .45s ease,transform .45s cubic-bezier(.22,1,.36,1),filter .45s ease}.pcard__star svg{display:block;width:100%;height:100%;fill:currentColor}.pcell[data-active] .pcard__star{color:var(--color-dark);filter:none;transform:scale(1.08)}.pcard__name{position:absolute;left:0;right:0;top:50%;margin:0;padding:0 12px;text-align:center;font-family:var(--font-display);font-weight:600;font-size:clamp(1rem,1.3vw,1.4rem);line-height:1.05;letter-spacing:-.01em;color:inherit;transform:translateY(-50%);transition:top .45s cubic-bezier(.22,1,.36,1),transform .45s cubic-bezier(.22,1,.36,1),color .45s ease}.pcell[data-active] .pcard__name{top:clamp(12px,1.4vw,18px);transform:translateY(0)}.pcard__details{position:absolute;left:0;right:0;bottom:0;padding:0 clamp(10px,1vw,16px) clamp(12px,1vw,16px);display:flex;flex-direction:column;align-items:center;gap:7px;text-align:center;opacity:0;transform:translateY(10px);pointer-events:none;transition:opacity .4s ease .06s,transform .4s ease .06s}.pcell[data-active] .pcard__details{opacity:1;transform:translateY(0);pointer-events:auto}.pcard__desc{margin:0;font-family:var(--font-ui);font-size:.62rem;line-height:1.45;color:#14130dd1;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.pcard__details .proj-stack{justify-content:center}.pcard__details .proj-visit{align-self:center}.proj-stack{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:5px}.proj-chip{font-family:var(--font-ui);font-size:.444rem;letter-spacing:.03em;color:#14130dc7;padding:3px 8px;border:1px solid rgba(20,19,13,.22);border-radius:999px;background:#14130d0d}.proj-visit{align-self:flex-start;margin-top:4px;padding:6px 14px;font-family:var(--font-ui);font-size:.66rem;letter-spacing:.05em;text-transform:uppercase;text-decoration:none;color:var(--color-dark);background:#14130d0f;border:1px solid rgba(20,19,13,.28);border-radius:999px;cursor:pointer;transition:background .25s ease,border-color .25s ease}.proj-visit:hover{background:#14130d24;border-color:#14130d8c}.projects--compact{padding:clamp(64px,9vh,104px) clamp(14px,4vw,28px) clamp(20px,4vh,40px)}.paccord{display:flex;flex-direction:column;gap:8px;width:100%;height:100%;overflow:hidden}.pacard{position:relative;flex:1 1 0;min-height:54px;display:flex;flex-direction:column;text-align:left;overflow:hidden;border:1px solid rgba(240,237,232,.22);border-radius:14px;background-color:#1b1713;color:var(--color-light);cursor:pointer;opacity:0;transition:flex-grow .45s cubic-bezier(.22,1,.36,1),background-color .45s ease,color .45s ease,border-color .4s ease}.pacard:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background:radial-gradient(120% 130% at 78% 16%,#14130d,transparent 56%),radial-gradient(120% 120% at 50% 118%,#1b1713,transparent 70%),linear-gradient(160deg,#3a332c,#1b1713);transition:opacity .45s ease}.pacard__head,.pacard__detail{position:relative;z-index:1}.pacard[data-expanded]{flex-grow:7;background-color:var(--color-light);color:var(--color-dark);border-color:var(--color-light)}.pacard[data-expanded]:before{opacity:0}.pacard__head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:clamp(13px,2.2vw,18px) clamp(14px,3.4vw,20px)}.pacard__name{font-family:var(--font-display);font-weight:500;font-size:clamp(1rem,4.6vw,1.35rem);line-height:1;letter-spacing:-.01em}.pacard__index{font-family:var(--font-display);font-size:.78rem;color:currentColor;opacity:.45}.pacard__detail{display:flex;flex-direction:column;gap:12px;padding:0 clamp(14px,3.4vw,20px) clamp(16px,3.4vw,22px);opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .35s ease .05s,transform .35s ease .05s,visibility 0s linear .4s}.pacard[data-expanded] .pacard__detail{opacity:1;visibility:visible;transform:translateY(0);transition:opacity .4s ease .12s,transform .4s ease .12s,visibility 0s}.pacard__desc{margin:0;font-family:var(--font-ui);font-size:.82rem;line-height:1.5;color:#14130dd1}.pacard .proj-chip{font-size:.68rem;padding:4px 10px}.pacard .proj-visit{font-size:.72rem;padding:8px 16px}.contact{width:100%;height:100%;display:flex;flex-direction:column;justify-content:space-between;gap:clamp(32px,5vh,64px);padding:clamp(84px,12vh,150px) clamp(28px,6vw,110px) clamp(28px,5vh,56px)}.contact__main{flex:1;display:grid;grid-template-columns:.8fr 1.2fr;align-items:center;gap:clamp(40px,6vw,100px)}.contact__kicker,.contact__word,.contact__card,.contact__meta-row,.contact__link,.contact__footer{opacity:0}.contact__left{display:flex;flex-direction:column;max-width:42ch}.contact__card{position:relative;overflow:hidden;border:1px solid var(--color-hairline);border-radius:12px;padding:clamp(20px,1.8vw,32px);transition:border-color .35s ease}.contact__card:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--color-light);transform:scaleX(0);transform-origin:left center;transition:transform .45s cubic-bezier(.22,1,.36,1)}.contact__card:hover{border-color:#f0ede866}.contact__card:hover:after{transform:scaleX(1)}.contact__card-title{margin:0;font-family:var(--font-display);font-weight:500;font-size:clamp(1.25rem,1.9vw,1.8rem);line-height:1.1;letter-spacing:-.01em}.contact__card-text{margin:clamp(10px,1.4vh,16px) 0 0;font-family:var(--font-ui);font-size:clamp(.82rem,.95vw,.95rem);line-height:1.5;color:var(--color-muted)}.contact__meta{margin:clamp(22px,3vh,38px) 0 0}.contact__meta-row{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:clamp(12px,1.6vh,18px) 0;border-top:1px solid var(--color-hairline)}.contact__meta-row:last-child{border-bottom:1px solid var(--color-hairline)}.contact__meta-label{font-family:var(--font-ui);font-size:.62rem;letter-spacing:.22em;text-transform:uppercase;color:var(--color-muted)}.contact__meta-value{margin:0;font-family:var(--font-ui);font-size:clamp(.85rem,1vw,1rem);color:var(--color-light);text-align:right}.contact__loc{white-space:nowrap}.contact__loc-region{display:inline-block;max-width:0;opacity:0;overflow:hidden;white-space:nowrap;vertical-align:bottom;transition:max-width .45s cubic-bezier(.22,1,.36,1),opacity .4s ease}.contact__loc:hover .contact__loc-region{max-width:7ch;opacity:1}.contact__right{display:flex;flex-direction:column;align-items:center;text-align:center}.contact__kicker{font-family:var(--font-ui);font-size:.72rem;letter-spacing:.3em;text-transform:uppercase;color:var(--color-muted)}.contact__statement{margin:clamp(18px,2.6vh,32px) 0 0;font-family:var(--font-ui);font-weight:500;font-size:clamp(1.1rem,1.8vw,1.7rem);line-height:1.4;max-width:34ch}.contact__word{display:inline-block;will-change:transform}.contact__links{margin:clamp(30px,4.5vh,56px) 0 0;display:grid;grid-template-columns:repeat(2,max-content);justify-content:center;gap:clamp(12px,1.8vh,22px) clamp(48px,6vw,110px)}.contact__link{position:relative;width:max-content;font-family:var(--font-ui);font-weight:700;font-size:clamp(1.5rem,2.6vw,2.5rem);line-height:1;letter-spacing:-.01em;text-transform:uppercase;text-decoration:none;color:var(--color-light);transform-origin:left center;transition:opacity .25s ease}.contact__link:after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:1.5px;background:currentColor;transform:scaleX(0);transform-origin:left center;transition:transform .35s cubic-bezier(.22,1,.36,1)}.contact__link:hover:after{transform:scaleX(1)}.contact__footer{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}.contact__email{font-family:var(--font-ui);font-size:clamp(.8rem,1vw,.95rem);color:var(--color-light);text-decoration:none;opacity:.8;transition:opacity .25s ease}.contact__email:hover{opacity:1}.contact__year{font-family:var(--font-ui);font-size:.62rem;letter-spacing:.22em;text-transform:uppercase;color:var(--color-muted)}@media(max-width:820px){.contact__main{grid-template-columns:1fr;align-content:center;gap:clamp(28px,5vh,44px)}}
