@font-face{font-family:__dmSans_11c122;src:url(/_next/static/media/c25915a061a39427-s.p.ttf) format("truetype");font-display:swap;font-weight:100 900;font-style:normal}@font-face{font-family:__dmSans_11c122;src:url(/_next/static/media/ee0ce24a04cef28c-s.p.ttf) format("truetype");font-display:swap;font-weight:100 900;font-style:italic}@font-face{font-family:__dmSans_Fallback_11c122;src:local("Arial");ascent-override:93.39%;descent-override:29.18%;line-gap-override:0.00%;size-adjust:106.22%}.__className_11c122{font-family:__dmSans_11c122,__dmSans_Fallback_11c122}.__variable_11c122{--font-dm-sans:"__dmSans_11c122","__dmSans_Fallback_11c122"}:root{--black:#000;--grey-900:#0a0a0a;--grey-800:#1a1a1a;--grey-700:#2a2a2a;--grey-600:#3a3a3a;--grey-500:#4a4a4a;--grey-400:#6a6a6a;--grey-300:#8a8a8a;--grey-200:#b0b0b0;--grey-100:#e0e0e0;--grey-50:#f5f5f5;--white:#fff;--primary-900:var(--grey-900);--primary-800:var(--grey-800);--primary-700:var(--grey-700);--primary-600:var(--grey-600);--primary-500:var(--grey-500);--primary-400:var(--grey-400);--primary-300:var(--grey-300);--primary-200:var(--grey-200);--primary-100:var(--grey-100);--primary-50:var(--grey-50)}*{box-sizing:border-box;padding:0;margin:0}body,html{max-width:100vw;overflow-x:hidden}body{font-family:var(--font-dm-sans),-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--primary-50);color:var(--primary-900)}a{color:var(--grey-700);text-decoration:none;transition:color .2s}a:hover{color:var(--black)}h1,h2,h3,h4,h5,h6{color:var(--primary-900);font-weight:600}.nav{position:-webkit-sticky;position:sticky;top:0;background:hsla(0,0%,96%,.95);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--primary-200);z-index:1000;box-shadow:0 1px 3px rgba(0,0,0,.05)}.nav-container{max-width:1200px;margin:0 auto;padding:1rem 2rem;justify-content:space-between}.nav-container,.nav-logo{display:flex;align-items:center}.nav-logo{text-decoration:none;transition:opacity .2s}.nav-logo-icon{flex-shrink:0}.nav-logo:hover{opacity:.8}.nav-logo:focus{outline:2px solid var(--grey-500);outline-offset:2px;border-radius:4px}.nav-toggle{display:none;background:none;border:none;cursor:pointer;padding:.5rem;z-index:1001;color:var(--primary-900)}.nav-toggle:focus{outline:2px solid var(--grey-500);outline-offset:2px;border-radius:4px}.hamburger{display:flex;flex-direction:column;width:24px;height:18px;justify-content:space-between}.hamburger span{display:block;height:2px;width:100%;background:var(--primary-900);border-radius:2px;transition:all .3s ease}.hamburger.open span:first-child{transform:rotate(45deg) translate(8px,8px)}.hamburger.open span:nth-child(2){opacity:0}.hamburger.open span:nth-child(3){transform:rotate(-45deg) translate(7px,-7px)}.nav-menu{display:flex;list-style:none;gap:2rem;align-items:center}.nav-menu a{text-decoration:none;color:var(--primary-700);font-weight:500;transition:color .2s;position:relative;padding:.25rem 0}.nav-menu a:hover{color:var(--black)}.nav-menu a:after{content:"";position:absolute;bottom:-4px;left:0;width:0;height:2px;background:var(--black);transition:width .3s ease}.nav-menu a:hover:after{width:100%}@media (max-width:768px){.nav-toggle{display:block}.nav-menu{position:fixed;top:0;right:-100%;height:100vh;width:70%;max-width:300px;background:#fff;flex-direction:column;padding:5rem 2rem 2rem;gap:1.5rem;box-shadow:-2px 0 20px rgba(0,0,0,.15);transition:right .3s ease;align-items:flex-start;border-left:1px solid var(--primary-200)}.nav-menu.active{right:0}.nav-menu li{width:100%}.nav-menu a{display:block;padding:.5rem 0;font-size:1.1rem;width:100%;border-bottom:1px solid var(--primary-100)}.nav-menu a:after{display:none}.nav-menu a:hover{padding-left:.5rem;transition:padding-left .2s}}.landing{display:flex;justify-content:center;align-items:center;min-height:calc(100vh - 60px);padding:2rem;background:linear-gradient(135deg,var(--primary-50) 0,#fff 100%)}.landing-content{max-width:800px;width:100%}.landing-title{font-size:3.5rem;font-weight:700;margin-bottom:1rem;line-height:1.2;color:var(--black);text-align:center}.landing-cta{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-bottom:4rem}.landing-post{display:block;text-decoration:none;color:inherit;padding:3rem;transition:transform .2s}.landing-post:hover{transform:translateY(-4px)}.landing-post-header{text-align:center;margin-bottom:1.5rem}.landing-post-title{font-size:2.5rem;font-weight:700;color:var(--black);margin:0 0 .75rem;line-height:1.2}.landing-post-date{font-size:.9rem;color:var(--primary-400);display:block}.landing-post-description{font-size:1.2rem;color:var(--primary-500);line-height:1.6;margin-bottom:2rem;font-style:italic;text-align:center}.landing-post-preview{position:relative;margin-bottom:2rem;max-height:400px;overflow:hidden}.landing-post-preview p{font-size:1.1rem;line-height:1.8;color:var(--primary-600);margin-bottom:1rem}.landing-post-preview h2,.landing-post-preview h3,.landing-post-preview h4{font-size:1.5rem;font-weight:600;color:var(--black);margin-top:1.5rem;margin-bottom:.75rem}.landing-post-preview ol,.landing-post-preview ul{margin-bottom:1rem;padding-left:2rem}.landing-post-preview li{margin-bottom:.5rem;color:var(--primary-600)}.landing-post-read-more{text-align:center;padding-top:1.5rem;border-top:1px solid var(--primary-200)}.landing-read-more-text{font-size:1rem;font-weight:500;color:var(--black);transition:color .2s}.landing-post:hover .landing-read-more-text{color:var(--grey-700)}.btn{padding:.75rem 2rem;border-radius:6px;text-decoration:none;font-weight:500;transition:all .2s;display:inline-block}.btn-primary{background:var(--black);color:#fff}.btn-primary:hover{background:var(--grey-800);color:#fff;transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.2)}.btn-primary:focus{outline:2px solid var(--grey-500);outline-offset:2px}.btn-secondary{background:transparent;color:var(--black);border:2px solid var(--black)}.btn-secondary:hover{background:var(--black);color:#fff}.btn-secondary:focus{outline:2px solid var(--grey-500);outline-offset:2px}.page{max-width:1200px;padding:4rem 2rem;min-height:calc(100vh - 60px);background-color:#fff;border-radius:8px;margin:2rem auto;box-shadow:0 2px 8px rgba(0,0,0,.05)}.page-content h1{font-size:2.5rem;font-weight:600;margin-bottom:2rem;color:var(--black);border-bottom:3px solid var(--black);padding-bottom:1rem}.page-content h2{font-size:2rem;font-weight:600;margin-top:2rem;margin-bottom:1rem;color:var(--primary-800)}.page-content h3{font-size:1.5rem;font-weight:600;margin-top:1.5rem;margin-bottom:.75rem;color:var(--primary-700)}.page-content p{font-size:1.1rem;line-height:1.6;color:var(--primary-500);margin-bottom:1rem}.page-content a{color:var(--grey-700);text-decoration:none}.page-content a:hover{color:var(--black)}@media (max-width:768px){.landing{padding:1.5rem}.landing-title{font-size:2.5rem}.landing-post{padding:2rem 1.5rem}.landing-post-title{font-size:2rem}.landing-post-header{flex-direction:column;gap:1rem}.landing-post-date{align-self:flex-start}.landing-post-description{font-size:1.1rem}.landing-post-preview{max-height:300px}.landing-cta{flex-direction:column}.btn{width:100%;text-align:center}.page{padding:2rem 1.5rem;margin-top:1rem;margin-bottom:1rem}.page-content h1{font-size:2rem;border-bottom-width:2px;padding-bottom:.75rem}.page-content h2{font-size:1.5rem}.page-content h3{font-size:1.25rem}}.colors-page{max-width:1400px;margin:0 auto;padding:4rem 2rem;min-height:calc(100vh - 60px)}.colors-container h1{font-size:3rem;font-weight:700;margin-bottom:1rem;color:var(--primary-900)}.colors-intro{font-size:1.2rem;color:var(--primary-400);margin-bottom:3rem}.color-category{margin-bottom:4rem}.color-category h2{font-size:2rem;font-weight:600;margin-bottom:1.5rem;color:var(--primary-800)}.color-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-gap:1.5rem;gap:1.5rem}.color-card{border:1px solid var(--primary-200);border-radius:8px;overflow:hidden;background:#fff;transition:transform .2s,box-shadow .2s,border-color .2s}.color-card:hover{transform:translateY(-4px);box-shadow:0 8px 16px rgba(0,0,0,.15);border-color:var(--grey-400)}.color-swatch{width:100%;height:120px;border-bottom:1px solid var(--primary-200)}.color-info{padding:1rem}.color-name{font-weight:600;font-size:.9rem;margin-bottom:.25rem;color:var(--primary-800)}.color-hex{font-size:.85rem;color:var(--primary-400);font-family:Courier New,monospace}.color-usage{margin-top:4rem;padding-top:3rem;border-top:2px solid var(--primary-200)}.color-usage h2{font-size:2rem;font-weight:600;margin-bottom:2rem;color:var(--primary-800)}.usage-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));grid-gap:2rem;gap:2rem}.usage-item{padding:1.5rem;background:var(--primary-50);border-radius:8px;border-left:4px solid var(--black);transition:transform .2s,box-shadow .2s}.usage-item:hover{transform:translateX(4px);box-shadow:0 4px 12px rgba(0,0,0,.1)}.usage-item h3{font-size:1.25rem;font-weight:600;margin-bottom:.5rem;color:var(--primary-800)}.usage-item p{color:var(--primary-400);line-height:1.6;margin:0}@media (max-width:768px){.colors-page{padding:2rem 1.5rem}.colors-container h1{font-size:2rem}.color-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:1rem}.color-swatch{height:100px}.usage-grid{grid-template-columns:1fr}}.about-section{max-width:800px}.about-text{font-size:1.1rem;line-height:1.9;color:var(--primary-600);margin-bottom:3rem}.about-experience{margin-top:3rem;padding-top:3rem;border-top:2px solid var(--primary-200)}.about-experience p{font-size:1.1rem;line-height:1.9;color:var(--primary-600);margin-bottom:1.5rem}.about-experience p:last-child{margin-bottom:0}.experience-item{margin-bottom:3rem;padding-bottom:3rem;border-bottom:2px solid var(--primary-200)}.experience-item:last-child{border-bottom:none;padding-bottom:0}.experience-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem;flex-wrap:wrap;gap:1rem}.experience-header h2{font-size:1.5rem;margin-bottom:.5rem;color:var(--primary-900)}.experience-header h3{font-size:1.2rem;color:var(--grey-700);font-weight:600}.experience-meta{display:flex;flex-direction:column;align-items:flex-end;gap:.5rem;text-align:right}.experience-location{color:var(--primary-600);font-size:.95rem}.experience-date{color:var(--primary-500);font-size:.9rem}.experience-bullets{list-style:none;padding-left:0}.experience-bullets li{padding:.75rem 0 .75rem 1.5rem;position:relative;color:var(--primary-600);line-height:1.7}.experience-bullets li:before{content:"•";position:absolute;left:0;color:var(--black);font-weight:700;font-size:1.2rem}.projects-intro{font-size:1.1rem;color:var(--primary-500);margin-bottom:2rem}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:2rem;gap:2rem;margin-bottom:3rem}.project-card{background:#fff;border:1px solid var(--primary-200);border-radius:8px;padding:1.5rem;text-decoration:none;color:inherit;transition:transform .2s,box-shadow .2s,border-color .2s;display:flex;flex-direction:column;min-height:120px}.project-card:hover{transform:translateY(-4px);box-shadow:0 8px 16px rgba(0,0,0,.1);border-color:var(--grey-400)}.project-card-header{margin-bottom:1rem}.project-card-name{font-size:1.25rem;font-weight:600;color:var(--black);margin:0;word-break:break-word}.project-card-footer{margin-top:auto;padding-top:1rem;border-top:1px solid var(--primary-100)}.project-card-license{font-size:.85rem;color:var(--primary-400)}.projects-footer{text-align:center;padding-top:2rem;border-top:2px solid var(--primary-200);color:var(--primary-500)}.projects-footer a{color:var(--grey-700);text-decoration:underline;text-underline-offset:3px}.projects-footer a:hover{color:var(--black)}.blog-empty{text-align:center;padding:4rem 2rem;color:var(--primary-500)}.blog-empty-hint{margin-top:1rem;font-size:.9rem;color:var(--primary-400)}.blog-empty-hint code{background:var(--primary-100);padding:.25rem .5rem;border-radius:4px;font-size:.85rem;color:var(--primary-700)}.blog-list{display:flex;flex-direction:column;gap:0;margin-bottom:3rem}.blog-list-item{display:block;text-decoration:none;color:inherit;padding:2rem 0;border-bottom:1px solid var(--primary-200);transition:padding-left .2s}.blog-list-item:first-child{padding-top:0}.blog-list-item:last-child{border-bottom:none}.blog-list-item:hover{padding-left:1rem}.blog-list-header{display:flex;justify-content:space-between;align-items:flex-start;gap:2rem;margin-bottom:.75rem;flex-wrap:wrap}.blog-list-title{font-size:1.5rem;font-weight:600;color:var(--black);margin:0;line-height:1.3;flex:1 1}.blog-list-date{font-size:.9rem;color:var(--primary-400);white-space:nowrap}.blog-list-description{font-size:1rem;color:var(--primary-500);line-height:1.6;margin:0}.blog-pagination{display:flex;justify-content:center;align-items:center;gap:1.5rem;margin-top:3rem;padding-top:2rem;border-top:2px solid var(--primary-200)}.blog-pagination-info{color:var(--primary-500);font-size:.95rem}.blog-back-link{display:inline-block;margin-bottom:2rem;color:var(--grey-700);text-decoration:none;font-weight:500;transition:color .2s}.blog-back-link:hover{color:var(--black)}.blog-post{max-width:800px;margin:0 auto}.blog-post-header{margin-bottom:2rem}.blog-post-header h1{font-size:2.5rem;margin-bottom:1rem;color:var(--primary-900);line-height:1.2}.blog-post-meta{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem;margin-bottom:1rem;padding-bottom:1rem;border-bottom:2px solid var(--primary-200)}.blog-post-date{color:var(--primary-500);font-size:.95rem}.blog-post-tags{display:flex;flex-wrap:wrap;gap:.5rem}.blog-post-description{font-size:1.2rem;color:var(--primary-600);line-height:1.6;font-style:italic}.blog-post-image{margin:2rem 0;border-radius:8px;overflow:hidden;position:relative;width:100%;height:400px;background:var(--primary-100)}.blog-post-image img{width:100%;height:100%;object-fit:cover}.blog-post-content{margin-top:2rem;line-height:1.8;color:var(--primary-700)}.blog-post-content h2{font-size:2rem;margin-top:2.5rem;margin-bottom:1rem;color:var(--black);border-bottom:2px solid var(--black);padding-bottom:.5rem}.blog-post-content h3{font-size:1.5rem;margin-top:2rem;margin-bottom:.75rem;color:var(--primary-800)}.blog-post-content h4{font-size:1.25rem;margin-top:1.5rem;margin-bottom:.5rem;color:var(--primary-800)}.blog-post-content p{margin-bottom:1.25rem;font-size:1.05rem}.blog-post-content ol,.blog-post-content ul{margin-bottom:1.25rem;padding-left:2rem}.blog-post-content li{margin-bottom:.5rem}.blog-post-content code{background:var(--primary-100);padding:.2rem .4rem;border-radius:4px;font-size:.9em;color:var(--black);font-family:Courier New,monospace}.blog-post-content pre{background:var(--primary-900);color:var(--primary-50);padding:1.5rem;border-radius:8px;overflow-x:auto;margin-bottom:1.25rem}.blog-post-content pre code{background:none;padding:0;color:inherit}.blog-post-content blockquote{border-left:4px solid var(--black);padding-left:1.5rem;margin:1.5rem 0;color:var(--primary-600);font-style:italic}.blog-post-content a{color:var(--grey-700);text-decoration:none}.blog-post-content a:hover{color:var(--black)}.blog-post-content img{max-width:100%;height:auto;border-radius:8px;margin:1.5rem 0}.blog-post-content table{width:100%;border-collapse:collapse;margin:1.5rem 0}.blog-post-content td,.blog-post-content th{border:1px solid var(--primary-200);padding:.75rem;text-align:left}.blog-post-content th{background:var(--primary-100);font-weight:600;color:var(--primary-800)}.blog-post-citation{margin-top:3rem;padding-top:2rem;border-top:1px solid var(--primary-200);font-size:.9rem;color:var(--primary-600)}.blog-post-citation p{margin:0}@media (max-width:768px){.about-text{font-size:1rem}.experience-header{flex-direction:column;align-items:flex-start}.experience-meta{align-items:flex-start;text-align:left}.projects-grid{grid-template-columns:1fr}.project-card-header{flex-direction:column;align-items:flex-start}.blog-post-header h1{font-size:2rem}.blog-list-item{padding:1.5rem 0}.blog-list-item:hover{padding-left:.5rem}.blog-list-header{flex-direction:column;gap:.5rem}.blog-list-title{font-size:1.25rem}.blog-post-meta{flex-direction:column;align-items:flex-start}.blog-post-image{height:250px}.blog-pagination{flex-direction:column}}