@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-italic-BicUS2cM.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-italic-BfTTTDIL.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-italic-Py8at3oI.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-ext-wght-normal-DCwSJGxG.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-wght-normal-D_ZTVpCC.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--cream:#f7f7f5;--ink:#111;--terracotta:#2b5748;--terracotta-strong:#2b5748;--sage:#618764;--sage-strong:#2b5748;--accent-on-ink:#9cb080;--font-display:"Fraunces Variable", Georgia, "Times New Roman", serif;--font-body:"Figtree Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--gutter:clamp(20px, 5.5vw, 80px);--radius-sm:2px;--radius-md:4px;--radius-lg:4px}.app{isolation:isolate;background:var(--cream);min-height:100vh;color:var(--ink);view-transition-name:page;transition:background-color .3s,color .3s;position:relative}::view-transition-group(page){animation-duration:.7s;animation-timing-function:cubic-bezier(.22,1,.36,1)}::view-transition-old(page){z-index:-1;animation:none}::view-transition-new(page){animation:.7s cubic-bezier(.22,1,.36,1) both theme-reveal-up}::view-transition-group(theme-toggle){animation-duration:.7s;animation-timing-function:cubic-bezier(.22,1,.36,1)}::view-transition-old(theme-toggle){animation:none}::view-transition-new(theme-toggle){animation:.7s cubic-bezier(.22,1,.36,1) both theme-reveal-up}@keyframes theme-reveal-up{0%{clip-path:polygon(0 100%,100% 100%,100% 100%,0 100%)}to{clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}}.app--dark{--cream:#111;--ink:#f7f7f5;--terracotta:#9cb080;--terracotta-strong:#9cb080;--sage:#618764;--sage-strong:#9cb080;--accent-on-ink:#2b5748}*,:before,:after{box-sizing:border-box}html,body,body *{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 32 32' fill='none' stroke-linecap='round'%3E%3Cg stroke='%232b5748' stroke-width='3'%3E%3Ccircle cx='16' cy='16' r='5.5'/%3E%3Cpath d='M16 2.5v4.5M16 25v4.5M2.5 16h4.5M25 16h4.5M6.45 6.45l3.18 3.18M22.37 22.37l3.18 3.18M6.45 25.55l3.18-3.18M22.37 9.63l3.18-3.18'/%3E%3C/g%3E%3C/svg%3E") 8 8,crosshair!important}.app--dark,.app--dark *{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 32 32' fill='none' stroke-linecap='round'%3E%3Cg stroke='%239cb080' stroke-width='3'%3E%3Ccircle cx='16' cy='16' r='5.5'/%3E%3Cpath d='M16 2.5v4.5M16 25v4.5M2.5 16h4.5M25 16h4.5M6.45 6.45l3.18 3.18M22.37 22.37l3.18 3.18M6.45 25.55l3.18-3.18M22.37 9.63l3.18-3.18'/%3E%3C/g%3E%3C/svg%3E") 8 8,crosshair!important}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}section[id]{scroll-margin-top:28px}html{--scroll-track:#f7f7f5;--scroll-thumb:#618764;--scroll-thumb-hover:#2b5748}html:has(.app--dark){--scroll-track:#111;--scroll-thumb:#618764;--scroll-thumb-hover:#9cb080}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--scroll-track)}::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border:2px solid var(--scroll-track);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--scroll-thumb-hover)}::-webkit-scrollbar-corner{background:var(--scroll-track)}@supports not selector(::-webkit-scrollbar){html{scrollbar-color:var(--scroll-thumb) var(--scroll-track);scrollbar-width:thin}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--cream);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.5;overflow-x:hidden}h1,p{margin:0}a{color:inherit}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:2px}.skip-link{top:-100px;left:var(--gutter);z-index:10;border-radius:var(--radius-sm);background:var(--ink);color:var(--ink);padding:10px 16px;position:absolute}.skip-link:focus{top:12px}.highlight{background:var(--hl-bg);color:var(--hl-fg);-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:3px;padding:.05em .3em;text-decoration:none;transition:background-color .2s,color .2s}.highlight:hover,.highlight:focus-visible{background:var(--ink);color:var(--cream)}.highlight--1{--hl-bg:#9cb080;--hl-fg:#111}.highlight--2{--hl-bg:#618764;--hl-fg:#111}.highlight--3{--hl-bg:#2b5748;--hl-fg:#f7f7f5}.highlight--4{--hl-bg:#273338;--hl-fg:#f7f7f5}.word__inner.highlight{--hl-fill:var(--hl-bg);background:linear-gradient(var(--hl-fill), var(--hl-fill)) bottom / 100% calc(100% - .08em) no-repeat;padding:0 .06em .04em}.word__inner.highlight:hover,.word__inner.highlight:focus-visible{--hl-fill:var(--ink)}.btn{border:2px solid var(--ink);color:var(--ink);letter-spacing:.04em;text-align:center;text-transform:none;background:0 0;border-radius:0;padding:1.25em 2em;font-size:13px;font-weight:700;text-decoration:none;transition:all .3s ease-in-out;display:inline-block;position:relative;overflow:visible}.btn:before{background:var(--ink);content:"";transform-origin:50%;width:1.5625rem;height:2px;transition:background .3s linear,width .3s linear;position:absolute;top:50%;left:1.5em;transform:translateY(-50%)}.btn__text{color:var(--ink);text-align:left;text-transform:uppercase;justify-content:center;align-items:center;gap:12px;padding-left:2.35em;font-size:1.125em;line-height:1.33333em;transition:all .3s ease-in-out;display:flex}.btn__text svg{flex:none}.btn__top-key,.btn__bottom-key-1,.btn__bottom-key-2{background:var(--cream);height:2px;transition:width .5s ease-out,left .3s ease-out,right .3s ease-out;position:absolute}.btn__top-key{width:1.5625rem;top:-2px;left:.625rem}.btn__bottom-key-1{width:1.5625rem;bottom:-2px;right:1.875rem}.btn__bottom-key-2{width:.625rem;bottom:-2px;right:.625rem}.btn:hover{background:var(--terracotta-strong);border-color:var(--terracotta-strong);color:var(--cream)}.btn:hover:before{background:var(--cream);width:.9375rem}.btn:hover .btn__text{color:var(--cream);padding-left:1.85em;transform:scale(.94)}.btn:hover .btn__top-key{width:0;left:-2px}.btn:hover .btn__bottom-key-1,.btn:hover .btn__bottom-key-2{width:0;right:0}.btn:active{transform:scale(.95)}.site-header{z-index:1;max-width:1440px;height:93px;padding:0 var(--gutter);grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;margin:0 auto;display:grid;position:relative}.site-header>.btn{justify-self:end}.header-actions{justify-self:end;align-items:center;gap:14px;display:flex}.header-actions .btn{padding:.85em 1.4em;font-size:11px}.theme-toggle{cursor:pointer;width:34px;height:34px;display:block;position:relative}.theme-toggle input{opacity:0;width:1px;height:1px;position:absolute}.theme-toggle__track{view-transition-name:theme-toggle;background:#111;border-radius:50%;place-items:center;width:100%;height:100%;display:grid}.theme-toggle__icon{width:25px;height:25px;overflow:visible}.theme-toggle__icon-split,.theme-toggle__icon-ring{transform-box:fill-box;transform-origin:50%;transition:transform .35s cubic-bezier(.22,1,.36,1)}.theme-toggle__icon-ring{transition-duration:.45s}.theme-toggle input:checked+.theme-toggle__track .theme-toggle__icon-split{transform:rotate(-180deg)}.theme-toggle input:checked+.theme-toggle__track .theme-toggle__icon-ring{transform:rotate(180deg)}.theme-toggle input:focus-visible+.theme-toggle__track{outline:2px solid var(--ink);outline-offset:3px}.brand{justify-self:start;align-items:center;gap:12px;text-decoration:none;display:inline-flex}.brand__mark{background:var(--ink);border-radius:0;place-items:center;width:36px;height:36px;display:grid}.brand__mark svg{width:20px;height:20px;color:var(--cream)}.brand__name{font-family:var(--font-display);letter-spacing:-.01em;font-size:22px;font-weight:900}.brand__name em{color:var(--sage-strong);font-style:italic;font-weight:400}.site-nav{gap:32px;display:flex}.site-nav a{color:var(--terracotta-strong);font-size:14px;font-weight:600;text-decoration:none;transition:color .2s}.site-nav a:hover{color:var(--ink);text-underline-offset:6px;text-decoration:underline;text-decoration-thickness:1px}.hero__inner{z-index:1;max-width:1440px;padding:clamp(40px, 7vw, 100px) var(--gutter) clamp(56px, 8vw, 120px);grid-template-columns:minmax(0,696fr) minmax(0,520fr);align-items:stretch;gap:64px;margin:0 auto;display:grid;position:relative}.hero__copy{flex-direction:column;justify-content:space-between;gap:48px;display:flex}.hero__text{flex-direction:column;gap:28px;display:flex}.hero__bottom{flex-direction:column;gap:36px;display:flex}.hero__title{font-family:var(--font-display);letter-spacing:-.015em;color:var(--ink);font-size:clamp(33px,4.1vw,56px);font-weight:600;line-height:1.05}.word{vertical-align:top;margin:-.04em -.06em -.16em;padding:.04em .06em .16em;display:inline-block;overflow:hidden}.word__inner{display:inline-block}.word--muted{color:color-mix(in srgb, var(--ink) 45%, transparent)}.hero__socials{gap:18px;display:flex}.hero__socials a,.hero__social-button{color:color-mix(in srgb, var(--ink) 75%, transparent);transition:color .2s;display:inline-flex}.hero__socials a:hover,.hero__socials a:focus-visible,.hero__social-button:hover,.hero__social-button:focus-visible{color:var(--terracotta-strong)}.hero__social-button{font:inherit;background:0 0;border:0;padding:0;position:relative}.hero__social-toast{color:var(--terracotta-strong);white-space:nowrap;pointer-events:none;opacity:0;font-size:12px;font-weight:600;transition:opacity .2s,transform .2s;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%,4px)}.hero__social-toast.is-visible{opacity:1;transform:translate(-50%)}.hero__socials svg{width:22px;height:22px}.hero__lede{max-width:28rem;color:color-mix(in srgb, var(--ink) 82%, transparent);font-size:16px;line-height:1.9}.hero__roles{flex-direction:column;gap:12px;font-size:13px;display:flex}.hero__role{align-items:baseline;gap:16px;display:flex}.hero__role-year{color:color-mix(in srgb, var(--ink) 50%, transparent);font-variant-numeric:tabular-nums;flex:0 0 38px}.hero__role-detail{color:color-mix(in srgb, var(--ink) 60%, transparent)}.hero__role-detail strong{color:color-mix(in srgb, var(--ink) 90%, transparent);font-weight:600}.hero__actions{flex-wrap:nowrap;gap:14px;display:flex}.hero__actions .btn{min-width:0;padding-left:1.25em;padding-right:1.25em;font-size:12px}.hero__actions .btn__text{white-space:nowrap}.hero__visual{aspect-ratio:520/600;border-radius:var(--radius-lg);background:var(--ink);position:relative;overflow:hidden}.content-section{padding:88px var(--gutter) 96px}.content-section__inner{max-width:1240px;margin:0 auto}.section-intro{text-align:left}.section-intro h2{font-family:var(--font-display);font-size:clamp(32px,4.5vw,56px);font-weight:600;line-height:1.08}.tag-row{flex-wrap:wrap;gap:8px;display:flex}.tag-pill{border:1px solid color-mix(in srgb, var(--sage-strong) 40%, transparent);color:var(--sage-strong);border-radius:999px;padding:5px 10px;font-size:11px}.skills-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:56px;display:grid}.skill-group{border:1px solid color-mix(in srgb, var(--ink) 22%, transparent);padding:28px}.skill-group h3{font-family:var(--font-display);margin-bottom:16px;font-size:22px;font-weight:600}.about-intro{max-width:68ch;color:color-mix(in srgb, var(--ink) 82%, transparent);margin-top:32px;font-size:16px;line-height:1.7}.about-intro p+p{margin-top:14px}.about-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:40px;display:grid}.about-card__body{color:color-mix(in srgb, var(--ink) 78%, transparent);font-size:14px;line-height:1.6}.about-list{color:color-mix(in srgb, var(--ink) 78%, transparent);flex-direction:column;gap:8px;margin:0;padding-left:18px;font-size:14px;line-height:1.6;display:flex}.about-spotify{border:0;border-radius:12px;width:100%;margin-top:12px;display:block}@media (width<=1100px){.about-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=600px){.about-grid{grid-template-columns:1fr;margin-top:32px}}.experience-list{flex-direction:column;gap:16px;margin-top:56px;display:flex}.experience-item{border:1px solid color-mix(in srgb, var(--ink) 22%, transparent);grid-template-columns:90px 1fr auto;gap:24px;padding:28px;transition:background-color .2s,transform .2s;display:grid}.experience-item:hover{background:color-mix(in srgb, var(--sage) 12%, transparent);transform:translateY(-3px)}.experience-item__year{font-family:var(--font-display);color:var(--terracotta-strong);align-self:start;margin-top:4px;font-size:20px}.experience-item__body h3{font-family:var(--font-display);margin:0;font-size:clamp(20px,2.2vw,26px);font-weight:600}.experience-item__company{letter-spacing:.04em;text-transform:uppercase;color:var(--sage-strong);margin-top:4px;font-size:13px;font-weight:700}.experience-item__blurb{color:color-mix(in srgb, var(--ink) 78%, transparent);margin-top:10px;font-size:15px;line-height:1.6}.experience-item__logo{border:1px solid color-mix(in srgb, var(--ink) 8%, transparent);background:#fbfbf9;justify-content:center;align-self:center;align-items:center;width:152px;height:92px;padding:6px;display:flex}.experience-item__logo img{object-fit:contain;max-width:100%;max-height:100%}.skill-marquee{border-top:1px solid color-mix(in srgb, var(--ink) 10%, transparent);border-bottom:1px solid color-mix(in srgb, var(--ink) 10%, transparent);background:color-mix(in srgb, var(--cream) 88%, white);width:100%;margin-left:0;padding:20px 0 24px;position:relative;overflow:hidden}.skill-marquee:before,.skill-marquee:after{z-index:1;pointer-events:none;content:"";width:90px;position:absolute;top:0;bottom:0}.skill-marquee:before{background:linear-gradient(90deg, var(--cream), transparent);left:0}.skill-marquee:after{background:linear-gradient(270deg, var(--cream), transparent);right:0}.skill-marquee__track{width:max-content;animation:28s linear infinite skills-slide;display:flex}.skill-tile{width:170px;color:color-mix(in srgb, var(--ink) 70%, transparent);text-align:center;flex-direction:column;flex:0 0 170px;align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.skill-tile__icon{border:1px solid color-mix(in srgb, var(--ink) 14%, transparent);background:color-mix(in srgb, var(--cream) 72%, white);width:42px;height:42px;box-shadow:0 4px 14px color-mix(in srgb, var(--ink) 6%, transparent);color:var(--sage-strong);border-radius:10px;place-items:center;font-family:Georgia,serif;font-size:22px;font-weight:400;display:grid}@keyframes skills-slide{to{transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.skill-marquee__track{animation:none}}.site-footer{padding:32px var(--gutter) 40px}.site-footer__inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 24px;max-width:1440px;margin:0 auto;display:flex}.site-footer__email{font-family:var(--font-display);color:var(--ink);font-size:15px;font-weight:600;text-decoration:none}.site-footer__email:hover{text-underline-offset:3px;text-decoration:underline}.site-footer__clock{color:color-mix(in srgb, var(--ink) 58%, transparent);font-variant-numeric:tabular-nums;align-items:center;gap:8px;font-size:13px;display:inline-flex}.site-footer__clock-dot{background:var(--sage-strong);border-radius:50%;width:6px;height:6px;animation:2.4s ease-in-out infinite footer-clock-pulse}@keyframes footer-clock-pulse{0%,to{opacity:1}50%{opacity:.25}}@media (prefers-reduced-motion:reduce){.site-footer__clock-dot{animation:none}}.site-footer__links{gap:24px;display:flex}.site-footer__links a{color:var(--ink);align-items:center;gap:8px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.site-footer__links a:hover{color:var(--sage-strong)}.cursor-trail{z-index:50;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.lattice-svg{pointer-events:none;width:110%;height:110%;position:absolute;inset:-5%}.lattice__edge{fill:none;stroke:var(--cream);stroke-opacity:.28;stroke-width:1.5px;stroke-dasharray:1;stroke-dashoffset:0}.lattice__dot{fill:var(--cream);opacity:.16}.lattice__atom{fill:var(--accent-on-ink);transform-box:fill-box;transform-origin:50%}.lattice__atom--ring{fill:none;stroke:var(--accent-on-ink);stroke-width:2.4px}.projects-page{min-height:100vh;padding:88px var(--gutter) 96px;position:relative}.projects-page__back{border:2px solid var(--ink);background:var(--cream);letter-spacing:.08em;width:76px;height:52px;color:var(--ink);place-items:center;font-size:13px;font-weight:700;text-decoration:none;transition:color .15s,background-color .15s,transform 80ms linear;display:grid;position:relative}.projects-page__back:before,.projects-page__back:after{content:"";background:var(--cream);transition:all .15s linear;position:absolute}.projects-page__back:before{width:calc(100% + 6px);height:calc(100% - 20px);top:10px;left:-3px}.projects-page__back:after{width:calc(100% - 20px);height:calc(100% + 6px);top:-3px;left:10px}.projects-page__back:hover{background:var(--ink);color:var(--cream);cursor:crosshair}.projects-page__back:hover:before{height:calc(100% - 34px);top:17px}.projects-page__back:hover:after{width:calc(100% - 34px);left:17px}.projects-page__back:active{transform:scale(.95)}.projects-page__back span{z-index:1;position:relative}.projects-page__inner{max-width:1240px;margin:0 auto}.projects-page__intro{text-align:left}.projects-page__intro h1{font-family:var(--font-display);font-size:clamp(32px,4.5vw,56px);font-weight:600;line-height:1.08}.project-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:56px;display:grid}.project-card{border:1px solid color-mix(in srgb, var(--ink) 22%, transparent);grid-template-rows:auto 1fr auto;align-items:start;gap:20px;min-height:330px;padding:28px;transition:background-color .2s;display:grid}.project-card:hover{background:color-mix(in srgb, var(--sage) 12%, transparent)}.project-card--media{grid-template-rows:auto auto 1fr auto;gap:12px;padding:0 0 24px}.project-card--media .project-card__number,.project-card--media .project-card__body{padding-left:28px;padding-right:28px}.project-card__media{aspect-ratio:16/9;border-bottom:1px solid color-mix(in srgb, var(--ink) 22%, transparent);background:color-mix(in srgb, var(--ink) 6%, transparent);overflow:hidden}.project-card__media img,.project-card__media video{object-fit:cover;object-position:top;width:100%;height:100%;display:block}.project-card__media video{object-fit:contain}.project-card--media .project-card__number{margin-top:20px}.tribo-graphic{width:100%;height:100%;padding:6% 10%;display:block}.tribo-graphic__air path{stroke:var(--sage);stroke-dasharray:10 8;animation:1.4s linear infinite tribo-air}.tribo-graphic__fan{fill:var(--terracotta-strong);transform-origin:170px 88px;animation:1.6s linear infinite tribo-spin}.tribo-graphic__hub{fill:var(--cream);stroke:var(--terracotta-strong);stroke-width:3px}.tribo-graphic__wire path{stroke:color-mix(in srgb, var(--ink) 55%, transparent)}.tribo-graphic__load{fill:none;stroke:var(--terracotta-strong);stroke-width:2px}.tribo-graphic__bolt{fill:var(--terracotta-strong);animation:1.4s ease-in-out infinite tribo-pulse}@keyframes tribo-air{to{stroke-dashoffset:-36px}}@keyframes tribo-spin{to{transform:rotate(360deg)}}@keyframes tribo-pulse{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.tribo-graphic__air path,.tribo-graphic__fan,.tribo-graphic__bolt{animation:none}}.project-card--media h2{font-size:clamp(22px,2.2vw,28px)}.project-card--media .project-card__description{margin-top:8px;font-size:14px;line-height:1.5}.project-card--media .project-card__tags{margin-top:14px}.project-card__links{flex-wrap:wrap;gap:8px 24px;margin-top:20px;display:flex}.project-card__links .project-card__visit{margin-top:0}.project-card__visit{z-index:1;letter-spacing:.02em;color:var(--terracotta-strong);align-items:center;gap:6px;margin-top:20px;font-size:13px;font-weight:700;text-decoration:none;transition:gap .15s;display:inline-flex;position:relative}.project-card__visit:hover{text-underline-offset:3px;gap:10px;text-decoration:underline}.project-card__number{font-family:var(--font-display);color:var(--terracotta-strong);font-size:20px}.project-card__type{letter-spacing:.08em;text-transform:uppercase;color:var(--sage-strong);font-size:11px;font-weight:700}.project-card h2{font-family:var(--font-display);margin-top:8px;font-size:clamp(28px,3.5vw,44px);font-weight:600;line-height:1.1}.project-card__description{color:color-mix(in srgb, var(--ink) 76%, transparent);margin-top:14px}.project-card__tags{flex-wrap:wrap;gap:8px;margin-top:20px;display:flex}.project-card__tags span{border:1px solid color-mix(in srgb, var(--sage-strong) 40%, transparent);color:var(--sage-strong);border-radius:999px;padding:5px 10px;font-size:11px}.project-card>svg{color:var(--terracotta-strong);justify-self:end}@media (width<=960px){.hero__inner{grid-template-columns:minmax(0,1fr);gap:48px}.hero__visual{width:100%;max-width:560px}.project-list,.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=800px){.site-header{justify-content:space-between;display:flex}.site-nav{display:none}}@media (width<=480px){.hero__lede{font-size:15px}.hero__actions{gap:8px}.hero__actions .btn{padding-left:.7em;padding-right:.7em;font-size:11px}.hero__actions .btn__text{gap:6px;padding-left:1.5em}.projects-page{padding:64px var(--gutter) 72px}.project-list{grid-template-columns:1fr;margin-top:40px}.project-card{grid-template-columns:36px minmax(0,1fr);gap:12px;padding:24px 0}.project-card>svg{display:none}.content-section{padding:64px var(--gutter) 72px}.skills-grid{grid-template-columns:1fr;margin-top:40px}.experience-list{margin-top:40px}.experience-item{grid-template-columns:1fr;gap:8px}.experience-item__year{font-size:14px}.project-card--media{grid-template-columns:36px minmax(0,1fr);padding:0 0 24px}.project-card--media .project-card__media{aspect-ratio:16/9;grid-column:1/-1;margin-bottom:20px}.project-card--media .project-card__number,.project-card--media .project-card__body{padding-left:0;padding-right:0}.project-card--media .project-card__number{margin-top:0}.site-footer__inner{flex-direction:column;align-items:flex-start}}
