.page{padding-block:clamp(3rem,8vh,5.5rem) clamp(4rem,9vh,7rem)}.page-head{gap:.7rem;max-width:46rem;margin-bottom:clamp(2rem,5vh,3.5rem);display:grid}.page-head h1{font-family:var(--font-display);letter-spacing:-.02em;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:500}.page-head p{color:var(--muted)}.year-block{margin-bottom:clamp(2rem,4vh,3rem)}.year-heading{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1rem;padding-bottom:.55rem;display:flex}.year-heading h2{font-family:var(--font-mono);letter-spacing:.18em;font-size:.9rem;font-weight:500}.year-heading span{color:var(--muted);letter-spacing:.14em;font-size:.7rem}.archive-list{margin:0;padding:0;list-style:none}.archive-list li{border-bottom:1px solid color-mix(in srgb, var(--line) 65%, transparent);padding:.95rem 0}.archive-list a{color:var(--text);gap:.2rem 1.25rem;text-decoration:none;transition:padding-inline .16s;display:grid}@media (width>=46rem){.archive-list a{grid-template-columns:5rem minmax(0,1fr) auto;align-items:baseline}.archive-list a:hover{padding-inline:.4rem 0}}.archive-list time{color:var(--muted);font-family:var(--font-mono);letter-spacing:.08em;font-size:.72rem}.archive-list strong{font-size:1rem;font-weight:500}.archive-list a>span{color:var(--accent);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;font-size:.68rem}.archive-list p{color:var(--muted);margin-top:.2rem;font-size:.88rem}.empty{color:var(--muted)}.article-head{border-bottom:1px solid var(--line);gap:.9rem;max-width:48rem;padding-bottom:clamp(1.5rem,4vh,2.5rem);display:grid}.article-head h1{font-family:var(--font-display);letter-spacing:-.02em;font-size:clamp(2rem,4.6vw,3.1rem);font-weight:500}.article-lede{color:var(--muted);font-size:1.05rem}.article-body{gap:2rem clamp(2rem,5vw,4rem);padding-top:clamp(1.75rem,4vh,2.75rem);display:grid}@media (width>=62rem){.article-body{grid-template-columns:minmax(0,1fr) 13rem;align-items:start}}.prose{max-width:70ch;font-size:1.02rem}.prose>*+*{margin-top:1.15em}.prose h2{letter-spacing:-.015em;margin-top:2.2em;font-size:clamp(1.35rem,2.4vw,1.7rem);font-weight:600}.prose h3{margin-top:1.9em;font-size:1.15rem;font-weight:600}.prose h2+*,.prose h3+*{margin-top:.6em}.prose a{color:var(--accent-strong)}.prose strong{font-weight:600}.prose ul,.prose ol{padding-left:1.35em}.prose li+li{margin-top:.35em}.prose li::marker{color:var(--muted)}.prose blockquote{border-left:2px solid var(--accent);color:var(--muted);font-family:var(--font-display);margin:1.6em 0;padding:.2em 0 .2em 1.1em;font-style:italic}.prose blockquote p+p{margin-top:.8em}.prose hr{border:0;border-top:1px solid var(--line);margin:2.4em 0}.prose img{border-radius:6px}.prose figure figcaption{color:var(--muted);margin-top:.5em;font-size:.85rem}.prose table{border-collapse:collapse;width:100%;font-size:.92rem}.prose th,.prose td{border-bottom:1px solid var(--line);text-align:left;padding:.55em .7em}.prose th{color:var(--muted);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;font-size:.72rem;font-weight:500}.prose :not(pre)>code{border:1px solid var(--line);background:var(--surface-2);font-family:var(--font-mono);border-radius:4px;padding:.12em .38em;font-size:.88em}.prose pre{border:1px solid var(--line);border-radius:8px;padding:1rem 1.15rem;font-size:.86rem;line-height:1.65;overflow-x:auto}.prose pre code{font-family:var(--font-mono)}html[data-theme=dark] .astro-code,html[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;text-decoration:var(--shiki-dark-text-decoration)!important}.article-toc{top:calc(var(--header-height) + 1.5rem);border-left:1px solid var(--line);gap:.6rem;padding-left:1rem;font-size:.85rem;display:grid;position:sticky}.article-toc .mono{color:var(--muted);letter-spacing:.18em;text-transform:uppercase;font-size:.68rem}.article-toc ol{gap:.45rem;margin:0;padding:0;list-style:none;display:grid}.article-toc li.depth-3{padding-left:.85rem}.article-toc a{color:var(--muted);text-decoration:none}.article-toc a:hover{color:var(--accent)}@media (width<=61.99rem){.article-toc{border-left:0;border-bottom:1px solid var(--line);order:-1;padding:0 0 1rem;position:static}}.article-foot{border-top:1px solid var(--line);flex-wrap:wrap;gap:.75rem;margin-top:clamp(2rem,5vh,3.5rem);padding-top:1.5rem;display:flex}.profile-head{gap:.85rem;max-width:52rem}.profile-role{color:var(--accent);letter-spacing:.14em;text-transform:uppercase;font-size:.76rem}.profile-summary{color:var(--muted);font-size:1.02rem}.profile-sections{gap:clamp(2rem,5vh,3rem);max-width:58rem;display:grid}.profile-list{margin:0;padding:0;list-style:none}.profile-list li{border-bottom:1px solid color-mix(in srgb, var(--line) 65%, transparent);gap:.2rem 1.5rem;padding:.95rem 0;display:grid}@media (width>=46rem){.profile-list li{grid-template-columns:8rem minmax(0,1fr);align-items:baseline}.profile-list li p{grid-column:2}}.profile-period{color:var(--muted);letter-spacing:.1em;font-size:.7rem}.profile-list strong{font-size:1rem;font-weight:500}.profile-list p{color:var(--muted);font-size:.9rem}.profile-contact{border-top:1px solid var(--line);gap:.9rem;max-width:58rem;margin-top:clamp(2rem,5vh,3.5rem);padding-top:1.5rem;display:grid}.profile-contact>p{color:var(--muted)}.friend-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr));gap:1rem;margin:0 0 clamp(2rem,5vh,3rem);padding:0;list-style:none;display:grid}.friend-grid a{border:1px solid var(--line);height:100%;color:var(--text);border-radius:8px;gap:.35rem;padding:1.1rem 2.4rem 1.1rem 1.15rem;text-decoration:none;transition:border-color .16s,transform .16s;display:grid;position:relative}.friend-grid a:hover{border-color:var(--accent);transform:translateY(-2px)}.friend-grid strong{flex-wrap:wrap;align-items:baseline;gap:.45rem;font-size:1rem;font-weight:600;display:flex}.friend-grid em{color:var(--muted);font-size:.82rem;font-style:normal;font-weight:400}.friend-grid span{color:var(--muted);font-size:.86rem}.friend-grid i{color:var(--muted);font-style:normal;transition:color .16s;position:absolute;top:1.1rem;right:1.15rem}.friend-grid a:hover i{color:var(--accent)}.contact-emails{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.contact-emails li{flex-wrap:wrap;align-items:baseline;gap:.55rem;font-size:.92rem;display:flex}.contact-emails b{font-family:var(--font-mono);font-weight:500}.contact-emails .mono{min-width:2.2rem;color:var(--muted);letter-spacing:.1em;text-transform:uppercase;font-size:.68rem}.contact-emails a{color:var(--text);border-bottom:1px solid color-mix(in srgb, var(--accent) 40%, transparent);text-decoration:none}.contact-emails a:hover{color:var(--accent)}.gallery-section{margin-bottom:clamp(2rem,5vh,3rem)}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr));gap:1rem;margin:0;padding:0;list-style:none;display:grid}.photo-grid figure{gap:.5rem;margin:0;display:grid}.photo-grid img{object-fit:cover;border:1px solid var(--line);border-radius:8px;width:100%;height:clamp(10rem,18vw,13.5rem);transition:transform .26s}.photo-grid figure:hover img{transform:scale(1.015)}.photo-grid figcaption{gap:.12rem;font-size:.82rem;display:grid}.photo-grid figcaption span{color:var(--text)}.photo-grid figcaption small{color:var(--muted);letter-spacing:.08em;font-size:.66rem}.resume{align-items:start;gap:clamp(1.75rem,4vw,3.25rem);display:grid}@media (width>=62rem){.resume{grid-template-columns:15rem minmax(0,1fr)}}.resume-side{align-content:start;gap:1.6rem;display:grid}@media (width>=62rem){.resume-side{top:calc(var(--header-height) + 2rem);position:sticky}}.resume-photo{gap:.5rem;margin:0;display:grid}.resume-photo img{aspect-ratio:3/4;object-fit:cover;border:1px solid var(--line);border-radius:10px;width:100%;height:auto;display:block}.resume-photo figcaption{color:var(--muted);letter-spacing:.14em;text-align:right;font-size:.66rem}.resume-block{gap:.55rem;display:grid}.resume-block h2{color:var(--muted);font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;font-size:.66rem;font-weight:500}.resume-contact{gap:.45rem;margin:0;padding:0;font-size:.84rem;list-style:none;display:grid}.resume-contact li{gap:.12rem;display:grid}.resume-contact .mono{color:var(--muted);letter-spacing:.12em;text-transform:uppercase;font-size:.62rem}.resume-contact a{color:var(--text);overflow-wrap:anywhere;text-decoration:none}.resume-contact a:hover{color:var(--accent)}.resume-tags{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.resume-tags li{border:1px solid var(--line);border-radius:999px;padding:.18rem .62rem;font-size:.78rem}.resume-main{gap:clamp(1.6rem,3.6vh,2.6rem);display:grid}.resume-head{border-bottom:1px solid var(--line);gap:.45rem;padding-bottom:1.25rem;display:grid}.resume-overline{color:var(--muted);letter-spacing:.2em;font-size:.66rem}.resume-head h1{font-family:var(--font-display);letter-spacing:-.02em;font-size:clamp(2rem,4.4vw,3rem);font-weight:500}.resume-role{color:var(--accent);letter-spacing:.04em;font-size:.86rem}.resume-titles{gap:.35rem;margin:0;padding:0;list-style:none;display:grid}.resume-titles li{border:1px solid color-mix(in srgb, var(--accent) 30%, var(--line));background:color-mix(in srgb, var(--accent) 6%, transparent);color:var(--text);border-radius:4px;padding:.3rem .55rem;font-size:.75rem;line-height:1.45}.resume-identity h2{margin-bottom:.1rem}.resume-summary{color:var(--muted);margin-top:.35rem;font-size:.98rem}.resume-section{gap:.9rem;display:grid}.resume-section-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:1rem;padding-bottom:.5rem;display:flex}.resume-section-head h2{font-size:.95rem;font-weight:600}.resume-section-head span{color:var(--muted);letter-spacing:.12em;font-size:.66rem}.resume-timeline{gap:1.05rem;margin:0;padding:0;list-style:none;display:grid}.resume-timeline li{gap:.15rem 1.25rem;display:grid}@media (width>=46rem){.resume-timeline li{grid-template-columns:7.5rem minmax(0,1fr)}}.resume-period{color:var(--muted);letter-spacing:.08em;font-size:.7rem}.resume-timeline strong{font-size:.98rem;font-weight:600}.resume-timeline p{color:var(--muted);margin-top:.2rem;font-size:.88rem}.resume-note{border-top:1px solid var(--line);color:var(--muted);padding-top:1.25rem;font-size:.86rem}
