@import url(https://fonts.googleapis.com/css2?family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&display=swap);:root{--bg-primary:#f8f7f4;--bg-card:#fff;--text-primary:#1a1a1a;--text-secondary:#666;--text-muted:#999;--border:#e0e0e0;--accent:#c8b89a;--line-faint:rgba(100,85,60,.045);--line-medium:#c8b89a24;--line-soft:#c8b89a17}*{box-sizing:border-box;margin:0;padding:0}html{min-height:100%;scroll-behavior:smooth}html:before{background:linear-gradient(180deg,#c8b89a38,#c8b89a17 18%,#0000 42%,#0000 58%,#c8b89a17 82%,#c8b89a29);background:linear-gradient(180deg,#c8b89a38 0,var(--line-soft) 18%,#0000 42%,#0000 58%,var(--line-soft) 82%,#c8b89a29 100%);left:clamp(12px,5vw,48px)}html:after,html:before{content:"";height:100vh;pointer-events:none;position:fixed;top:0;width:1px;z-index:0}html:after{background:linear-gradient(180deg,#0000,#c8b89a17 30%,#c8b89a1f 50%,#c8b89a17 70%,#0000);background:linear-gradient(180deg,#0000 0,var(--line-soft) 30%,#c8b89a1f 50%,var(--line-soft) 70%,#0000 100%);right:clamp(12px,6vw,56px)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-attachment:fixed;background-color:#f8f7f4;background-color:var(--bg-primary);background-image:radial-gradient(circle,rgba(0,0,0,.038) 1px,#0000 0),repeating-linear-gradient(90deg,#0000,#0000 calc(5.25rem - 1px),rgba(100,85,60,.045) calc(5.25rem - 1px),rgba(100,85,60,.045) 5.25rem),repeating-linear-gradient(0deg,#0000,#0000 calc(4.25rem - 1px),rgba(100,85,60,.045) calc(4.25rem - 1px),rgba(100,85,60,.045) 4.25rem),linear-gradient(135deg,hsla(39,29%,69%,.075),#0000 38%,#0000 62%,hsla(39,29%,69%,.055)),linear-gradient(205deg,#0000,hsla(39,29%,69%,.028) 45%,#0000 70%);background-image:radial-gradient(circle,rgba(0,0,0,.038) 1px,#0000 1px),repeating-linear-gradient(90deg,#0000 0,#0000 calc(5.25rem - 1px),var(--line-faint) calc(5.25rem - 1px),var(--line-faint) 5.25rem),repeating-linear-gradient(0deg,#0000 0,#0000 calc(4.25rem - 1px),var(--line-faint) calc(4.25rem - 1px),var(--line-faint) 4.25rem),linear-gradient(135deg,hsla(39,29%,69%,.075) 0,#0000 38%,#0000 62%,hsla(39,29%,69%,.055) 100%),linear-gradient(205deg,#0000 0,hsla(39,29%,69%,.028) 45%,#0000 70%);background-size:20px 20px,100% 100%,100% 100%,100% 100%,100% 100%;color:#1a1a1a;color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Arial,sans-serif;line-height:1.6;min-height:100vh;position:relative}body:before{background:linear-gradient(90deg,#0000,#c8b89a24 15%,#c8b89a 50%,#c8b89a24 85%,#0000);background:linear-gradient(90deg,#0000 0,var(--line-medium) 15%,var(--accent) 50%,var(--line-medium) 85%,#0000 100%);height:1px;opacity:.55;z-index:100}body:after,body:before{content:"";left:0;pointer-events:none;position:fixed;right:0;top:0}body:after{background:linear-gradient(90deg,#0000,#0000 calc(85% - 1px),#c8b89a1f calc(85% - 1px),#c8b89a1f 85%,#0000 0),linear-gradient(0deg,#0000,#0000 calc(100% - 1px),#c8b89a38 calc(100% - 1px),#c8b89a38);bottom:0;z-index:0}a{color:inherit;text-decoration:none}::selection{background:#1a1a1a;background:var(--text-primary);color:#f8f7f4;color:var(--bg-primary)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#0000}::-webkit-scrollbar-thumb{background:#e0e0e0;background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#999;background:var(--text-muted)}@media (max-width:600px){html:after,html:before{opacity:.65}body{background-size:18px 18px,100% 100%,100% 100%,100% 100%,100% 100%}body:after{background:linear-gradient(90deg,#0000,#0000 calc(92% - 1px),#c8b89a17 calc(92% - 1px),#c8b89a17 92%,#0000 0),linear-gradient(0deg,#0000,#0000 calc(100% - 1px),#c8b89a29 calc(100% - 1px),#c8b89a29)}}.home-container{display:flex;flex-direction:column;margin:0 auto;max-width:680px;min-height:100vh;padding:2rem 2rem 1rem;position:relative;z-index:1}.home-container:before{background:linear-gradient(180deg,var(--accent),#c8b89a33 55%,#0000);content:"";height:200px;left:-2.75rem;opacity:.45;position:absolute;top:5rem;width:1px}.home-container:after{background:linear-gradient(0deg,var(--accent),#c8b89a26 50%,#0000);bottom:6rem;content:"";height:140px;opacity:.35;position:absolute;right:-2.25rem;width:1px}.header{align-items:baseline;animation:fadeIn .5s ease-out;margin-bottom:3rem}.header-left{align-items:baseline;display:flex;gap:.75rem}.logo:hover{opacity:.6}.tagline{color:var(--text-muted);font-size:.8rem;font-style:italic}.nav-links{gap:1.5rem}.nav-links a{transition:color .2s ease}.intro{animation:slideUp .5s ease-out .05s both;border-bottom:1px solid var(--border);color:var(--text-muted);font-size:.9375rem;letter-spacing:.01em;line-height:1.7;margin-bottom:2rem;padding-bottom:1.5rem}.home-content{animation:slideUp .6s ease-out .1s both;flex:1 1}.top-list{list-style:none;margin-bottom:.25rem}.top-list li{color:var(--text-primary);font-size:.9375rem;line-height:1.8;padding-left:1rem;position:relative}.top-list li:before{color:var(--accent);content:"\2022";left:0;position:absolute}.section-label{font-style:italic;font-weight:600}.sub-list{list-style:none;margin-bottom:.75rem;padding-left:1rem}.sub-list li{color:var(--text-primary);font-size:.9375rem;line-height:1.8;padding-left:1.25rem;position:relative;transition:transform .2s ease}.sub-list li:hover{transform:translateX(3px)}.sub-list li:before{color:var(--accent);content:"\21B3";left:0;position:absolute;transition:color .2s ease}.sub-list li:hover:before{color:var(--text-primary)}.sub-list a,.top-list a{text-decoration:underline;-webkit-text-decoration-color:var(--border);text-decoration-color:var(--border);text-underline-offset:2px;transition:-webkit-text-decoration-color .2s ease;transition:text-decoration-color .2s ease;transition:text-decoration-color .2s ease,-webkit-text-decoration-color .2s ease}.sub-list a:hover,.top-list a:hover{-webkit-text-decoration-color:var(--text-primary);text-decoration-color:var(--text-primary)}.cta-section{animation:slideUp .6s ease-out .25s both;margin-bottom:3rem;margin-top:2.5rem}.cta-button{align-items:center;border:1px solid var(--border);border-radius:6px;color:var(--text-secondary);display:flex;font-size:.875rem;gap:.5rem;justify-content:center;overflow:hidden;padding:.75rem 2rem;position:relative;text-align:center;transition:color .3s ease,border-color .3s ease;width:100%}.cta-button:before{background:var(--accent);bottom:0;content:"";height:2px;left:0;position:absolute;transition:width .4s cubic-bezier(.4,0,.2,1);width:0}.cta-button:hover:before{width:100%}.cta-button:hover{border-color:var(--text-primary);color:var(--text-primary)}.cta-text{transition:letter-spacing .3s ease}.cta-button:hover .cta-text{letter-spacing:.03em}.cta-arrow{display:inline-block;transition:transform .3s cubic-bezier(.4,0,.2,1)}.cta-button:hover .cta-arrow{transform:translateX(5px)}.footer{animation:fadeIn .6s ease-out .4s both}.footer-links a{transition:color .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media (max-width:600px){.home-container{padding:1rem}.home-container:after,.home-container:before{display:none}.header{flex-direction:column;gap:.75rem;margin-bottom:2rem}.tagline{display:none}.nav-links{gap:1.25rem}}.page-container{display:flex;flex-direction:column;margin:0 auto;max-width:680px;min-height:100vh;padding:2rem 2rem 1rem;position:relative;z-index:1}.header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem;padding:1.5rem 0}.logo{color:var(--text-primary);font-family:Libre Baskerville,Georgia,serif;font-size:1rem;font-weight:700;letter-spacing:-.01em}.logo:hover{opacity:.7}.nav-links{display:flex;gap:1.75rem}.nav-links a{color:var(--text-secondary);font-size:.875rem}.nav-links a:hover,.page-title{color:var(--text-primary)}.page-title{font-family:Libre Baskerville,Georgia,serif;font-size:1.5rem;font-style:italic;font-weight:400;margin-bottom:2rem}.main-content{flex:1 1}.footer{border-top:1px solid var(--border);margin-top:auto;padding-top:1.5rem}.footer-links{display:flex;gap:1.25rem;margin-bottom:.75rem}.footer-links a{color:var(--text-muted);font-size:.8rem}.footer-links a:hover{color:var(--text-primary)}.footer p{color:var(--text-muted);font-size:.8rem;margin-bottom:1rem}@media (max-width:600px){.page-container{padding:1rem}.nav-links{gap:1.25rem}.page-title{font-size:1.25rem}}.about-content{max-width:650px}.about-header{align-items:flex-start;animation:fadeUp .6s ease-out both;display:flex;gap:2rem;margin-bottom:3rem}.about-photo{border-radius:16px;box-shadow:0 8px 24px #0000001a;flex-shrink:0;height:140px;object-fit:cover;transition:all .4s ease;width:140px}.about-photo:hover{box-shadow:0 12px 32px #00000026;transform:scale(1.03) rotate(1deg)}.about-intro{flex:1 1}.about-intro p{color:var(--text-primary);font-size:1.1rem;line-height:1.7;margin-bottom:.75rem}.about-intro p:last-child{margin-bottom:0}.about-intro p+p{color:var(--text-secondary)}.about-intro a{color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--border);text-decoration-color:var(--border);text-underline-offset:2px}.about-intro a:hover{color:var(--text-primary);-webkit-text-decoration-color:var(--text-primary);text-decoration-color:var(--text-primary)}.about-intro strong{font-weight:600}.about-projects-banner{align-items:center;animation:fadeUp .6s ease-out .08s both;border:1px solid var(--border);border-radius:6px;color:var(--text-secondary);display:flex;font-size:.875rem;gap:.5rem;justify-content:center;margin:-1rem 0 2.5rem;padding:.85rem 1.5rem;transition:color .25s ease,border-color .25s ease,letter-spacing .25s ease;width:100%}.about-projects-banner:hover{border-color:var(--text-primary);color:var(--text-primary)}.about-projects-banner-text{transition:letter-spacing .25s ease}.about-projects-banner:hover .about-projects-banner-text{letter-spacing:.03em}.about-projects-banner-arrow{display:inline-block;transition:transform .25s cubic-bezier(.4,0,.2,1)}.about-projects-banner:hover .about-projects-banner-arrow{transform:translateX(5px)}.about-section{animation:fadeUp .6s ease-out both;margin-bottom:2.5rem}.about-section:nth-child(3){animation-delay:.15s}.about-section:nth-child(4){animation-delay:.25s}.about-section:nth-child(5){animation-delay:.35s}.about-section:nth-child(6){animation-delay:.45s}.about-section h2{color:var(--text-primary);font-family:Libre Baskerville,Georgia,serif;font-size:1.05rem;font-style:italic;font-weight:400;margin-bottom:1rem}.about-section ul{list-style:none;padding:0}.about-section li{color:var(--text-secondary);font-size:.95rem;line-height:1.8;margin-bottom:.4rem;padding-left:1.5rem;position:relative;transition:all .3s ease}.about-section li:hover{color:var(--text-primary);transform:translateX(4px)}.about-section li:before{color:var(--text-muted);content:"→";left:0;position:absolute;transition:all .3s ease}.about-section li:hover:before{color:var(--text-primary);transform:translateX(2px)}.tech-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(3,1fr)}.tech-item{background:var(--bg-card);border-radius:12px;padding:1.25rem;transition:all .4s cubic-bezier(.4,0,.2,1)}.tech-item:hover{box-shadow:0 12px 24px #00000014;transform:translateY(-4px)}.tech-item h3{color:var(--text-primary);font-size:.85rem;font-weight:600;letter-spacing:.05em;margin-bottom:.4rem;text-transform:uppercase}.tech-item p{color:var(--text-secondary);font-size:.9rem;line-height:1.5}.about-section--cta .about-cta-lead{color:var(--text-secondary);font-size:.95rem;line-height:1.65;margin-bottom:1.25rem}.about-to-projects{align-items:center;border:1px solid var(--border);border-radius:6px;color:var(--text-secondary);display:inline-flex;font-size:.875rem;gap:.5rem;justify-content:center;overflow:hidden;padding:.75rem 1.75rem;position:relative;transition:color .25s ease,border-color .25s ease}.about-to-projects:before{background:var(--accent);bottom:0;content:"";height:2px;left:0;position:absolute;transition:width .35s cubic-bezier(.4,0,.2,1);width:0}.about-to-projects:hover:before{width:100%}.about-to-projects:hover{border-color:var(--text-primary);color:var(--text-primary)}.about-to-projects-arrow{display:inline-block;transition:transform .25s cubic-bezier(.4,0,.2,1)}.about-to-projects:hover .about-to-projects-arrow{transform:translateX(5px)}.contact-text{color:var(--text-secondary);font-size:.95rem;margin-bottom:1rem}.contact-links{display:flex;gap:.75rem}.contact-links a{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;color:var(--text-secondary);font-size:.9rem;font-weight:500;padding:.7rem 1.5rem;transition:all .3s ease}.contact-links a:hover{border-color:var(--text-primary);color:var(--text-primary);transform:translateY(-2px)}@media (max-width:640px){.about-header{align-items:center;flex-direction:column;gap:1.5rem;text-align:center}.about-photo{height:120px;width:120px}.about-intro p{font-size:1rem}.tech-grid{grid-template-columns:1fr}.contact-links{flex-direction:column}.contact-links a{text-align:center}}.projects-list{display:flex;flex-direction:column;gap:0}.project-item{border-bottom:1px solid var(--border);position:relative}.project-item:first-child{border-top:1px solid var(--border)}.project-row-head{align-items:flex-start;background:#0000;border:none;color:inherit;cursor:pointer;display:flex;font:inherit;gap:.75rem;justify-content:flex-start;padding:1.25rem 0;text-align:left;transition:transform .2s ease;width:100%}.project-row-head:focus-visible,.project-row-head:hover{transform:translateX(4px)}.project-row-head:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.project-chevron{color:var(--text-muted);flex-shrink:0;font-size:1.1rem;font-weight:500;line-height:1.4;width:1.25rem}.project-item--open .project-chevron{color:var(--text-primary)}.project-main{flex:1 1;min-width:0}.project-name{align-items:center;color:var(--text-primary);display:flex;font-size:.9375rem;font-weight:600;gap:.5rem;margin-bottom:.25rem}.project-stars{color:var(--text-muted);font-size:.75rem;font-weight:400}.project-stars:before{content:"\2605 "}.project-desc{color:var(--text-secondary);font-size:.85rem;line-height:1.5}.project-tags{align-content:flex-start;display:flex;flex-shrink:0;flex-wrap:wrap;gap:.375rem;justify-content:flex-end;max-width:200px}.tag{background:#0000;border:1px solid var(--border);border-radius:3px;color:var(--text-muted);font-size:.7rem;padding:.2rem .6rem;white-space:nowrap}.project-item--open .tag,.project-item:hover .tag{border-color:var(--text-secondary);color:var(--text-secondary)}.project-hover-preview{display:none}@media (min-width:900px){.project-hover-preview{border:1px solid var(--border);border-radius:8px;box-shadow:0 12px 32px #00000014;display:block;opacity:0;overflow:hidden;pointer-events:none;position:absolute;right:0;top:50%;transform:translate(108%,-50%) scale(.96);transition:opacity .25s ease,transform .25s ease;width:240px;z-index:5}.project-hover-preview img{display:block;height:auto;vertical-align:middle;width:100%}.project-item:hover .project-hover-preview{opacity:1;transform:translate(108%,-50%) scale(1)}.project-item--open:hover .project-hover-preview{opacity:0}}.project-panel{border-top:1px solid #0000;overflow:hidden}.project-panel[hidden]{display:none}.project-panel-inner{grid-gap:1.25rem;animation:panelIn .3s ease-out;display:grid;gap:1.25rem;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);padding:0 0 1.5rem 1.95rem}@keyframes panelIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.project-panel-img-link{border:1px solid var(--border);border-radius:8px;display:block;overflow:hidden;transition:border-color .2s ease,box-shadow .2s ease}.project-panel-img-link:hover{border-color:var(--text-secondary);box-shadow:0 8px 24px #0000000f}.project-panel-img-link img{display:block;height:auto;vertical-align:middle;width:100%}.project-panel-copy{padding-top:.15rem}.project-detail{color:var(--text-secondary);font-size:.85rem;line-height:1.65;margin-bottom:1rem}.project-panel-links{display:flex;gap:1.25rem}.project-panel-links a{color:var(--text-muted);font-size:.8rem;text-decoration:underline;-webkit-text-decoration-color:var(--border);text-decoration-color:var(--border);text-underline-offset:2px}.project-panel-links a:hover{color:var(--text-primary);-webkit-text-decoration-color:var(--text-primary);text-decoration-color:var(--text-primary)}@media (max-width:700px){.project-row-head{flex-wrap:wrap}.project-tags{justify-content:flex-start;max-width:none;padding-left:1.95rem;width:100%}.project-panel-inner{grid-template-columns:1fr;padding-left:1.95rem}}.blog-list{display:flex;flex-direction:column;gap:1rem}.blog-card{animation:fadeUp .6s ease-out both;background:var(--bg-card);border-radius:12px;display:block;overflow:hidden;padding:1.5rem;position:relative;transition:all .4s cubic-bezier(.4,0,.2,1)}.blog-card:first-child{animation-delay:.1s}.blog-card:nth-child(2){animation-delay:.2s}.blog-card:nth-child(3){animation-delay:.3s}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.blog-card:before{background:linear-gradient(90deg,#0000,#00000005,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .6s ease;width:100%}.blog-card:hover{box-shadow:0 12px 24px #00000014;transform:translateY(-4px)}.blog-card:hover:before{left:100%}.blog-date{color:var(--text-muted);display:block;font-size:.8rem;margin-bottom:.5rem;transition:color .3s ease}.blog-card:hover .blog-date{color:var(--text-secondary)}.blog-card h2{color:var(--text-primary);font-size:1.15rem;font-weight:600;margin-bottom:.5rem;transition:all .3s ease}.blog-card:hover h2{transform:translateX(4px)}.blog-card p{color:var(--text-secondary);font-size:.9rem;line-height:1.6}.blog-post{animation:fadeUp .8s ease-out both;max-width:650px}.back-link{color:var(--text-muted);display:inline-block;font-size:.9rem;margin-bottom:1.5rem;transition:all .3s ease}.back-link:hover{color:var(--text-primary);transform:translateX(-4px)}.blog-post h1{color:var(--text-primary);font-family:Libre Baskerville,Georgia,serif;font-size:1.75rem;font-weight:400;margin-bottom:1.5rem}.blog-post p{color:var(--text-primary);font-size:1rem;line-height:1.8}
/*# sourceMappingURL=main.460e1e1a.css.map*/