@font-face{font-family:Syne Variable;font-style:normal;font-display:swap;font-weight:400 800;src:url(/assets/syne-greek-wght-normal-5tOOQDeJ.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Syne Variable;font-style:normal;font-display:swap;font-weight:400 800;src:url(/assets/syne-latin-ext-wght-normal-JjI8ZrW1.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Syne Variable;font-style:normal;font-display:swap;font-weight:400 800;src:url(/assets/syne-latin-wght-normal-BVsvWWA4.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-cyrillic-ext-wght-normal-C8S-KRRz.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-greek-wght-normal-DL7QRZyv.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-wght-normal-DHIcAJRg.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-ext-wght-normal-EocZY2iu.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #07060b;--bg-2: #0d0b14;--ink: #f1ecf8;--muted: #a59fb4;--faint: rgba(241, 236, 248, .12);--pink: #ff3d7f;--violet: #7a5cff;--cyan: #00e0c6;--blue: #2b59ff;--amber: #ffb86b;--grad: linear-gradient(100deg, var(--amber) 0%, var(--pink) 30%, var(--violet) 62%, var(--cyan) 100%);--f-display: "Syne Variable", "Syne", ui-sans-serif, system-ui, sans-serif;--f-body: "Manrope Variable", "Manrope", ui-sans-serif, system-ui, sans-serif;--f-mono: "JetBrains Mono Variable", ui-monospace, "SFMono-Regular", Menlo, monospace;--gutter: clamp(1.25rem, 4vw, 4rem);--max: 1600px;--ease: cubic-bezier(.22, 1, .36, 1);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;overflow-x:clip}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:clamp(1rem,.95rem + .25vw,1.125rem);line-height:1.65;overflow-x:clip;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img,svg,canvas{display:block;max-width:100%}[hidden]{display:none!important}a{color:inherit}h1,h2,h3{text-wrap:balance}::selection{background:var(--pink);color:#fff}:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}.sr-only{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip{position:fixed;left:1rem;top:-4rem;z-index:200;padding:.6rem 1rem;background:var(--ink);color:var(--bg);font-family:var(--f-mono);font-size:.8rem;text-decoration:none;transition:top .3s var(--ease)}.skip:focus{top:1rem}.grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}.grain{position:fixed;inset:0;z-index:100;pointer-events:none;opacity:.06;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.cursor-glow{position:fixed;left:0;top:0;z-index:1;width:38vmax;aspect-ratio:1;border-radius:50%;pointer-events:none;background:radial-gradient(circle,rgba(122,92,255,.13),rgba(255,61,127,.05) 35%,transparent 65%);mix-blend-mode:screen;opacity:0;transition:opacity .6s}.cursor-glow.is-on{opacity:1}.section-label{display:flex;align-items:center;gap:.75rem;font-family:var(--f-mono);font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}.section-label i{font-style:normal;color:var(--pink)}.section-label:after{content:"";width:3rem;height:1px;background:var(--faint)}.js .reveal{opacity:0;transform:translate3d(0,26px,0);filter:blur(6px);transition:opacity .9s var(--ease) var(--d, 0ms),transform 1s var(--ease) var(--d, 0ms),filter .9s var(--ease) var(--d, 0ms)}.js .reveal.is-in{opacity:1;transform:none;filter:none}.nav{position:fixed;inset:0 0 auto;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:1.25rem var(--gutter);mix-blend-mode:difference;color:#fff}.nav__mark{font-family:var(--f-display);font-weight:800;font-size:1.25rem;letter-spacing:-.02em;text-decoration:none}.nav__mark span{display:inline-block;margin-left:.1em;transition:rotate .5s var(--ease)}.nav__mark:hover span{rotate:90deg}.nav ul{display:flex;gap:clamp(.9rem,2.5vw,2.25rem);margin:0;padding:0;list-style:none}.nav ul a{position:relative;display:block;padding:.3rem 0;font-family:var(--f-mono);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;text-decoration:none}.nav ul i{font-style:normal;opacity:.5;margin-right:.4em}.nav ul a:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease)}.nav ul a:hover:after,.nav ul a[aria-current]:after{transform:scaleX(1);transform-origin:left}.hero{position:relative;display:grid;align-items:end;min-height:100vh;min-height:100svh;padding:7rem var(--gutter) 5.5rem;overflow:hidden;isolation:isolate}.hero__canvas,.hero__blobs{position:absolute;inset:0;width:100%;height:100%}.hero__canvas{z-index:-3}.hero__blobs{z-index:-2;mix-blend-mode:screen;pointer-events:none}.hero__blobs .blob--a{opacity:.78}.hero:after{content:"";position:absolute;inset:auto 0 0;z-index:-1;height:30%;background:linear-gradient(transparent,var(--bg));pointer-events:none}.hero__content{position:relative;width:100%;max-width:var(--max);margin:0 auto;transform:translate3d(0,calc(var(--hs, 0) * -90px),0);opacity:calc(1 - var(--hs, 0) * 1.1)}.eyebrow{display:inline-flex;align-items:center;gap:.65rem;margin:0;padding:.45rem .9rem .45rem .75rem;border-left:1px solid var(--cyan);background:#07060b59;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-family:var(--f-mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:#f1ecf8cc}.dot{width:.5rem;height:.5rem;border-radius:50%;background:var(--cyan);animation:pulse 2.4s ease-out infinite}.hero__title{margin:.2em 0 .35em;font-family:var(--f-display);font-weight:800;font-size:clamp(3rem,13vw,15rem);line-height:.84;letter-spacing:-.045em}.hero__title .word{white-space:nowrap}.hero__title .line{display:block;overflow:hidden;padding:.02em 0 .08em}.hero__title .line--offset{padding-left:clamp(1.5rem,14vw,14rem)}.hero__title .line--offset .char{background:var(--grad);background-size:400% 100%;-webkit-background-clip:text;background-clip:text;color:transparent}.hero__title .line--offset .char:nth-child(2){background-position:33% 0}.hero__title .line--offset .char:nth-child(3){background-position:66% 0}.hero__title .line--offset .char:nth-child(4){background-position:100% 0}html:not(.js) .hero__title .line--offset .word{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}.char{display:inline-block;transform:translateY(110%);animation:rise 1.2s var(--ease) forwards;animation-delay:calc(var(--i) * 55ms + .15s);transition:translate .6s var(--ease),color .4s}.char:hover{translate:0 -.07em}.hero__tagline{max-width:34ch;margin:0 6vw 0 auto;font-size:clamp(1.1rem,1rem + .6vw,1.5rem);line-height:1.45;color:#f1ecf8db}.hero__tagline em{font-style:normal;font-weight:700;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}.hero__meta{position:absolute;left:var(--gutter);right:var(--gutter);bottom:1.4rem;display:flex;justify-content:space-between;align-items:center;font-family:var(--f-mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.hero__scroll{display:inline-flex;align-items:center;gap:.6rem}.hero__scroll b{width:1px;height:2.2rem;background:linear-gradient(var(--ink),transparent);transform-origin:top;animation:drip 2.2s var(--ease) infinite}.about{position:relative;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,2vw,2rem);max-width:var(--max);margin:0 auto;padding:clamp(6rem,14vw,12rem) var(--gutter);isolation:isolate}.about__art{position:absolute;z-index:-1;left:-6vw;bottom:-4vw;width:min(58vw,760px);opacity:.4;mix-blend-mode:screen;pointer-events:none;-webkit-mask-image:radial-gradient(circle,#000 35%,transparent 70%);mask-image:radial-gradient(circle,#000 35%,transparent 70%);transform:translate3d(0,calc((var(--p, .5) - .5) * -160px),0) rotate(calc(var(--p, 0) * 70deg))}.about .section-label{grid-column:1 / -1;margin-bottom:2rem}.about__statement{grid-column:1 / 11;margin:0;font-family:var(--f-display);font-weight:600;font-size:clamp(1.9rem,1.2rem + 3.3vw,4.4rem);line-height:1.06;letter-spacing:-.03em}.about__body{grid-column:7 / 13;margin-top:clamp(3rem,6vw,6rem);color:#f1ecf8c7}.about__body p{margin:0 0 1.25em}.about__meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:2.5rem 0 0;border-top:1px solid var(--faint)}.about__meta div{padding:1rem 0;border-bottom:1px solid var(--faint)}.about__meta div:nth-child(2n){padding-left:1.25rem;border-left:1px solid var(--faint)}.about__meta dt{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.about__meta dd{margin:.3rem 0 0;font-weight:600;color:var(--ink)}.skills{position:relative;padding:clamp(5rem,10vw,9rem) 0 clamp(3rem,6vw,5rem);background:radial-gradient(ellipse 60% 50% at 80% 10%,rgba(122,92,255,.13),transparent 70%),radial-gradient(ellipse 50% 40% at 10% 90%,rgba(0,224,198,.08),transparent 70%),linear-gradient(var(--bg),var(--bg-2) 12%,var(--bg-2) 88%,var(--bg))}.skills__head,.projects__head{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}.skills__head{display:grid;grid-template-columns:1fr auto;align-items:end;column-gap:2rem}.skills__head .section-label{grid-column:1 / -1}.skills h2,.projects h2{margin:.45em 0 0;font-family:var(--f-display);font-weight:700;font-size:clamp(2.4rem,1.5rem + 4.5vw,5.6rem);line-height:.95;letter-spacing:-.035em}.skills__hint{max-width:28ch;margin:0;font-size:.9rem;color:var(--muted)}.constellation{position:relative;height:clamp(600px,84vh,880px);margin-top:1.5rem;cursor:crosshair;touch-action:pan-y;user-select:none;-webkit-user-select:none}.constellation canvas,.constellation__labels{position:absolute;inset:0;width:100%;height:100%}.constellation__labels{pointer-events:none}.c-label{position:absolute;left:0;top:0;white-space:nowrap;will-change:transform;transition:opacity .45s var(--ease),color .45s}.c-label--hub{font-family:var(--f-display);font-weight:700;font-size:clamp(.95rem,.8rem + .5vw,1.3rem);letter-spacing:-.01em;color:var(--c);text-shadow:0 0 24px rgba(7,6,11,.9)}.c-label--skill{font-family:var(--f-mono);font-size:.74rem;color:#f1ecf8b8;text-shadow:0 0 10px rgba(7,6,11,.95)}.constellation[data-active] .c-label{opacity:.18}.constellation[data-active] .c-label.is-active{opacity:1}.c-label--skill.is-active{color:#fff}.js .skills__list{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.projects__head{padding-top:clamp(6rem,12vw,10rem);padding-bottom:clamp(3rem,6vw,5rem)}.project{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:center;gap:clamp(2.5rem,6vw,7rem);min-height:min(100svh,940px);padding:clamp(4.5rem,9vw,8rem) max(var(--gutter),calc((100vw - var(--max)) / 2));overflow:hidden;isolation:isolate}.project__text{position:relative;max-width:36rem;container-type:inline-size}.project__desc{margin:1.4rem 0 1.8rem}.tags{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 2.4rem;padding:0;list-style:none}.project__link{position:relative;display:inline-flex;align-items:center;gap:.6rem;font-weight:700;text-decoration:none}.project__link span{transition:translate .4s var(--ease)}.project__link:hover span{translate:.35rem 0}.project__link--disabled{cursor:default;opacity:.6}.project--elr{--red: #ff2e2e;--paper: #e9e6e1;color:var(--paper);background-color:#141414;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:64px 64px;border-block:1px solid #2a2a2a}.project--elr,.project--elr *{border-radius:0!important}.elr__kicker{margin:0;padding-top:.9rem;border-top:4px solid var(--paper);font-family:var(--f-mono);font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--red)}.elr__title{margin:.7rem 0 0;font-family:var(--f-display);font-weight:800;font-size:min(clamp(2.6rem,1rem + 5vw,7rem),14cqi);line-height:.86;letter-spacing:-.045em;text-transform:uppercase}.project--elr .project__desc{padding-left:1.1rem;border-left:3px solid var(--red);color:#b9b5ae}.project--elr .tags li{padding:.45rem .7rem;border:1px solid #3a3a3a;font-family:var(--f-mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:#cfcac2}.project--elr .project__link{padding:.95rem 1.35rem;background:var(--paper);color:#141414;font-family:var(--f-mono);font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;transition:background .25s,color .25s}.project--elr .project__link:hover{background:var(--red);color:#fff}.elr__art{position:relative;justify-self:center;width:100%;max-width:560px;aspect-ratio:1;overflow:hidden;background:#0c0c0c;border:1px solid #2e2e2e;transform:translate3d(0,calc((var(--p, .5) - .5) * -60px),0)}.elr__layers{position:absolute;inset:8%;display:grid;grid-template-rows:repeat(8,1fr);gap:6px;counter-reset:layer}.elr__layers span{position:relative;background:linear-gradient(90deg,#2c2c2c,#1a1a1a);transform-origin:left;animation:layer 5s var(--ease) infinite alternate}.elr__layers span:before{counter-increment:layer;content:"0" counter(layer);position:absolute;left:.6rem;top:50%;translate:0 -50%;font-family:var(--f-mono);font-size:.6rem;letter-spacing:.1em;color:#777}.elr__layers span:nth-child(1){animation-duration:6.2s;animation-delay:-1s}.elr__layers span:nth-child(2){animation-duration:4.8s;animation-delay:-3s}.elr__layers span:nth-child(3){animation-duration:7.1s;animation-delay:-2s}.elr__layers span:nth-child(4){animation-duration:5.4s;animation-delay:-4s}.elr__layers span:nth-child(5){animation-duration:6.6s;animation-delay:-.5s}.elr__layers span:nth-child(6){animation-duration:4.4s;animation-delay:-2.5s}.elr__layers span:nth-child(7){animation-duration:5.9s;animation-delay:-1.5s}.elr__layers span:nth-child(8){background:var(--red);animation-duration:8s}.elr__layers span:nth-child(8):before{content:"08 · the human layer";color:#140000;font-weight:700}.elr__scan{position:absolute;inset-inline:0;top:-18%;height:18%;background:linear-gradient(transparent,rgba(255,46,46,.16),transparent);animation:scan 5.5s linear infinite;pointer-events:none}.elr__redact{position:absolute;right:6%;bottom:6%;display:grid;gap:8px;width:44%;padding:1rem;background:var(--paper);box-shadow:10px 10px #000}.elr__redact b{display:block;width:82%;height:9px;background:#141414;animation:redact 4s steps(1) infinite}.elr__redact b:nth-child(2){width:64%;animation-delay:-1.3s}.elr__redact b:nth-child(3){width:91%;animation-delay:-2.1s}.elr__redact b:nth-child(4){width:40%;animation-delay:-.7s}.project--margins{--ink-w: #3b2d24;--rose: #c46f60;--sage: #7d8f6d;color:var(--ink-w);background:radial-gradient(ellipse 70% 60% at 85% 30%,rgba(226,169,91,.35),transparent 65%),radial-gradient(ellipse 60% 70% at 10% 100%,rgba(201,120,106,.2),transparent 60%),linear-gradient(160deg,#f6eee2,#ecdcc6)}.margins__kicker{margin:0;font-size:.78rem;font-weight:600;letter-spacing:.3em;text-transform:uppercase;color:var(--rose)}.margins__title{margin:.4rem 0 0;font-family:var(--f-display);font-weight:500;font-size:clamp(3.4rem,2rem + 6vw,8rem);line-height:.9;letter-spacing:-.035em}.project--margins .project__desc{font-size:1.07rem;line-height:1.8;color:#5b4a3e}.project--margins .tags li{padding:.4rem .95rem;border-radius:999px;background:#7d8f6d2e;font-size:.82rem;font-weight:600;color:#4a5840}.project--margins .project__link{padding-bottom:.3rem;border-bottom:1px solid currentColor}.project--margins .project__link--disabled{border-bottom-style:dashed}.margins__art{position:relative;display:grid;place-items:center;min-height:480px}.margins__sun{position:absolute;top:2%;right:4%;width:min(72%,440px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 42% 42%,#ffdca3,#eaa65c 38%,#d6806059 58%,#d6806000 72%);animation:breathe 10s ease-in-out infinite}.margins__page{position:relative;width:min(88%,430px);padding:2.5rem 2rem 2.5rem 3.8rem;line-height:32px;border-radius:2px;background:repeating-linear-gradient(transparent 0 31px,#3b2d2417 31px 32px) #fffaf2;background-position:0 2.5rem;box-shadow:0 40px 70px -35px #643c1980,0 1px #0000000a;transform:translate3d(0,calc((var(--p, .5) - .5) * -50px),0) rotate(calc(-3deg + var(--p, .5) * 4deg))}.margins__rule{position:absolute;top:0;bottom:0;left:2.5rem;width:1px;background:#c46f608c}.margins__page p{margin:0;font-size:.95rem;color:#4a3a2f}.margins__page sup{margin-right:.35em;font-size:.65em;font-weight:700;color:var(--rose)}.margins__page .hl{background:linear-gradient(transparent 55%,#eaa65c80 55%) no-repeat 0 0 / 0% 100%;transition:background-size 1.4s var(--ease) .6s}.project--margins.is-in .hl{background-size:100% 100%}.margins__note{margin-left:-1.6rem!important;font-style:italic;font-size:.85rem!important;color:var(--rose)!important;rotate:-2deg}.project--fig{--cream: #fbefe3;--rose: #e7a9b4;--rose-d: #b4607a;--lav: #b9a3dc;--plum: #2c1f2f;color:var(--cream);background-color:var(--plum);background-image:radial-gradient(ellipse 60% 55% at 20% 40%,rgba(231,169,180,.26),transparent 70%),radial-gradient(ellipse 50% 60% at 90% 90%,rgba(185,163,220,.24),transparent 70%),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='24'%3E%3Cpath d='M3 3 Q8 20 14 21 Q20 20 25 3' fill='none' stroke='%23e7a9b4' stroke-opacity='.07' stroke-width='2.5' stroke-linecap='round'/%3E%3C/svg%3E")}.project--fig:before{content:"";position:absolute;inset:0 0 auto;height:16px;background:radial-gradient(circle at 14px 0,#ecdcc6 13px,transparent 13.5px) repeat-x;background-size:28px 16px}.fig__kicker{margin:0;font-size:.85rem;font-weight:600;letter-spacing:.16em;color:var(--rose)}.fig__title{margin:.5rem 0 0;padding-bottom:.4em;font-family:var(--f-display);font-weight:600;font-size:clamp(2.8rem,1.6rem + 5vw,6.5rem);line-height:.95;letter-spacing:-.025em;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 20' preserveAspectRatio='none'%3E%3Cpath d='M2 12 C 20 2, 35 2, 50 11 S 80 20, 100 11 S 130 2, 150 11 S 180 20, 200 11 S 230 2, 250 11 S 280 20, 298 9' fill='none' stroke='%23e7a9b4' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat left bottom / min(100%,22rem) .45em}.project--fig .project__desc{color:#fbefe3cc}.project--fig .tags li{padding:.4rem .85rem;border:1.5px dashed rgba(231,169,180,.6);border-radius:8px;background:#e7a9b414;font-size:.82rem;color:var(--cream)}.project--fig .project__link{padding:.8rem 1.4rem;border-radius:999px;background:var(--rose);color:var(--plum);outline:1.5px dashed var(--rose);outline-offset:4px;transition:background .3s,outline-color .3s}.project--fig .project__link:hover{background:var(--cream);outline-color:var(--cream)}.fig__art{position:relative;display:grid;place-items:center;justify-self:center;width:100%;max-width:520px;aspect-ratio:1}.fig__stitch{position:absolute;inset:3%;border:2px dashed rgba(231,169,180,.45);border-radius:46% 54% 42% 58%/55% 45%;animation:spin 70s linear infinite}.fig__stitch:after{content:"";position:absolute;inset:7%;border:1.5px dashed rgba(185,163,220,.4);border-radius:58% 42% 55% 45%/45% 58% 42% 55%}.fig__yarn{position:relative;width:86%;overflow:visible;transform:rotate(calc(var(--p, .5) * 50deg - 25deg))}.fig__ball{fill:var(--rose)}.fig__knit{color:var(--rose-d);opacity:.75}.fig__knit rect{animation:knit 6s linear infinite}.fig__strand{stroke:var(--rose);stroke-width:5;stroke-linecap:round;stroke-dasharray:620;stroke-dashoffset:620;transition:stroke-dashoffset 2.6s var(--ease) .3s}.project--fig.is-in .fig__strand,html:not(.js) .fig__strand{stroke-dashoffset:0}.contact{position:relative;max-width:var(--max);margin:0 auto;padding:clamp(7rem,15vw,13rem) var(--gutter) clamp(5rem,10vw,8rem);isolation:isolate}.contact__glow{position:absolute;z-index:-1;right:max(-10vw,-120px);top:5%;width:min(80vw,820px);aspect-ratio:1;border-radius:43% 57% 61% 39%/45% 38% 62% 55%;background:conic-gradient(from 0deg,var(--pink),var(--violet),var(--cyan),var(--amber),var(--pink));filter:blur(90px);opacity:.3;animation:spin 40s linear infinite;pointer-events:none}.contact__title{margin:.5em 0 .15em;font-family:var(--f-display);font-weight:700;font-size:clamp(2.5rem,1.5rem + 5vw,6rem);line-height:.95;letter-spacing:-.035em}.contact__email{position:relative;display:inline-block;padding-bottom:.08em;font-family:var(--f-display);font-weight:800;font-size:clamp(1.5rem,6.6vw,7.5rem);line-height:1.02;letter-spacing:-.045em;text-decoration:none;background:linear-gradient(100deg,var(--amber),var(--pink),var(--violet),var(--cyan),var(--amber)) 0 0 / 300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:flow 14s linear infinite}.contact__email:after{content:"";position:absolute;left:0;right:0;bottom:0;height:max(2px,.03em);background:var(--grad);transform:scaleX(0);transform-origin:right;transition:transform .7s var(--ease)}.contact__email:hover:after{transform:scaleX(1);transform-origin:left}.contact__links{display:flex;flex-wrap:wrap;gap:2rem;margin:3rem 0 0;padding:0;list-style:none}.contact__links a{display:inline-flex;align-items:baseline;gap:.75rem;padding-bottom:.3rem;font-size:1.1rem;text-decoration:none;background:linear-gradient(currentColor,currentColor) no-repeat 0 100% / 0 1px;transition:background-size .5s var(--ease)}.contact__links a:hover{background-size:100% 1px}.contact__links a span:first-child{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.contact__intro{max-width:44ch;margin:1.25rem 0 0;font-size:clamp(1.05rem,1rem + .35vw,1.3rem);line-height:1.5;color:#f1ecf8cc}.contact__or{margin:clamp(4rem,8vw,6.5rem) 0 .75rem;font-family:var(--f-mono);font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}.inquiry{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2.5rem clamp(1.5rem,3vw,3rem);max-width:60rem;margin:3.5rem 0 0;transition:opacity .45s var(--ease),filter .45s var(--ease),translate .45s var(--ease)}.inquiry.is-leaving{opacity:0;filter:blur(8px);translate:0 -16px}.field{position:relative;display:grid;align-content:start;gap:.6rem;min-width:0;margin:0;padding:0;border:0}.field--full{grid-column:1 / -1}.field__label{padding:0;font-family:var(--f-mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);transition:color .4s var(--ease)}.field__label i{margin-right:.6rem;font-style:normal;color:var(--pink)}.field:focus-within .field__label{color:var(--ink)}.field__control{position:relative}.field__input{display:block;width:100%;padding:.5rem 0 .75rem;border:0;border-bottom:1px solid var(--faint);border-radius:0;background:transparent;color:var(--ink);font-family:var(--f-body);font-size:max(16px,clamp(1.05rem,1rem + .4vw,1.35rem));line-height:1.4;caret-color:var(--pink);-webkit-appearance:none;appearance:none;outline:none;transition:border-color .4s var(--ease)}.field__input:hover{border-bottom-color:#f1ecf852}textarea.field__input{min-height:7.5rem;resize:vertical;line-height:1.55}.field__input:-webkit-autofill{-webkit-text-fill-color:var(--ink);box-shadow:0 0 0 100px var(--bg) inset;transition:background-color 9999s}.field__line{position:absolute;left:0;right:0;bottom:0;height:2px;background:linear-gradient(90deg,var(--amber),var(--pink),var(--violet),var(--cyan),var(--amber)) 0 0 / 300% 100%;box-shadow:0 0 18px #ff3d7f73;transform:scaleX(0);transform-origin:right;transition:transform .7s var(--ease);pointer-events:none}.field:focus-within .field__line{transform:scaleX(1);transform-origin:left;animation:flow 6s linear infinite}.field.is-invalid .field__line{transform:scaleX(1);background:var(--pink);box-shadow:0 0 14px #ff3d7f80}.field__error{margin:0;font-size:.82rem;color:#ff8fb1}.field__error:empty{display:none}.choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;margin-top:.9rem}.choice{position:relative;display:block;cursor:pointer}.choice__input{position:absolute;top:0;left:0;width:1px;height:1px;margin:0;opacity:0}.choice__body{position:relative;display:grid;gap:.3rem;height:100%;padding:1.1rem 2.6rem 1.15rem 1.15rem;overflow:hidden;isolation:isolate;border:1px solid var(--faint);transition:border-color .4s var(--ease),color .4s var(--ease),translate .5s var(--ease)}.choice__body:before{content:"";position:absolute;z-index:-1;left:30%;top:50%;width:150%;aspect-ratio:1;border-radius:43% 57% 61% 39%/45% 38% 62% 55%;background:var(--grad);translate:-50% -50%;scale:0;transition:scale .7s var(--ease)}.choice:nth-child(2) .choice__body:before{left:50%;background:linear-gradient(140deg,var(--pink),var(--violet) 55%,var(--cyan))}.choice:nth-child(3) .choice__body:before{left:70%;background:conic-gradient(from 0deg,var(--pink),var(--violet),var(--cyan),var(--amber),var(--pink))}.choice:hover .choice__body{border-color:#f1ecf859;translate:0 -2px}.choice__input:checked+.choice__body{border-color:transparent;color:var(--bg)}.choice__input:checked+.choice__body:before{scale:1;animation:spin 16s linear infinite}.choice__input:focus-visible+.choice__body{outline:2px solid var(--cyan);outline-offset:4px}.field.is-invalid .choice__body{border-color:#ff3d7f8c}.choice__name{font-family:var(--f-display);font-weight:700;font-size:1.15rem;letter-spacing:-.01em}.choice__hint{font-size:.82rem;line-height:1.35;color:var(--muted);transition:color .4s var(--ease)}.choice__input:checked+.choice__body .choice__hint{color:#07060bb8}.choice__mark{position:absolute;top:1.15rem;right:1.1rem;width:.85rem;aspect-ratio:1;border:1.5px solid currentColor;border-radius:50%;opacity:.6;transition:opacity .3s,box-shadow .4s var(--ease)}.choice__input:checked+.choice__body .choice__mark{opacity:1;box-shadow:inset 0 0 0 .2rem var(--ink),inset 0 0 0 1rem currentColor}.inquiry__hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.inquiry__error{grid-column:1 / -1;margin:0;padding:.9rem 1.1rem;border-left:2px solid var(--pink);background:#ff3d7f14}.inquiry__error:empty{display:none}.inquiry__actions{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.75rem}.inquiry__note{margin:0;font-size:.85rem;color:var(--muted)}.inquiry__submit{position:relative;display:inline-flex;align-items:center;gap:.9rem;padding:1.05rem 1.6rem;border:0;border-radius:0;cursor:pointer;font-family:var(--f-display);font-weight:700;font-size:1.05rem;letter-spacing:-.01em;color:var(--bg);background:linear-gradient(100deg,var(--amber),var(--pink),var(--violet),var(--cyan),var(--amber)) 0 0 / 300% 100%;transition:background-position .9s var(--ease),box-shadow .5s var(--ease),translate .4s var(--ease)}.inquiry__submit:hover{background-position:50% 0;box-shadow:0 16px 40px -14px #ff3d7fa6;translate:0 -2px}.inquiry__submit:active{translate:0 0}.inquiry__icon{position:relative;display:inline-grid;place-items:center;width:1.1em;height:1.1em}.inquiry__arrow{transition:translate .4s var(--ease),opacity .3s}.inquiry__submit:hover .inquiry__arrow{translate:.35rem 0}.inquiry__spinner{position:absolute;inset:0;border:2px solid currentColor;border-right-color:transparent;border-radius:43% 57% 61% 39%/45% 38% 62% 55%;opacity:0;scale:.4;transition:opacity .3s,scale .4s var(--ease)}.inquiry__submit.is-pending{cursor:progress;animation:flow 1.8s linear infinite;box-shadow:0 16px 40px -14px #7a5cffa6}.inquiry__submit.is-pending .inquiry__arrow{opacity:0;translate:.6rem 0}.inquiry__submit.is-pending .inquiry__spinner{opacity:1;scale:1;animation:spin .9s linear infinite}.sent{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:clamp(1.5rem,4vw,3.5rem);max-width:60rem;margin:3.5rem 0 0;padding:clamp(1.75rem,4vw,3rem) 0;border-block:1px solid var(--faint)}.sent__art{width:clamp(8rem,18vw,12rem);aspect-ratio:1}.sent__art svg{width:100%;height:100%;overflow:visible}.sent__blob,.sent__contours path{transform-box:fill-box;transform-origin:center;scale:0}.sent.is-in .sent__blob{animation:bloom .9s var(--ease) forwards}.sent.is-in .sent__contours path{animation:bloom 1.2s var(--ease) forwards}.sent.is-in .sent__contours path:nth-child(1){animation-delay:.15s}.sent.is-in .sent__contours path:nth-child(2){animation-delay:.28s}.sent.is-in .sent__contours path:nth-child(3){animation-delay:.41s}.sent__check{fill:none;stroke:var(--ink);stroke-width:9;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:90;stroke-dashoffset:90;transition:stroke-dashoffset .8s var(--ease) .55s}.sent.is-in .sent__check{stroke-dashoffset:0}.sent__title{margin:0;font-family:var(--f-display);font-weight:700;font-size:clamp(2rem,1.4rem + 2.6vw,3.6rem);line-height:.95;letter-spacing:-.035em;outline:none}.sent__text{max-width:42ch;margin:.9rem 0 0;color:#f1ecf8cc}.sent__title,.sent__text,.sent__again{opacity:0;translate:0 18px;transition:opacity .8s var(--ease),translate .9s var(--ease)}.sent.is-in .sent__title{opacity:1;translate:0 0;transition-delay:.3s}.sent.is-in .sent__text{opacity:1;translate:0 0;transition-delay:.42s}.sent.is-in .sent__again{opacity:1;translate:0 0;transition-delay:.54s}.sent__again{margin-top:1.5rem;padding:0 0 .3rem;border:0;cursor:pointer;font-family:var(--f-mono);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);background:linear-gradient(currentColor,currentColor) no-repeat 0 100% / 0 1px;transition:opacity .8s var(--ease),translate .9s var(--ease),background-size .5s var(--ease),color .3s}.sent__again:hover{color:var(--ink);background-size:100% 1px}@media(forced-colors:active){.field__input:focus{outline:2px solid CanvasText}.choice__input:checked+.choice__body{outline:2px solid Highlight}}.footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;padding:1.5rem var(--gutter) 2rem;border-top:1px solid var(--faint);font-family:var(--f-mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}html:not(.js) .constellation{display:none}html:not(.js) .skills__list{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:2rem;max-width:var(--max);margin:3rem auto 0;padding:0 var(--gutter)}@keyframes rise{to{transform:translateY(0)}}@keyframes pulse{0%{box-shadow:0 0 #00e0c699}to{box-shadow:0 0 0 .7rem #00e0c600}}@keyframes drip{0%{transform:scaleY(0);opacity:1}60%{transform:scaleY(1);opacity:1}to{transform:scaleY(1);opacity:0}}@keyframes layer{0%{transform:scaleX(.3)}to{transform:scaleX(1)}}@keyframes scan{to{transform:translateY(660%)}}@keyframes redact{0%,to{opacity:1}88%{opacity:.1}92%{opacity:1}}@keyframes breathe{0%,to{transform:scale(1) translate(0)}50%{transform:scale(1.07) translate(-3%,3%)}}@keyframes spin{to{rotate:360deg}}@keyframes flow{to{background-position:300% 0}}@keyframes bloom{0%{scale:0;rotate:-40deg}to{scale:1;rotate:0deg}}@keyframes knit{to{transform:translateY(24px)}}@media(max-width:900px){.about__statement,.about__body{grid-column:1 / -1}.about__art{width:90vw}.skills__head{grid-template-columns:1fr}.skills__hint{margin-top:1.25rem}.project{grid-template-columns:1fr;min-height:0}.margins__art{order:-1;min-height:400px}.elr__art,.fig__art{max-width:440px}.hero__tagline{margin:0}}@media(max-width:759px){.constellation{height:1650px}}@media(max-width:600px){.nav ul i{display:none}.nav ul a{font-size:.68rem}.hero{padding-bottom:5rem}.hero__meta{justify-content:center}.hero__meta span:not(.hero__scroll){display:none}.eyebrow{font-size:.62rem}.about__meta{grid-template-columns:1fr}.about__meta div:nth-child(2n){padding-left:0;border-left:0}.margins__art{min-height:340px}.margins__page{padding:1.8rem 1.25rem 1.8rem 3rem}.margins__rule{left:2rem}.elr__redact{width:58%}.inquiry{grid-template-columns:1fr;gap:2.25rem}.choices{grid-template-columns:1fr}.inquiry__submit{width:100%;justify-content:center}.sent{grid-template-columns:1fr}.sent__art{width:7rem}}@media(pointer:coarse){.cursor-glow{display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;animation-delay:0ms!important;transition-duration:.001ms!important;transition-delay:0ms!important}}
