:root{--c-primary:#1a1a1a;--c-muted:#999;--c-border:#e5e5e5;--c-bg:#fff;--c-accent:#ccc;--sidebar-w:120px;--topnav-h:56px;--ease-out-expo:cubic-bezier(.22, 1, .36, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{color:var(--c-primary);background:var(--c-bg);font-family:DM Sans,sans-serif;line-height:1.6}body:before{content:"";pointer-events:none;z-index:9999;opacity:.018;background:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E") 0 0/256px 256px;position:fixed;inset:0}a{color:inherit;text-decoration:none}.sidebar{width:var(--sidebar-w);z-index:100;background:var(--c-bg);flex-direction:column;gap:32px;height:100vh;padding:48px 24px;display:flex;position:fixed;top:0;left:0}.sidebar-logo{letter-spacing:-.02em;color:var(--c-primary);flex-direction:column;font-family:Domine,serif;font-size:14px;line-height:1.3;transition:opacity .3s;display:flex}.sidebar-logo:hover{opacity:.6}.sidebar-nav{flex-direction:column;gap:20px;list-style:none;display:flex}.sidebar-nav a{color:var(--c-muted);letter-spacing:.01em;font-size:14px;transition:color .3s;display:inline-block;position:relative}.sidebar-nav a:hover{color:var(--c-primary)}.sidebar-nav a.active{color:var(--c-primary);font-weight:700}.sidebar-bottom{color:var(--c-muted);margin-top:auto;font-size:12px}.divider{top:48px;left:var(--sidebar-w);background:var(--c-border);z-index:100;border-radius:1px;width:1px;height:calc(100vh - 96px);position:fixed}.main{margin-left:calc(var(--sidebar-w) + 1px);min-height:100vh}.section{padding:80px 64px}.page-transition{animation:pageEnter .45s var(--ease-out-expo) both}@keyframes pageEnter{0%{opacity:0;filter:blur(4px);transform:translateY(14px)}to{opacity:1;filter:blur();transform:translateY(0)}}.reveal{opacity:0;animation:revealUp .7s var(--ease-out-expo) forwards;transform:translateY(18px)}@keyframes revealUp{to{opacity:1;transform:translateY(0)}}.about{flex-direction:column;justify-content:center;max-width:720px;min-height:100vh;display:flex}.about-name{letter-spacing:-.03em;margin-bottom:40px;font-family:Domine,serif;font-size:64px;font-weight:400;line-height:1.1}.about-bio p{color:var(--c-primary);max-width:560px;margin-bottom:20px;font-size:16px;line-height:1.75}.about-bio p:last-child{margin-bottom:0}.about-links{gap:24px;margin-top:40px;display:flex}.about-links a{color:var(--c-muted);background-image:linear-gradient(var(--c-accent), var(--c-accent));transition:color .3s ease, background-size .4s var(--ease-out-expo), gap .35s var(--ease-out-expo);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1px;align-items:center;gap:0;padding-bottom:2px;font-size:14px;text-decoration:none;display:inline-flex}.about-links a .arrow{width:0;transition:width .35s var(--ease-out-expo), opacity .3s ease;opacity:0;display:inline-block;overflow:hidden}.about-links a:hover{color:var(--c-primary);background-size:100% 1px;background-image:linear-gradient(var(--c-primary), var(--c-primary));gap:6px}.about-links a:hover .arrow{opacity:1;width:16px}.work-heading{letter-spacing:-.02em;margin-bottom:64px;font-family:Domine,serif;font-size:48px;font-weight:400}.work-list{max-width:720px}.work-item{color:var(--c-primary);opacity:0;align-items:baseline;padding:12px 0;text-decoration:none;transition:opacity .5s,transform .5s;display:flex;transform:translateY(12px)}.work-item.visible{opacity:1;transform:translateY(0)}.work-item-title{letter-spacing:-.01em;white-space:nowrap;font-size:16px;font-weight:500;transition:color .3s}.work-item-dots{background-image:radial-gradient(circle, var(--c-accent) 1px, transparent 1px);background-position:0;background-repeat:repeat-x;background-size:10px 2px;flex:1;align-self:center;min-width:20px;height:1px;margin:0 12px}.work-item-tag{color:var(--c-muted);white-space:nowrap;font-size:12px;transition:color .3s}.work-list:hover .work-item.visible{opacity:.35}.work-list:hover .work-item.visible:hover{opacity:1}.work-preview{aspect-ratio:4/3;pointer-events:none;z-index:50;opacity:0;border-radius:6px;width:260px;transition:opacity .2s;position:fixed}.work-preview.active{opacity:1}.contact{max-width:720px;padding-top:120px;padding-bottom:120px}.contact-heading{letter-spacing:-.02em;margin-bottom:24px;font-family:Domine,serif;font-size:40px;font-weight:400}.contact-text{color:var(--c-muted);max-width:480px;margin-bottom:32px;font-size:16px;line-height:1.75}.contact-links{flex-direction:column;gap:14px;display:flex}.contact-links a{color:var(--c-muted);background-image:linear-gradient(var(--c-accent), var(--c-accent));width:fit-content;transition:color .3s ease, background-size .4s var(--ease-out-expo), gap .35s var(--ease-out-expo);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1px;align-items:center;gap:0;padding-bottom:2px;font-size:14px;text-decoration:none;display:inline-flex}.contact-links a .arrow{width:0;transition:width .35s var(--ease-out-expo), opacity .3s ease;opacity:0;display:inline-block;overflow:hidden}.contact-links a:hover{color:var(--c-primary);background-size:100% 1px;background-image:linear-gradient(var(--c-primary), var(--c-primary));gap:6px}.contact-links a:hover .arrow{opacity:1;width:16px}.topnav{display:none}@media (width<=768px){.sidebar,.divider{display:none}.topnav{height:var(--topnav-h);border-bottom:1px solid var(--c-border);justify-content:space-between;align-items:center;padding:0 24px;display:flex}.topnav-logo{font-family:Domine,serif;font-size:18px}.topnav-links{gap:20px;list-style:none;display:flex}.topnav-links a{color:var(--c-muted);font-size:13px;transition:color .3s;position:relative}.topnav-links a:hover{color:var(--c-primary)}.topnav-links a.active{color:var(--c-primary);font-weight:700}.main{margin-left:0}.section{padding:48px 24px}.about{min-height:calc(100vh - var(--topnav-h));justify-content:flex-start;padding-top:40px}.about-name{margin-bottom:28px;font-size:40px}.about-bio p{font-size:15px}.work-heading{margin-bottom:40px;font-size:36px}.work-preview{display:none}.work-list:hover .work-item.visible{opacity:1}.contact-heading{font-size:32px}}@media (width<=480px){.about-name{font-size:32px}.work-item-title{font-size:14px}.work-item-tag{font-size:11px}}
