:root{--background:#0a0a0a;--text:#e5e5e5;--text-secondary:#a0a0a0;--accent:#3a3a3a;--link:#e5e5e5;--link-hover:#fff}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px}@media(max-width:480px){html{font-size:15px}}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;background-color:var(--background);color:var(--text);line-height:1.6;font-size:1rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--link);text-decoration:none;border-bottom:1px solid var(--link);padding-bottom:1px;transition:color .2s ease,border-color .2s ease;-webkit-tap-highlight-color:hsla(0,0%,100%,.1)}a.active-touch,a:hover{color:var(--link-hover);border-color:var(--link-hover)}a.active-touch{opacity:.8}@media(max-width:480px){a{padding:4px 0}}.container{max-width:700px;margin:0 auto;padding:80px 20px}@media(max-width:768px){.container{padding:60px 20px}}@media(max-width:480px){.container{padding:40px 16px}}header{margin-bottom:60px}@media(max-width:480px){header{margin-bottom:40px}}h1{font-size:1.5rem;font-weight:600;margin-bottom:5px}.subtitle{color:var(--text-secondary);font-size:.875rem}section{margin-bottom:50px}@media(max-width:480px){section{margin-bottom:40px}}section>p:first-of-type{margin-bottom:30px}@media(max-width:480px){section>p:first-of-type{margin-bottom:20px}}h2{font-size:1.125rem;font-weight:500;margin-bottom:20px}@media(max-width:480px){h2{margin-bottom:15px}}.project{margin-bottom:30px}@media(max-width:480px){.project{margin-bottom:25px}}.project h3{font-size:1.125rem;font-weight:500;margin-bottom:5px;display:flex;justify-content:space-between;align-items:center}@media(max-width:480px){.project h3{flex-direction:column;align-items:flex-start;gap:5px}}.project h3 .year{color:var(--text-secondary);font-size:.875rem;font-weight:400}.project h3 a{border-bottom:none;display:inline-block}@media(max-width:480px){.project h3 a{padding:5px 0}}.project p{color:var(--text-secondary);margin-bottom:10px}.blog-post{margin-bottom:15px;display:flex;justify-content:space-between;align-items:center}@media(max-width:580px){.blog-post{flex-direction:column;align-items:flex-start;gap:5px;margin-bottom:20px}}.blog-post a{font-size:1rem;border-bottom:none;display:inline-block}@media(max-width:480px){.blog-post a{padding:5px 0;margin-bottom:3px}}.blog-post .views{color:var(--text-secondary);font-size:.875rem;white-space:nowrap}.note{padding:20px;border:1px solid var(--accent);margin-bottom:20px}@media(max-width:480px){.note{padding:15px}}.note h3{font-size:1.125rem;font-weight:500}.note h3,.note p{margin-bottom:10px}.note .date,.note p{color:var(--text-secondary)}.note .date{font-size:.875rem}.contact{display:flex;gap:15px;margin-bottom:20px}@media(max-width:580px){.contact{flex-direction:column;gap:10px}}@media(max-width:480px){.contact p{line-height:1.8}}.contact a{margin-right:5px}@media(max-width:480px){.contact a{display:inline-block;padding:5px 3px 5px 0}}footer{margin-top:80px;padding-top:30px;border-top:1px solid var(--accent)}@media(max-width:480px){footer{margin-top:60px;padding-top:20px}}footer .footer-content{display:flex;flex-direction:column;gap:15px}footer .footer-info{margin-bottom:15px}footer .footer-links{display:flex;gap:15px;margin-bottom:15px}footer .footer-links a{margin-right:0;color:var(--text-secondary);border-bottom:none}footer .footer-links a:hover{color:var(--link-hover)}footer .site-info{font-size:.75rem;color:var(--text-secondary);margin-top:10px}footer .colophon,footer .copyright{color:var(--text-secondary);font-size:.875rem}footer .copyright{margin-top:5px}@media screen and (orientation:landscape)and (max-height:500px){.container{padding-top:30px;padding-bottom:30px}header{margin-bottom:30px}}@media print{body{background-color:#fff}a,body{color:#000}a{border-bottom-color:#000}.container{padding:20px}.note{border:1px solid #ddd}footer{border-top-color:#ddd}}