@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-vietnamese-full-normal.7BpKI3vF.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-ext-full-normal.YHFkNujK.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-full-normal.CFFu7zhK.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-vietnamese-full-italic.BHALq22K.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-ext-full-italic.B8-t4Nou.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-full-italic.D2JnYqd-.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-ext-wght-normal.d45eAU9y.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-wght-normal.BAAhND-U.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-greek-wght-normal.CmyJS8uq.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-vietnamese-wght-normal.Dg1JeJN0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-ext-wght-normal.CIII54If.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-wght-normal.IvpUvPa2.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light dark;--bg:#f6f5f1;--fg:#161615;--muted:#5f5e5a;--rule:#e2e0d8;--rule-strong:#cbc8be;--accent:#c2410c;--neon:#ff5a1f;--available:#2f8a55;--room:#0a0a09;--display:"Fraunces Variable", Fraunces, "Iowan Old Style", Georgia, serif;--sans:"IBM Plex Sans Variable", "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--measure:52rem;--measure-prose:42.5rem;--label-col:9rem;--gutter:clamp(1.25rem, 5vw, 2.5rem)}@media (prefers-color-scheme:dark){:root{--bg:#121211;--fg:#ecebe6;--muted:#a3a19a;--rule:#262624;--rule-strong:#3b3b38;--accent:#ff7a45;--available:#4cc283;--room:#050505}}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:1.5rem}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}body{background:var(--bg);color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0;font-size:1rem;line-height:1.6}h1,h2,h3{text-wrap:balance;line-height:1.25}p,li{text-wrap:pretty}a{color:var(--accent);text-underline-offset:.22em;text-decoration-line:underline;text-decoration-thickness:1px;text-decoration-color:color-mix(in srgb, var(--accent) 35%, transparent);transition:text-decoration-color .15s}a:hover{text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}::selection{background:color-mix(in srgb, var(--accent) 22%, transparent)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.skip-link{z-index:100;background:var(--fg);color:var(--bg);font:500 .8125rem/1 var(--mono);border-radius:4px;padding:.5rem .75rem;text-decoration:none;position:absolute;top:-10rem;left:1rem}.skip-link:focus{top:1rem}.wrap{width:100%;max-width:calc(var(--measure) + var(--gutter) * 2);padding-inline:var(--gutter);margin-inline:auto}.mono{font-family:var(--mono)}.label{font:500 .8125rem/1.4 var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:0 0 1.25rem}.section{padding-top:4.5rem}.section-lede{color:var(--muted);margin:-.5rem 0 1.5rem}.intro{gap:1.75rem 4rem;padding-top:clamp(3.5rem,10vw,7rem);padding-bottom:1.25rem;display:grid}.intro h1{font-family:var(--display);font-optical-sizing:auto;font-variation-settings:"SOFT" 28, "WONK" 0;letter-spacing:-.055em;text-wrap:balance;margin:0;font-size:clamp(3.25rem,12vw,7.25rem);font-weight:500;line-height:.86}.intro h1 span{display:block}.intro-copy{max-width:28rem;padding-top:.35rem}.intro-json{font:.75rem/1.55 var(--mono);color:var(--muted);margin:0;overflow-x:auto}.intro-json code{font:inherit}.json-k{color:color-mix(in srgb, var(--fg) 55%, var(--muted))}.json-s{color:var(--fg)}.json-w{color:var(--available)}.intro-status{font:.8125rem/1.4 var(--mono);color:var(--fg);align-items:center;gap:.55rem;margin:1rem 0 0;display:flex}.status-dot{background:var(--available);width:.4375rem;height:.4375rem;box-shadow:0 0 0 4px color-mix(in srgb, var(--available) 18%, transparent);border-radius:50%;flex:none}.intro-links{border-top:1px solid var(--rule);font:.8125rem var(--mono);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.75rem 1.5rem;margin:1.5rem 0 0;padding:1rem 0 0;display:flex}.intro-links ul{flex-wrap:wrap;gap:.25rem 1.25rem;margin:0;padding:0;list-style:none;display:flex}.intro-links a{color:var(--fg);text-decoration:none}.intro-links a:hover{color:var(--accent)}.intro-links .skip-work{color:var(--muted)}@media (width>=56rem){.intro{grid-template-columns:minmax(0,1fr) 26rem;align-items:end;padding-bottom:.5rem}}.btn{border:1px solid var(--rule-strong);min-height:2.5rem;color:var(--fg);font:500 .8125rem/1 var(--mono);cursor:pointer;white-space:nowrap;background:0 0;border-radius:4px;align-items:center;gap:.5rem;padding:.5rem .875rem;transition:border-color .15s,background-color .15s,color .15s;display:inline-flex}.btn:hover:not([disabled]){border-color:var(--fg)}.btn-primary{background:var(--fg);border-color:var(--fg);color:var(--bg)}.btn-primary:hover:not([disabled]){background:color-mix(in srgb, var(--fg) 86%, var(--bg))}.btn[disabled]{opacity:.45;cursor:not-allowed}.btn-link{color:var(--accent);font:inherit;text-underline-offset:.22em;text-decoration:underline 1px;text-decoration-color:color-mix(in srgb, var(--accent) 35%, transparent);cursor:pointer;background:0 0;border:0;padding:0}.btn-link:hover{text-decoration-color:currentColor}.token{vertical-align:-.2em;background:radial-gradient(circle at 34% 28%,#fff8d6f2 0 7%,#0000 26%),radial-gradient(circle,#d9b04d 0 38%,#c39434 39% 46%,#e2bd5d 47% 60%,#a77822 61% 100%);border-radius:50%;flex:none;width:1.125rem;height:1.125rem;display:inline-block;position:relative;box-shadow:inset 0 0 0 1px #6d4a0fd9,inset 0 -1px 1px #50340873,0 1px 1.5px #00000047}.token:after{content:"";border-radius:50%;position:absolute;inset:30%;box-shadow:inset 0 0 0 1px #6d4a0f80}.token-sm{width:.875rem;height:.875rem}.coin{vertical-align:middle;cursor:pointer;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;width:2.75rem;height:2.75rem;margin:-.875rem -.5rem;padding:0;display:inline-flex}.coin[hidden]{display:none}.coin .token{transition:transform .25s cubic-bezier(.2,.7,.2,1)}.coin:hover .token,.coin:focus-visible .token{transform:rotate(-14deg)scale(1.12)}.coin.is-collected{pointer-events:none}.coin.is-collected .token{animation:.7s cubic-bezier(.2,.7,.2,1) forwards coin-collect}@keyframes coin-collect{40%{opacity:1;transform:translateY(-.75rem)scale(1.15)}to{opacity:0;transform:translateY(-1.5rem)scale(.6)}}.cv{padding-top:1.5rem;padding-bottom:2rem}.cv-nav{z-index:4;border-bottom:1px solid var(--rule);background:color-mix(in srgb, var(--bg) 86%, transparent);backdrop-filter:blur(14px);font:.6875rem/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;flex-wrap:wrap;gap:.35rem 1.75rem;margin:0 0 .5rem;padding:.875rem 0;display:flex;position:sticky;top:0}.cv-nav a{color:var(--muted);text-decoration:none}.cv-nav a:hover{color:var(--fg)}.cv-section{grid-template-columns:var(--label-col) minmax(0, 1fr);border-top:1px solid var(--rule);gap:.35rem 2.25rem;padding:2.25rem 0;display:grid}.cv-section:first-of-type{border-top:0}.cv-label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0;padding-top:.2rem;font-size:.6875rem;font-weight:500}.cv-body{min-width:0}.entries{margin:0;padding:0;list-style:none}.entry+.entry,.honour-group+.honour-group{margin-top:1.75rem}.entry-tight+.entry-tight{margin-top:1rem}.entry-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 1.25rem;display:flex}.entry-title,.entry-strong{letter-spacing:-.015em;margin:0;font-size:1.0625rem;font-weight:500}.entry-title a{color:inherit;text-decoration:none}.entry-title a:hover{color:var(--accent)}.entry-tag{letter-spacing:0;color:var(--muted);margin-left:.5rem;font-size:.75rem;font-weight:400}.entry-date{color:var(--muted);font-variant-numeric:tabular-nums;flex:none;font-size:.8125rem}.entry-text,.entry-sub{color:var(--muted);margin:.3rem 0 0}.entry-meta{color:var(--muted);margin:.35rem 0 0;font-size:.8125rem}.entry-notes,.entry-list{color:var(--muted);margin:.4rem 0 0;padding-left:1.1rem}.entry-notes li+li,.entry-list li+li{margin-top:.25rem}.group-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 .65rem;font-size:.75rem;font-weight:500}.cv-actions{flex-wrap:wrap;gap:.5rem;margin:1rem 0 0;display:flex}.contact-list{grid-template-columns:6rem minmax(0,1fr);gap:.35rem 1rem;margin:1.25rem 0 0;display:grid}.contact-list div{display:contents}.contact-list dt{color:var(--muted);margin:0;font-size:.8125rem}.contact-list dd{margin:0}@media (width<=36rem){.cv-section{grid-template-columns:minmax(0,1fr);gap:.75rem;padding:1.75rem 0}}.work{padding-bottom:2rem}.work .cv-section{padding:3.25rem 0;display:block}.work .cv-label{margin:0 0 1.75rem;padding-top:0;font-size:.6875rem}.catalog,.beats,.index,.school-awards{margin:0;padding:0;list-style:none}.piece{border-top:1px solid var(--rule);grid-template-columns:3.25rem minmax(0,1fr);gap:0 1.25rem;padding:1.75rem 0;display:grid}.piece:first-child{border-top:0;padding-top:0}.piece-index{font:.75rem/1 var(--mono);letter-spacing:.08em;color:var(--muted);margin:.35rem 0 0}.piece-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 1.25rem;display:flex}.piece-title{font-family:var(--display);font-optical-sizing:auto;letter-spacing:-.03em;margin:0;font-size:clamp(1.5rem,3vw,2.05rem);font-weight:500;line-height:1.1}.piece-title a{color:inherit;text-decoration:none}.piece-title a:hover{color:var(--accent)}.piece-kind,.piece-stack,.beat-when,.index-year{font:.75rem/1.4 var(--mono);color:var(--muted);flex:none}.piece-summary{max-width:38rem;margin:.55rem 0 0;font-size:1.02rem;line-height:1.5}.piece-points{max-width:38rem;margin:.85rem 0 0;padding:0;list-style:none}.piece-points li{color:var(--muted);padding-left:1.1rem;font-size:.9375rem;position:relative}.piece-points li+li{margin-top:.35rem}.piece-points li:before{content:"";background:var(--rule-strong);width:.4rem;height:1px;position:absolute;top:.55em;left:0}.piece-stack{margin:.9rem 0 0}.beats{position:relative}.beats:before{content:"";background:var(--rule);width:1px;position:absolute;top:.35rem;bottom:.35rem;left:.28rem}.beat{grid-template-columns:8.5rem minmax(0,1fr);gap:.25rem 1.5rem;padding:1.15rem 0 1.15rem 1.5rem;display:grid}.beat-when{margin:.2rem 0 0}.beat-title{font-family:var(--display);letter-spacing:-.025em;margin:0;font-size:1.35rem;font-weight:500;line-height:1.15}.beat-role,.beat-notes{color:var(--muted);margin:.3rem 0 0}.beat-notes{padding-left:1.1rem}.beat-notes li+li{margin-top:.25rem}.school-name{font-family:var(--display);letter-spacing:-.03em;margin:0;font-size:1.6rem;font-weight:500}.school-program{color:var(--muted);margin:.3rem 0 0}.school-awards{margin:.85rem 0 0}.school-awards li+li,.index ul li+li{margin-top:.65rem}.index{gap:1.5rem;display:grid}.index-row{grid-template-columns:7.5rem minmax(0,1fr);gap:.35rem 1.5rem;display:grid}.index dt{font:italic 1.05rem/1.3 var(--display);color:var(--muted);margin:.15rem 0 0}.index dd,.index ul{margin:0;padding:0;list-style:none}.index-title{font-weight:500}.index-year{margin-left:.65rem}.index-detail{color:var(--muted);margin-top:.15rem;font-size:.9375rem;display:block}@media (width<=40rem){.piece,.beat,.index-row{grid-template-columns:minmax(0,1fr);padding-left:0}.beats:before,.piece-index{display:none}}.resume .piece-index,.resume .piece-points,.resume .beats:before{display:none}.resume .piece,.resume .beat,.resume .index-row{border:0;padding:0 0 .15rem;display:block}.resume .piece+.piece,.resume .beat+.beat{margin-top:1.15rem}.resume .piece-title,.resume .beat-title,.resume .school-name{letter-spacing:-.015em;font-size:1.0625rem}.resume .piece-kind,.resume .beat-when{float:right;margin:.2rem 0 0 1rem}.resume .piece-body,.resume .beat-body{overflow:hidden}.site-footer{border-top:1px solid var(--rule);font:.8125rem/1.6 var(--mono);color:var(--muted);margin-top:6rem;padding-top:1.5rem;padding-bottom:3rem}.site-footer p{margin:0}.site-footer .row{flex-wrap:wrap;gap:.25rem 1.5rem;display:flex}.site-footer a{color:var(--muted);text-decoration-color:var(--rule-strong)}.site-footer a:hover{color:var(--accent)}.toast{z-index:90;background:var(--fg);max-width:calc(100vw - 2rem);color:var(--bg);font:.8125rem/1.4 var(--mono);opacity:0;pointer-events:none;border-radius:999px;align-items:center;gap:.5rem;padding:.625rem 1rem;transition:opacity .25s,transform .25s;display:flex;position:fixed;bottom:1.25rem;left:50%;transform:translate(-50%,.75rem);box-shadow:0 8px 24px -10px #00000073}.toast.is-visible{opacity:1;transform:translate(-50%)}.page-head{padding-top:clamp(2.5rem,8vw,4.5rem)}.back-link{font:.8125rem var(--mono)}.page-head h1{font-family:var(--display);font-optical-sizing:auto;letter-spacing:-.04em;margin:1.75rem 0 .5rem;font-size:clamp(2rem,5vw,3rem);font-weight:500;line-height:1.05}.page-head .summary{color:var(--muted);margin:0;font-size:1.0625rem}.facts{border-block:1px solid var(--rule);grid-template-columns:7.5rem minmax(0,1fr);gap:.375rem 1.25rem;margin:2rem 0 0;padding:1rem 0;font-size:.9375rem;display:grid}.facts dt{font:.8125rem/1.7 var(--mono);color:var(--muted)}.facts dd{margin:0}.prose{padding-top:1rem}.prose h2{font-family:var(--display);letter-spacing:-.02em;margin:2.75rem 0 .75rem;font-size:1.25rem;font-weight:500}.prose h3{margin:2rem 0 .5rem;font-size:1rem;font-weight:600}.prose p,.prose ul,.prose ol{margin:0 0 1rem}.prose li+li{margin-top:.375rem}.prose code{background:color-mix(in srgb, var(--fg) 6%, transparent);font-family:var(--mono);border-radius:3px;padding:.1em .3em;font-size:.875em}.prose pre{border:1px solid var(--rule);border-radius:4px;margin:0 0 1.25rem;padding:1rem 1.125rem;font-size:.8125rem;line-height:1.6;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;padding:0}.prose blockquote{border-left:2px solid var(--rule-strong);color:var(--muted);margin:0 0 1rem;padding-left:1rem}.prose figure{margin:1.5rem 0}.prose figcaption{font:.8125rem var(--mono);color:var(--muted);margin-top:.5rem}.astro-code,.astro-code span{color:var(--shiki-light)!important;background-color:#0000!important}@media (prefers-color-scheme:dark){.astro-code,.astro-code span{color:var(--shiki-dark)!important}}.notice{border:1px dashed var(--rule-strong);color:var(--muted);border-radius:4px;margin:2rem 0 0;padding:1rem 1.125rem;font-size:.9375rem}.resume{padding-bottom:2rem}.resume-head{padding-top:clamp(2.5rem,8vw,4.5rem);padding-bottom:.5rem}.resume-head h1{font-family:var(--display);letter-spacing:-.04em;margin:1.75rem 0 .5rem;font-size:clamp(2.25rem,5vw,3.25rem);font-weight:500;line-height:1}.resume-head .summary{color:var(--muted);margin:0}.resume-buttons{flex-wrap:wrap;gap:.5rem;display:flex}.resume-actions{justify-content:space-between;align-items:center;gap:1rem;display:flex}.resume-contact{font:.875rem var(--mono);flex-wrap:wrap;gap:.25rem 1.25rem;margin:.75rem 0 0;padding:0;list-style:none;display:flex}.resume-section{margin-top:2.5rem}.resume-section .label{border-bottom:1px solid var(--rule);padding-bottom:.5rem}.resume-row+.resume-row{margin-top:1.25rem}.resume-row h3{margin:0;font-size:1rem;font-weight:600}.resume-row p,.resume-row ul{margin:.25rem 0 0}.resume-row ul,.resume-list{padding-left:1.125rem}.resume-list{margin:0}.resume-list li+li{margin-top:.375rem}.resume-line{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:0 1rem;display:flex}.resume-date,.resume-sub{color:var(--muted);font-size:.9375rem;font-weight:400}.resume-date{font-family:var(--mono);font-size:.8125rem}@media print{@page{margin:14mm 16mm}:root{--bg:#fff;--fg:#000;--muted:#444;--rule:#ccc;--accent:#000}body{font-size:10pt;line-height:1.45}.skip-link,.site-footer,.toast,.resume-actions,.cv-nav,.coin{display:none!important}.cv-section{padding:.85rem 0;display:block}.cv-label{margin-bottom:.5rem}.piece-index,.piece-points,.beats:before{display:none!important}.piece,.beat,.index-row{border:0;padding:0;display:block}.wrap{max-width:none;padding:0}.page-head{padding-top:0}.page-head h1{margin-top:0}a{color:inherit;text-decoration:none}.resume-section{break-inside:avoid;margin-top:1.25rem}.resume-row+.resume-row{margin-top:.625rem}}
