:root{--fg: #1a1a1a;--fg-soft: #555;--bg: #fdfdfd;--rule: #e5e5e5;--link: #0033cc;--link-visited: #5b2a86;--max-width: 720px;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Monaco, Consolas, monospace}@media(prefers-color-scheme:dark){:root{--fg: #e2e2e2;--fg-soft: #8a8a8a;--bg: #111111;--rule: #2e2e2e;--link: #6699ff;--link-visited: #bb88ee}.download-btn{box-shadow:0 2px 12px #00000080}}*{box-sizing:border-box}html{font-size:15px}body{margin:0;padding:3rem 1.5rem 4rem;font-family:var(--font-mono);font-weight:400;line-height:1.65;color:var(--fg);background:var(--bg);font-feature-settings:"ss01","ss02";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{max-width:var(--max-width);margin:0 auto}.resume-header{margin-bottom:2.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--rule)}.resume-header .name{font-size:1.75rem;font-weight:700;margin:0 0 .25rem;letter-spacing:-.01em}.resume-header .tagline{font-size:.95rem;color:var(--fg-soft);margin:0 0 1rem;font-style:normal}.resume-header .contact{font-size:.85rem;color:var(--fg-soft);display:flex;flex-wrap:wrap;gap:.5rem 1rem}.resume-header .contact a{color:inherit;text-decoration:none;border-bottom:1px dotted currentColor}.resume-header .contact a:hover{color:var(--link)}.contact-icon{display:inline-block;width:1em;height:1em;margin-right:.3em;vertical-align:-.125em}.resume-body h2{font-size:1.05rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin:2.5rem 0 1.25rem;padding-bottom:.4rem;border-bottom:1px solid var(--rule)}.resume-body h2:first-child{margin-top:0}.resume-body h3{font-size:.95rem;font-weight:700;margin:1.5rem 0 .15rem}.resume-body h3+p em,.resume-body h3+p{font-size:.85rem;color:var(--fg-soft);margin:0 0 .6rem;font-style:normal}.resume-body p,.resume-body li{font-size:.875rem;line-height:1.7}.resume-body ul{padding-left:1.25rem;margin:.5rem 0 0}.resume-body li{margin-bottom:.35rem}.resume-body li::marker{color:var(--fg-soft)}.resume-body a{color:var(--link);text-decoration:none;border-bottom:1px solid currentColor}.resume-body a:visited{color:var(--link-visited)}.resume-body a:hover{background:var(--link);color:var(--bg);border-bottom-color:transparent}.resume-body strong{font-weight:700}.resume-body hr{border:0;border-top:1px solid var(--rule);margin:2rem 0 1rem}.resume-body em{font-style:italic}.download-btn{position:fixed;bottom:1.5rem;right:1.5rem;font-family:var(--font-mono);font-size:.8rem;font-weight:500;color:var(--bg);background:var(--fg);border:1px solid var(--fg);padding:.6rem .9rem;cursor:pointer;border-radius:2px;box-shadow:0 2px 8px #00000014;transition:transform .1s ease;text-decoration:none;display:inline-block}.download-btn:hover{transform:translateY(-1px)}.download-btn:active{transform:translateY(0)}.site-header{max-width:var(--max-width);margin:0 auto 3rem;padding-bottom:1rem;border-bottom:1px solid var(--rule)}.site-nav{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap}.site-nav__brand{font-size:.9rem;font-weight:700;color:var(--fg);text-decoration:none;letter-spacing:-.01em}.site-nav__brand:hover{color:var(--link)}.site-nav__links{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.25rem 1.25rem;font-size:.85rem}.site-nav__links a{color:var(--fg-soft);text-decoration:none;border-bottom:1px dotted transparent}.site-nav__links a:hover,.site-nav__links a[aria-current=page]{color:var(--link);border-bottom-color:currentColor}.site-main{max-width:var(--max-width);margin:0 auto}.site-footer{max-width:var(--max-width);margin:4rem auto 0;padding-top:1.25rem;border-top:1px solid var(--rule);font-size:.75rem;color:var(--fg-soft)}.site-footer p{margin:0}.home-hero{margin-bottom:3rem}.home-hero__name{font-size:1.75rem;font-weight:700;margin:0 0 .5rem;letter-spacing:-.01em}.home-hero__bio{font-size:.95rem;color:var(--fg-soft);margin:0;max-width:38rem}.home-sections ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.85rem}.home-sections__link{display:flex;flex-direction:column;gap:.15rem;padding:.65rem .85rem;border:1px solid var(--rule);border-radius:2px;color:inherit;text-decoration:none;transition:border-color .1s ease,transform .1s ease}.home-sections__link:hover{border-color:var(--fg);transform:translateY(-1px)}.home-sections__label{font-size:.95rem;font-weight:700;color:var(--fg)}.home-sections__desc{font-size:.8rem;color:var(--fg-soft)}.about-body__title{font-size:1.75rem;font-weight:700;margin:0 0 1.5rem;letter-spacing:-.01em}.about-body p{font-size:.9rem;line-height:1.7;margin:0 0 1.1rem}.about-body a{color:var(--link);text-decoration:none;border-bottom:1px solid currentColor}.about-body a:visited{color:var(--link-visited)}.about-body a:hover{background:var(--link);color:var(--bg);border-bottom-color:transparent}.work-list__title,.work-entry__title{font-size:1.75rem;font-weight:700;margin:0 0 .5rem;letter-spacing:-.01em}.work-list__lede{font-size:.9rem;color:var(--fg-soft);margin:0 0 2rem}.work-list__empty{font-size:.9rem;color:var(--fg-soft)}.work-list__items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.85rem}.work-list__link{display:grid;grid-template-columns:1fr auto;gap:.25rem 1rem;padding:.75rem .95rem;border:1px solid var(--rule);border-radius:2px;color:inherit;text-decoration:none;transition:border-color .1s ease,transform .1s ease}.work-list__link:hover{border-color:var(--fg);transform:translateY(-1px)}.work-list__entry-title{font-size:.95rem;font-weight:700;color:var(--fg)}.work-list__date{font-size:.8rem;color:var(--fg-soft);align-self:start;text-align:right;white-space:nowrap}.work-list__summary{grid-column:1 / -1;font-size:.85rem;color:var(--fg-soft)}.work-list__tags,.work-entry__tags{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.15rem}.work-list__tag,.work-entry__tag{font-size:.7rem;color:var(--fg-soft);padding:.05rem .4rem;border:1px solid var(--rule);border-radius:2px}.work-entry__header{margin-bottom:1.75rem;padding-bottom:1rem;border-bottom:1px solid var(--rule)}.work-entry__meta{font-size:.8rem;color:var(--fg-soft);margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem}.work-entry__body p,.work-entry__body li{font-size:.9rem;line-height:1.7}.work-entry__body p{margin:0 0 1.1rem}.work-entry__body h2{font-size:1.05rem;font-weight:700;margin:2rem 0 .75rem}.work-entry__body h3{font-size:.95rem;font-weight:700;margin:1.5rem 0 .4rem}.work-entry__body a{color:var(--link);text-decoration:none;border-bottom:1px solid currentColor}.work-entry__body a:visited{color:var(--link-visited)}.work-entry__body a:hover{background:var(--link);color:var(--bg);border-bottom-color:transparent}.work-entry__body ul{padding-left:1.25rem;margin:.5rem 0 1.1rem}.writing-list__title,.writing-entry__title{font-size:1.75rem;font-weight:700;margin:0 0 .5rem;letter-spacing:-.01em}.writing-list__lede{font-size:.9rem;color:var(--fg-soft);margin:0 0 2rem}.writing-list__empty{font-size:.9rem;color:var(--fg-soft);padding:1rem 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}.writing-list__items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.85rem}.writing-list__link{display:grid;grid-template-columns:1fr auto;gap:.25rem 1rem;padding:.75rem .95rem;border:1px solid var(--rule);border-radius:2px;color:inherit;text-decoration:none;transition:border-color .1s ease,transform .1s ease}.writing-list__link:hover{border-color:var(--fg);transform:translateY(-1px)}.writing-list__entry-title{font-size:.95rem;font-weight:700;color:var(--fg)}.writing-list__date{font-size:.8rem;color:var(--fg-soft);align-self:start;text-align:right;white-space:nowrap}.writing-list__summary{grid-column:1 / -1;font-size:.85rem;color:var(--fg-soft)}.writing-entry__header{margin-bottom:1.75rem;padding-bottom:1rem;border-bottom:1px solid var(--rule)}.writing-entry__meta{font-size:.8rem;color:var(--fg-soft);margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem}.writing-entry__body p,.writing-entry__body li{font-size:.9rem;line-height:1.7}.writing-entry__body p{margin:0 0 1.1rem}.writing-entry__body h2{font-size:1.05rem;font-weight:700;margin:2rem 0 .75rem}.writing-entry__body h3{font-size:.95rem;font-weight:700;margin:1.5rem 0 .4rem}.writing-entry__body a{color:var(--link);text-decoration:none;border-bottom:1px solid currentColor}.writing-entry__body a:visited{color:var(--link-visited)}.writing-entry__body a:hover{background:var(--link);color:var(--bg);border-bottom-color:transparent}.writing-entry__body ul{padding-left:1.25rem;margin:.5rem 0 1.1rem}@page{size:A4;margin:1.5cm}@media print{html{font-size:10.5pt}body{padding:0;background:#fff;color:#000}.download-btn{display:none}.resume-header{margin-bottom:1rem;padding-bottom:.75rem}.resume-header .name{font-size:1.5rem}.resume-body h2{margin:1.25rem 0 .5rem;page-break-after:avoid}.resume-body h3{margin:.75rem 0 .1rem;page-break-after:avoid}.resume-body h3+p{page-break-after:avoid}.resume-body ul,.resume-body li{page-break-inside:avoid}.resume-body a{color:#000;border-bottom:none}.resume-header .contact a{border-bottom:none}}
