:root{--ink: #0b0a09;--panel: #100e0c;--paper: #ece6db;--paper-dim: rgba(236, 230, 219, .58);--paper-faint: rgba(236, 230, 219, .14);--accent: #e0975a;--col: 52%}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:JetBrains Mono,ui-monospace,monospace;color:var(--paper);background:var(--ink);-webkit-font-smoothing:antialiased;overflow-x:hidden}.loader{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.6rem;background:var(--ink);transition:opacity .7s ease,visibility .7s ease}.loader.done{opacity:0;visibility:hidden}.loader-mark{font-family:Fraunces,Georgia,serif;font-weight:360;font-size:clamp(1.4rem,4vw,2rem);letter-spacing:.01em;color:var(--paper);opacity:0;animation:loaderFade 1.2s ease forwards}.loader-bar{position:relative;width:clamp(120px,30vw,180px);height:1px;background:var(--paper-faint);overflow:hidden}.loader-bar i{position:absolute;inset:0;width:40%;background:var(--accent);animation:loaderSlide 1.3s cubic-bezier(.65,0,.35,1) infinite}@keyframes loaderFade{to{opacity:1}}@keyframes loaderSlide{0%{transform:translate(-120%)}to{transform:translate(320%)}}.video-layer{position:fixed;inset:0;z-index:0;overflow:hidden}.bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.scrim{position:absolute;inset:0;background:linear-gradient(100deg,#080706e0,#080706cc 30%,#08070673 50%,#08070600 68%)}.grain{position:absolute;inset:0;pointer-events:none;opacity:.05;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.content{position:relative;z-index:1;width:var(--col);min-height:100vh;padding:0 clamp(2rem,5vw,5rem)}section,.footer{padding-left:0;padding-right:0}.hero{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;justify-content:center;gap:clamp(1.4rem,2.5vh,2.2rem);padding-top:2rem;padding-bottom:2rem;position:relative}.hero>*,.headline>*{opacity:0;transform:translateY(14px);animation:rise .9s cubic-bezier(.16,1,.3,1) forwards}.topline{animation-delay:.05s}.headline{animation:none;opacity:1;transform:none}.headline .eyebrow{animation-delay:.15s}.headline h1{animation-delay:.25s}.headline .role{animation-delay:.4s}.bio{animation-delay:.55s}.facts{animation-delay:.68s}.links{animation-delay:.8s}.scroll-cue{animation-delay:.95s}@keyframes rise{to{opacity:1;transform:translateY(0)}}.topline{display:flex;align-items:center;justify-content:space-between;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--paper-dim)}.mark{font-weight:500;letter-spacing:.32em;color:var(--paper)}.eyebrow{font-size:.72rem;letter-spacing:.28em;text-transform:uppercase;color:var(--accent);margin-bottom:1.1rem}h1{font-family:Fraunces,Georgia,serif;font-optical-sizing:auto;font-weight:380;font-size:clamp(3.2rem,8vw,7rem);line-height:.92;letter-spacing:-.02em;color:var(--paper)}.role{font-family:Fraunces,Georgia,serif;font-style:italic;font-weight:340;font-size:clamp(1.05rem,1.7vw,1.4rem);color:var(--paper-dim);margin-top:1rem}.bio{max-width:46ch;font-size:.86rem;line-height:1.85;color:var(--paper-dim)}.facts{display:flex;flex-direction:column;gap:.7rem;border-top:1px solid var(--paper-faint);border-bottom:1px solid var(--paper-faint);padding:1.3rem 0}.facts>div{display:grid;grid-template-columns:6.5rem 1fr;gap:1rem;align-items:baseline}.facts dt{font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;color:var(--paper-dim)}.facts dd{font-size:.84rem;color:var(--paper)}.inline-link{color:var(--accent);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .3s ease}.inline-link:hover{border-color:var(--accent)}.with-flag{display:inline-flex;align-items:center;gap:.5rem}.flag{width:.95em;height:.95em;flex:none;border-radius:2px;box-shadow:0 1px 4px #0006}.links{display:flex;gap:.75rem;flex-wrap:wrap}.links a{display:inline-flex;align-items:center;gap:.55rem;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--paper);text-decoration:none;padding:.7rem 1.2rem;border:1px solid var(--paper-faint);border-radius:2px;transition:border-color .3s ease,background .3s ease,color .3s ease}.links a svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;transition:transform .3s cubic-bezier(.16,1,.3,1)}.links a:hover{border-color:var(--accent);color:var(--accent);background:#e0975a0f}.links a:hover svg{transform:translate(2px,-2px)}.scroll-cue{position:absolute;bottom:1.6rem;left:0;display:inline-flex;align-items:center;gap:.6rem;font-size:.66rem;letter-spacing:.22em;text-transform:uppercase;color:var(--paper-dim);text-decoration:none;transition:color .3s ease}.scroll-cue svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;animation:nudge 2s ease-in-out infinite}.scroll-cue:hover{color:var(--accent)}@keyframes nudge{0%,to{transform:translateY(0)}50%{transform:translateY(4px)}}.work{position:relative;padding-top:clamp(3rem,8vh,6rem);padding-bottom:clamp(3rem,8vh,6rem)}.year-mark{position:absolute;top:clamp(1rem,4vh,3rem);right:-.04em;z-index:-1;font-family:Fraunces,Georgia,serif;font-weight:360;font-size:clamp(7rem,18vw,16rem);line-height:.8;letter-spacing:-.03em;color:var(--paper);opacity:.05;pointer-events:none;-webkit-user-select:none;user-select:none}.section-label{font-size:.7rem;letter-spacing:.24em;text-transform:uppercase;color:var(--accent);margin-bottom:2rem}.section-label em{font-family:Fraunces,Georgia,serif;font-style:italic;font-size:.95rem;letter-spacing:0;text-transform:none;color:var(--paper-dim)}.projects{list-style:none}.projects li{border-top:1px solid var(--paper-faint)}.projects li:last-child{border-bottom:1px solid var(--paper-faint)}.projects a{display:grid;grid-template-columns:2.5rem 1fr;gap:1rem;padding:2rem 0;text-decoration:none;color:var(--paper);transition:padding-left .35s cubic-bezier(.16,1,.3,1)}.projects a:hover{padding-left:.6rem}.num{font-size:.7rem;letter-spacing:.1em;color:var(--paper-dim);padding-top:.55rem}.proj-body h3{font-family:Fraunces,Georgia,serif;font-weight:400;font-size:clamp(1.8rem,3.4vw,2.6rem);line-height:1.05;letter-spacing:-.01em;transition:color .3s ease}.projects a:hover h3{color:var(--accent)}.proj-body p{max-width:44ch;margin-top:.7rem;font-size:.82rem;line-height:1.75;color:var(--paper-dim)}.domain{display:inline-block;margin-top:1rem;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--paper-dim);transition:color .3s ease}.projects a:hover .domain{color:var(--accent)}.reveal{opacity:0;transform:translateY(22px);transition:opacity .8s ease,transform .8s cubic-bezier(.16,1,.3,1)}.reveal.in{opacity:1;transform:translateY(0)}.contact{padding-top:clamp(2.5rem,7vh,5rem);padding-bottom:clamp(2.5rem,7vh,5rem)}.contact-line{font-family:Fraunces,Georgia,serif;font-weight:360;font-size:clamp(1.6rem,3.4vw,2.6rem);line-height:1.15;letter-spacing:-.01em;color:var(--paper);margin-bottom:1.6rem}.contact-email{display:inline-flex;align-items:center;gap:.6rem;font-size:clamp(.85rem,1.4vw,1.05rem);letter-spacing:.04em;color:var(--paper);text-decoration:none;padding-bottom:.4rem;border-bottom:1px solid var(--paper-faint);transition:color .3s ease,border-color .3s ease}.contact-email svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;transition:transform .3s cubic-bezier(.16,1,.3,1)}.contact-email:hover{color:var(--accent);border-color:var(--accent)}.contact-email:hover svg{transform:translate(2px,-2px)}@media(max-width:760px){:root{--col: 100%}.content{-webkit-mask-image:none;mask-image:none}.bg{object-position:78% center}.scrim{background:linear-gradient(180deg,#0807068c,#080706b8),radial-gradient(120% 80% at 30% 35%,#08070659,#0807069e)}h1,.bio,.facts dd,.role{text-shadow:0 1px 14px rgba(0,0,0,.55)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero>*,.headline>*,.reveal{animation:none;opacity:1;transform:none;transition:none}.scroll-cue svg{animation:none}}
