.cv .id{max-width:var(--measure)}.cv .id h1{margin:0}.cv .id[tabindex="-1"]:focus{outline:none}.cv .id .deck{text-wrap:balance;font-size:var(--step-2);color:var(--ink-soft);margin:.55rem 0 0;font-style:italic;font-weight:300;line-height:1.3}.cv .id .pitch{font-size:var(--step-1);max-width:32em;margin:clamp(1.1rem,3vh,1.6rem) 0 0;line-height:1.45}.cv .id .lead{color:var(--ink-soft);max-width:36em;margin:.8rem 0 0}.cv .id .strip{font-size:var(--step--1);color:var(--ink-soft);margin:.9rem 0 0;line-height:1.45;display:none}.cv .id .strip span{white-space:nowrap}.cv .id .strip a{font-weight:600}@media (width>=40rem){.cv .id .deck .half{display:inline-block}}@media (width<66rem){.cv .id .strip{display:block}}@media (width<40rem){.cv .id .strip>span{display:block}.cv .id .strip .sep{display:none}}@media print{.cv .id{max-width:none}.cv .id h1{letter-spacing:-.02em;font-variation-settings:normal;font-size:22pt;font-weight:400;line-height:1.05}.cv .id .deck{color:#1f1f1f;margin-top:3pt;font-size:12pt;font-weight:400}.cv .id .pitch{max-width:none;margin-top:7pt;font-size:10.5pt;line-height:1.3}.cv .id .lead{color:#1f1f1f;max-width:none;margin-top:4pt}.cv .id .strip{display:none!important}}.cv .body{margin-top:clamp(2.2rem,6vh,3.4rem)}.cv .sec{margin-top:clamp(2.4rem,6vh,3.4rem);container:sec/inline-size}.cv .sec:first-child{margin-top:0}.cv .sec>h2{font-size:var(--step-1);letter-spacing:-.01em;margin-bottom:.9rem}.cv .sec-note{font-size:var(--step--1);color:var(--ink-muted);margin:-.5rem 0 .9rem;font-style:italic}@media print{.cv .sec{margin-top:8pt;container-type:normal}.cv .print-body>.sec:first-child{margin-top:9pt}.cv .sec>h2{-moz-column-break-after:avoid;break-after:avoid;letter-spacing:0;border-bottom:.5pt solid #b6b6b6;margin-bottom:4pt;padding-bottom:1.5pt;font-size:11.5pt}.cv .sec-note{display:none}}.cv .roles{max-width:var(--measure);font-size:var(--step--1);gap:.25rem;margin:0;padding:0;list-style:none;display:grid}.cv .roles li{grid-template-columns:9.5rem 1fr auto;align-items:baseline;gap:0 .8rem;display:grid}.cv .roles .eng{color:var(--ink-muted);font-style:italic}.cv .roles .when{color:var(--ink-muted);font-variant-numeric:lining-nums tabular-nums;white-space:nowrap}.cv .roles a{-webkit-text-decoration-color:var(--rule);text-decoration-color:var(--rule)}.cv .roles a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.cv .roles .at{color:var(--ink-muted);font-weight:400}@container sec (width<30rem){.cv .roles{gap:.55rem}.cv .roles li{grid-template-columns:1fr auto}.cv .roles li .when{grid-column:1/-1}}.cv .hl{max-width:var(--measure);gap:.7rem;margin:0;padding:0;list-style:none;display:grid}.cv .hl li{padding-inline-start:1.25rem;position:relative}.cv .hl li:before{content:"";background:var(--ink-soft);border-radius:50%;width:.4rem;height:.4rem;position:absolute;top:calc(.5lh - .2rem);left:.1rem}.cv .hl .figure{font-variant-numeric:lining-nums}@media (forced-colors:active){.cv .hl>li:before{forced-color-adjust:none;background:canvastext}}@media print{.cv .hl{gap:2pt;max-width:none}.cv .hl li{padding-inline-start:9pt}.cv .hl li:before{background:#000;width:3pt;height:3pt;top:calc(.5lh - 1.5pt);left:1pt}}.cv .quotes{max-width:var(--measure);gap:1rem;display:grid}.cv .q{margin:0}.cv .q blockquote{color:var(--ink-soft);margin:0;font-style:italic}.cv .q blockquote p{text-indent:-.42em;margin:0}.cv .q figcaption{font-size:var(--step--1);color:var(--ink-muted);margin-top:.2rem}.cv .screen .q{border-inline-start:1.5px solid var(--accent);padding-inline-start:.9rem}.cv .screen .q .ro{color:var(--accent)}@media (width>=55rem){.cv .screen .q{margin-inline-start:calc(-.9rem - 1.5px)}}@media print{.cv .sec-letters{grid-template-columns:auto 1fr;gap:0 10pt;margin-top:8pt;display:grid}.cv .sec-letters>h2{font-size:9.2pt;line-height:inherit;border:0;margin:0;padding:0}.cv .quotes{-moz-column-break-inside:avoid;break-inside:avoid;grid-template-columns:1.3fr 1fr;gap:0 14pt;max-width:none}.cv .q blockquote{color:#1f1f1f;font-size:9pt}.cv .q blockquote p{text-indent:0}.cv .q figcaption{color:#404040;margin-top:1pt;font-size:8.2pt}.cv .q .ro{color:#1f1f1f;font-weight:600}}.cv .track{flex-wrap:wrap;gap:.2rem 1rem;display:flex}.cv .sheet button[data-for],.cv .track label{cursor:pointer;color:var(--ink-soft);width:fit-content;padding-block:.1rem;transition:color .15s;position:relative}.cv .sheet button[data-for]:hover,.cv .track label:hover{color:var(--ink)}.cv :is(.side,.sheet) .track{flex-flow:column;gap:.35rem;position:relative}.cv :is(.side,.sheet) .track:before{content:"";top:.75rem;bottom:1.6rem;background:var(--spine);width:1px;position:absolute;inset-inline-start:calc(.3rem - .5px)}.cv .sheet .track button,.cv .side .track label{-moz-column-gap:.65rem;grid-template-columns:.6rem auto;align-items:baseline;column-gap:.65rem;padding-block:.05rem;display:grid}.cv .stop{border:1.5px solid var(--accent);background:var(--accent);z-index:1;border-radius:50%;flex:none;width:.6rem;height:.6rem;position:relative}.cv :is(.side,.sheet) .track .stop{grid-row:1/span 2;align-self:start;margin-top:.42rem}.cv :is(.side,.sheet) .track .level-hint{color:var(--ink-muted);grid-column:2;font-size:.9em;font-style:italic;line-height:1.3}:is(html:has(#level-1:checked) :is([for=level-1],[data-for=level-1])~* .stop,html:has(#level-2:checked) :is([for=level-2],[data-for=level-2])~* .stop,html:has(#level-3:checked) :is([for=level-3],[data-for=level-3])~* .stop){background:var(--paper);border-color:var(--ink-muted)}:is(html:has(#level-1:checked) :is([for=level-1],[data-for=level-1]) .stop,html:has(#level-2:checked) :is([for=level-2],[data-for=level-2]) .stop,html:has(#level-3:checked) :is([for=level-3],[data-for=level-3]) .stop,html:has(#level-4:checked) :is([for=level-4],[data-for=level-4]) .stop){background:var(--ink);border-color:var(--ink);box-shadow:0 0 0 2px var(--paper),0 0 0 3.5px var(--accent)}html:has(#level-1) .cv :is(.track,.bar-level) :is(label,button):hover>.stop{border-color:var(--ink)}.cv :is(.track,.bar-level) .level-name{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;-webkit-text-decoration-color:var(--ink-muted);text-decoration-color:var(--ink-muted);text-underline-offset:.22em;text-decoration-thickness:.09em;transition:text-decoration-color .15s}.cv :is(.track,.bar-level) :is(label,button):hover .level-name{-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}:is(html:has(#level-1:checked) :is([for=level-1],[data-for=level-1]),html:has(#level-2:checked) :is([for=level-2],[data-for=level-2]),html:has(#level-3:checked) :is([for=level-3],[data-for=level-3]),html:has(#level-4:checked) :is([for=level-4],[data-for=level-4])){color:var(--ink)}:is(html:has(#level-1:checked) :is([for=level-1],[data-for=level-1]) .level-name,html:has(#level-2:checked) :is([for=level-2],[data-for=level-2]) .level-name,html:has(#level-3:checked) :is([for=level-3],[data-for=level-3]) .level-name,html:has(#level-4:checked) :is([for=level-4],[data-for=level-4]) .level-name){text-decoration-style:solid;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}:is(html:has(#level-1:focus-visible) label[for=level-1],html:has(#level-2:focus-visible) label[for=level-2],html:has(#level-3:focus-visible) label[for=level-3],html:has(#level-4:focus-visible) label[for=level-4]){outline:2px solid var(--focus);outline-offset:3px;border-radius:2px}@media (forced-colors:active){:is(html:has(#level-1:checked) :is([for=level-1],[data-for=level-1]) .level-name,html:has(#level-2:checked) :is([for=level-2],[data-for=level-2]) .level-name,html:has(#level-3:checked) :is([for=level-3],[data-for=level-3]) .level-name,html:has(#level-4:checked) :is([for=level-4],[data-for=level-4]) .level-name){font-weight:700;-webkit-text-decoration:underline!important;text-decoration:underline!important;text-decoration-thickness:2px!important}.cv :is(.side,.sheet) .track:before{forced-color-adjust:none;background:canvastext}.cv .stop{forced-color-adjust:none;background:canvastext;border-color:canvastext}:is(html:has(#level-1:checked) :is([for=level-1],[data-for=level-1])~* .stop,html:has(#level-2:checked) :is([for=level-2],[data-for=level-2])~* .stop,html:has(#level-3:checked) :is([for=level-3],[data-for=level-3])~* .stop){background:canvas;border-color:canvastext}:is(html:has(#level-1:checked) :is([for=level-1],[data-for=level-1]) .stop,html:has(#level-2:checked) :is([for=level-2],[data-for=level-2]) .stop,html:has(#level-3:checked) :is([for=level-3],[data-for=level-3]) .stop,html:has(#level-4:checked) :is([for=level-4],[data-for=level-4]) .stop){background:canvastext;border-color:canvastext;box-shadow:0 0 0 2px canvas,0 0 0 3.5px canvastext}html:has(#level-1) .cv :is(.track,.bar-level) :is(label,button):hover>.stop{border-color:highlight}}.cv .side{grid-template-columns:minmax(0,1fr);gap:1.4rem;margin-top:1.8rem;display:grid}.cv .facts{font-size:var(--step--1);gap:.55rem;margin:0;line-height:1.45;display:grid}.cv .facts .web{display:none}.cv .facts dt{color:var(--ink-muted);font-style:italic}.cv .facts dd{margin:0}.cv .facts ul{flex-wrap:wrap;gap:.4rem .9rem;margin:0;padding:0;list-style:none;display:flex}.cv .facts a{white-space:nowrap}.cv .facts .mail a{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);font-weight:600;text-decoration-thickness:.1em}.cv .controls{font-size:var(--step--1);gap:1.1rem;line-height:1.45;display:grid}.cv .c-legend{color:var(--ink-muted);font-size:.92em;font-style:italic}.cv .pdfs{gap:.25rem;display:grid}.cv .pdfs p{margin:0}.cv .pdfs ul{gap:.3rem;margin:0;padding:0;list-style:none;display:grid}.cv .pdf{text-indent:-1.2em;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);padding-inline-start:1.2em;text-decoration-thickness:.09em;display:inline-block}.cv .pdfs li:first-child .pdf{font-weight:600}.cv .pdf:before{content:"";vertical-align:-.08em;background:currentColor;width:.85em;height:.85em;margin-inline-end:.35em;display:inline-block;-webkit-mask:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%221.6%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M8%202v8M4.5%206.8%208%2010.3l3.5-3.5m-9%206.7h11%22%2F%3E%3C%2Fsvg%3E) 50%/contain no-repeat;mask:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%221.6%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M8%202v8M4.5%206.8%208%2010.3l3.5-3.5m-9%206.7h11%22%2F%3E%3C%2Fsvg%3E) 50%/contain no-repeat}.cv .level{gap:.4rem;display:grid;position:relative}.cv input.rd{opacity:0;width:1px;height:1px;margin:0;position:absolute}html.js .cv input.rd{position:fixed;top:0;left:0}.cv .updated{color:var(--ink-muted);margin:0;font-size:.92em}@media (width<66rem){.cv .side{border-top:1px solid var(--rule);max-width:var(--measure);grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));align-items:start;gap:1rem 1.2rem;padding-top:1.4rem;container:side/inline-size}.cv :is(.facts,.controls){display:contents}.cv .updated{grid-column:1/-1}.cv .facts :is(.mail,.ask,.base){display:none}}@container side (23.2rem<=width<35.4rem){.cv .level{order:1;grid-row:span 2}.cv .pdfs{order:2}.cv .updated{order:3}}@media (width>=66rem){.cv .side{border-inline-start:1px solid var(--rule);margin-top:.6rem;padding-inline-start:1.2rem}}@media print{.cv .side{border:0;max-width:none;margin:7pt 0 0;padding:0;display:block;position:static}.cv .controls{display:none!important}.cv .facts{flex-wrap:wrap;gap:0;max-width:none;margin:0;font-size:9pt;line-height:1.4;display:flex!important}.cv .facts>div{display:inline!important}.cv .facts dt{display:none}.cv .facts :is(dd,ul,li){display:inline}.cv .facts .mail{order:1}.cv .facts .web{order:2}.cv .facts .code{flex:1 1 0;order:3;min-width:0}.cv .facts:after,.cv .facts:before{content:"";flex-basis:100%;order:4;height:0}.cv .facts .base{order:5}.cv .facts .ask{order:6}.cv .facts .auth{order:7}.cv .facts:after{order:8}.cv .facts .langs{order:9}.cv .facts .code li:before,.cv .facts :is(.web,.auth,.ask) dd:before{content:" · ";color:#777}}.cv .earlier{margin:.2rem 0 0}.cv ul.earlier{padding:0;list-style:none}.cv ul.earlier li{text-indent:-1em;padding-left:1em}.cv ul.earlier li:first-letter{text-transform:uppercase}.cv ul.earlier li+li{margin-top:.15rem}@media print{.cv ul.earlier li{text-indent:0;margin:0;padding:0;display:inline}.cv ul.earlier li:not(:last-child):after{content:"; "}.cv ul.earlier li:last-child:after{content:"."}}.cv .shot{margin:.6rem 0 0}.cv .shot-open{vertical-align:top;border:1px solid var(--rule);border-radius:2px;line-height:0;display:inline-block;position:relative;overflow:hidden}.cv .shot-open:after{content:"";background:var(--paper);mix-blend-mode:color;opacity:.22;pointer-events:none;position:absolute;inset:0}.cv .shot img{width:12rem;max-width:100%;height:auto;filter:var(--photo);display:block}.cv .shot.wide img{width:20rem}.cv .shot.tall img{width:8rem}.cv .shot .dk{display:none}.cv .shot.plain img{filter:var(--photo-full)}.cv .shot.plain .shot-open:after{content:none}.cv .shot-open:hover img{opacity:.9}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .cv .shot .lt{display:none}:root:not([data-theme=light]) .cv .shot .dk{display:block}}:root[data-theme=dark] .cv .shot .lt{display:none}:root[data-theme=dark] .cv .shot .dk{display:block}.cv .shot-open .play{z-index:1;background:color-mix(in oklab,var(--ink) 50%,transparent);border-radius:50%;width:1.2rem;height:1.2rem;position:absolute;bottom:.35rem;right:.35rem}.cv .shot-open .play:before{content:"";border-style:solid;border-width:.27rem 0 .27rem .42rem;border-color:transparent transparent transparent var(--paper);position:absolute;top:.33rem;left:.45rem}.cv .shot-open:hover .play{background:color-mix(in oklab,var(--ink) 70%,transparent)}.cv .shot figcaption{font-size:var(--step--1);color:var(--ink-muted);margin-top:.25rem}.cv .shots{flex-wrap:wrap;align-items:flex-start;gap:0 1rem;display:flex}.cv .shots>.shot{max-width:12rem}.cv .spark{max-width:20rem;margin:.6rem 0 0}.cv .spark svg{width:100%;height:3rem;display:block;overflow:visible}.cv .spark polyline{fill:none;stroke:var(--ink-soft);stroke-width:1.25px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.cv .spark .spark-at{stroke:var(--ink-muted);stroke-width:.5px;stroke-dasharray:2 2;vector-effect:non-scaling-stroke}.cv .spark figcaption{font-size:var(--step--1);color:var(--ink-muted);margin-top:.25rem}.cv .tl-i h3{font-size:var(--step-0)}.cv .tl-i h3 .at{color:var(--ink-muted);font-weight:400}.cv .tl-i h3 a{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-decoration-thickness:.07em}.cv .tl-i:not(.k-experience) h3{font-weight:500}.cv .meta{font-size:var(--step--1);color:var(--ink-muted);flex-wrap:wrap;align-items:baseline;gap:0 .7rem;margin:0 0 .1rem;display:flex}.cv .meta .kind{font-style:italic}.cv .meta .when{color:var(--ink-soft);font-variant-numeric:lining-nums tabular-nums}.cv .meta .dur{color:color-mix(in oklab,var(--ink-muted) 90%,var(--paper));font-variant-numeric:lining-nums;font-size:.88em}.cv .level-added .meta .dur,.cv .sub{color:var(--ink-muted)}.cv .sub{font-size:var(--step--1);margin:.1rem 0 0;font-style:italic}.cv .pts{gap:.3rem;margin:.45rem 0 0;padding:0;list-style:none;display:grid}.cv .pts li{padding-inline-start:1rem;position:relative}.cv .pts li:before{content:"";background:var(--ink-muted);border-radius:50%;width:.32rem;height:.32rem;position:absolute;top:calc(.5lh - .16rem);left:.15rem}.cv .stack{color:var(--ink-muted);line-height:1.5}.cv .ref,.cv .stack{font-size:var(--step--1);margin:.5rem 0 0}.cv .ref{color:var(--ink-soft);font-style:italic}.cv .ref .by{color:var(--ink-muted);font-style:normal}@media (forced-colors:active){.cv .pts li:before{forced-color-adjust:none;background:canvastext}}@media print{.cv .tl-i h3{font-size:10.5pt;font-weight:600}.cv .tl-i .sub,.cv .tl-i h3{-moz-column-break-after:avoid;break-after:avoid}.cv .tl-i .sub{margin-top:0;font-size:9pt}.cv :is(.meta,.tl-i>.meta){font-size:8.8pt}.cv .meta .when{white-space:nowrap;color:#000}.cv .meta .kind,.cv .pts .links{display:none}.cv .pts{gap:1.5pt;margin-top:1.5pt}.cv .pts li{padding-inline-start:10pt}.cv .pts li:before{background:#404040;width:2.8pt;height:2.8pt;top:calc(.5lh - 1.4pt);left:1.5pt}.cv .stack{display:none}.cv .ref{-moz-column-break-before:avoid;break-before:avoid;margin-top:1pt;font-size:9pt}.cv .tl-i:not(.k-experience)>:is(h3,.sub){display:inline}.cv .tl-i:not(.k-experience)>h3:has(+.sub):after{content:". ";font-weight:400}}.cv .tl{--node-x:.35rem;--indent:1.9rem;margin:0;padding:0;list-style:none;position:relative}.cv .tl:before{content:"";top:.55rem;bottom:.4rem;background:var(--spine);z-index:1;width:1px;position:absolute;inset-inline-start:var(--node-x)}.cv .tl-i{margin-bottom:1.7rem;padding-inline-start:var(--indent);scroll-margin-top:1rem;position:relative}.cv .tl-i:last-child{margin-bottom:0}.cv .tl-i:before{content:"";inset-inline-start:calc(var(--node-x) - var(--node-size)/2 + .5px);top:calc(.435lh - var(--node-size)/2 + .05rem);width:var(--node-size);height:var(--node-size);background:var(--ink-muted);border:1.5px solid var(--ink-muted);z-index:1;border-radius:50%;position:absolute}.cv .tl-i.k-experience:before{background:var(--ink-soft);border-color:var(--ink-soft);border-radius:1.5px}.cv .tl-dated{--gutter-w:9.5rem;max-width:var(--measure);box-sizing:content-box}@container sec (width>=48rem){.cv .tl-dated:not(.zig){padding-inline-start:var(--gutter-w)}.cv .tl-dated:not(.zig):before{inset-inline-start:calc(var(--gutter-w) + var(--node-x))}.cv .tl-dated:not(.zig)>.tl-i>.meta{inset-inline-start:calc(var(--gutter-w)*-1);width:calc(var(--gutter-w) - 1rem);text-align:end;justify-items:end;gap:0;padding-top:.08lh;line-height:1.5;display:grid;position:absolute;top:0}.cv .tl-dated:not(.zig)>.tl-i>.meta .when{white-space:nowrap}}@media (width>=80rem){.cv .tl-dated:not(.zig){margin-inline-start:calc(var(--gutter-w)*-1)}}.cv .tl.zig{--zig-gap:1.6rem;max-width:none;margin:0;padding:0}.cv .tl.zig:before{inset-inline-start:calc(50% - .5px);top:0;bottom:0}.cv .tl.zig>.tl-i{width:calc(50% - var(--zig-gap));margin:0;padding:0;position:absolute;top:0}.cv .tl.zig>.tl-i.side-l{left:0}.cv .tl.zig>.tl-i.side-r{left:calc(50% + var(--zig-gap))}.cv .tl.zig>.tl-i:before{top:calc(.68rem - var(--node-size)/2)}.cv .tl.zig>.tl-i.side-l:before{inset-inline-start:calc(100% + var(--zig-gap) - var(--node-size)/2)}.cv .tl.zig>.tl-i.side-r:before{inset-inline-start:calc(var(--zig-gap)*-1 - var(--node-size)/2)}.cv .tl.zig>.tl-i:after{content:"";width:calc(var(--zig-gap) - .55rem);background:var(--spine);height:1px;position:absolute;top:.68rem}.cv .tl.zig>.tl-i.side-l:after{left:calc(100% + .25rem)}.cv .tl.zig>.tl-i.side-r:after{right:calc(100% + .25rem)}.cv .tl.zig .meta{gap:0 .6rem}.cv .tl-i[tabindex="-1"]:focus{outline:none}.cv .tl-i[data-kb]:focus{outline:1.5px solid var(--ink-muted);outline-offset:.45rem}.cv .arrived{animation:1.6s ease-out both cv-arrive}@keyframes cv-arrive{0%,35%{background-color:var(--wash);box-shadow:0 0 0 .45rem var(--wash)}to{background-color:var(--mark-rest,transparent);box-shadow:0 0 0 var(--mark-spread,.45rem) var(--mark-rest,transparent)}}.cv .arrived-still,html:not(.js) .cv .tl-i:target{background-color:var(--wash);box-shadow:0 0 0 .45rem var(--wash)}.cv :is(.arrived,.arrived-still),html:not(.js) .cv .tl-i:target{border-radius:2px}@media (forced-colors:active){.cv .tl-i:before{border-color:canvastext}.cv .tl.zig>.tl-i:after,.cv .tl:before{forced-color-adjust:none;background:canvastext}.cv .tl-i:is(.arrived,.arrived-still,[tabindex="-1"]:focus),html:not(.js) .cv .tl-i:target{outline-offset:.45rem;outline:2px solid highlight!important}}@media print{.cv .tl-i:after,.cv .tl-i:before,.cv .tl:before{display:none}.cv .tl{--date-w:54pt}.cv .tl-i{-moz-column-break-inside:avoid;break-inside:avoid;display:flow-root;float:none!important;width:auto!important;padding:0 0 0 calc(var(--date-w) + 8pt)!important;margin:0 0 4pt!important;position:relative!important;inset:auto!important}.cv .tl-i:last-child{margin-bottom:0!important}.cv .tl-i>.meta{float:inline-start;width:var(--date-w);text-align:start;font-variant-numeric:lining-nums tabular-nums;align-content:start;justify-items:start;gap:0;margin:0;margin-inline-start:calc((var(--date-w) + 8pt)*-1);padding-top:1.8pt;line-height:1.3;display:grid;position:static}.cv .tl-i>.meta .when{white-space:normal}.cv .tl-i>.meta time{white-space:nowrap}}.cv .sec-timeline{position:relative}.cv .node-key{width:var(--node-size);height:var(--node-size);vertical-align:.05em;background:var(--ink-muted);border-radius:50%;margin-inline:.15em .35em;display:inline-block}.cv .node-key.k-role{background:var(--ink-soft);border-radius:1.5px}@media (forced-colors:active){.cv .node-key{forced-color-adjust:none;background:canvastext}}.cv .skills{max-width:var(--measure);gap:.55rem;margin:0;display:grid}.cv .skills>div{grid-template-columns:11rem 1fr;gap:0 1rem;display:grid}.cv .skills dt{color:var(--ink-muted);font-style:italic}.cv .skills dd{margin:0}@container sec (width<34rem){.cv .skills>div{grid-template-columns:1fr}}@container sec (width>=50rem){.cv .screen .skills{-moz-column-gap:1.5rem;grid-template-columns:13rem minmax(0,85ch);column-gap:1.5rem;max-width:none}.cv .screen .skills>div{grid-column:1/-1;grid-template-columns:subgrid;row-gap:0}}@media print{.cv .skills{gap:2pt;max-width:none}.cv .skills>div{display:block}.cv .skills :is(dt,dd){display:inline}.cv .skills dt:after{content:": "}}.cv .more{font-size:var(--step--1);color:var(--ink-muted);margin:.2rem 0 0;font-style:italic;display:none}@media print{.cv .print-body .only:not(.only-level-2),.cv .print-body :is(.r3,.r4){display:none!important}.cv .print-body .more.only-level-2{margin-top:1pt;font-size:9pt;display:block}.cv .print-body :is(.sec-talks,.sec-education) .more{display:none!important}}.cv .lightbox{border:1px solid var(--rule);background:var(--paper);max-width:min(94vw,70rem);max-height:94vh;color:var(--ink);padding:0}html:has(.cv .lightbox[open]){overflow:hidden}.cv .lightbox::backdrop{background:#000000b8}.cv .lightbox :is(img,video){width:auto;max-width:100%;height:auto;max-height:calc(94vh - 4rem);filter:var(--photo-full);margin:0 auto;display:block}.cv .lightbox .lb-cap{font-size:var(--step--1);color:var(--ink-muted);margin:0;padding:.5rem .8rem}.cv .lightbox [hidden]{display:none}.cv .lightbox form{z-index:1;gap:.4rem;display:flex;position:absolute;top:.4rem;right:.4rem}.cv .lb-close{font:inherit;font-size:var(--step--1);border:1px solid var(--rule);background:var(--paper);color:var(--ink);cursor:pointer;border-radius:2px;padding:.3rem .6rem}.cv .bar{z-index:4;height:var(--bar-h);background:var(--paper);border-bottom:1px solid var(--rule);font-size:var(--step--1);opacity:0;visibility:hidden;line-height:1.3;transition:opacity .12s ease-out,translate .12s ease-out,visibility 0s .12s;position:fixed;top:0;left:0;right:0;translate:0 -.35rem}:root[data-cv-switch] .cv .bar{view-transition-name:cv-bar}:root[data-cv-switch] .cv .sheet{view-transition-name:cv-sheet}:root[data-cv-switch]::view-transition-old(cv-bar){display:none}:root[data-cv-switch]::view-transition-new(cv-bar){animation:none}:root[data-cv-switch]::view-transition-old(cv-sheet):only-child{clip-path:none;animation:.22s cubic-bezier(.4,0,1,1) both cv-sheet-drop}@keyframes cv-sheet-drop{to{translate:0 100%}}.cv .bar.shown{opacity:1;visibility:visible;transition-delay:0s;translate:none}.cv .bar[hidden]{display:none}.cv .bar-in{height:100%;width:min(100%,var(--page));padding-inline:var(--gutter);justify-content:space-between;align-items:center;gap:1rem 1.5rem;margin-inline:auto;display:flex}.cv .bar-name{letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;min-width:0;font-weight:600;text-decoration:none;overflow:hidden}.cv .bar-name:hover{text-decoration:underline}.cv .bar-level{--dot:.55rem;--pad:.45rem;white-space:nowrap;align-items:center;gap:0 .9rem;margin-inline-start:auto;display:flex}.cv .bar-level>.c-legend{padding-bottom:var(--pad);align-self:flex-end;font-size:.78rem;line-height:1.15}.cv .bar-track{grid-auto-columns:1fr;grid-auto-flow:column;font-size:.78rem;line-height:1.15;display:grid;position:relative}.cv .bar-track:after,.cv .bar-track:before{content:"";top:calc(var(--pad) + var(--dot)/2 - .5px);background:var(--spine);height:1px;position:absolute;left:12.5%;right:12.5%}.cv .bar-track:after{background:var(--accent);width:0;height:1.5px;right:auto;top:calc(var(--pad) + var(--dot)/2 - .75px)}html:has(#level-2:checked) .cv .bar-track:after{width:25%}html:has(#level-3:checked) .cv .bar-track:after{width:50%}html:has(#level-4:checked) .cv .bar-track:after{width:75%}.cv .bar-level label{padding:var(--pad) .45rem;cursor:pointer;color:var(--ink-muted);justify-items:center;row-gap:.2rem;display:grid}.cv .bar-level .stop{width:var(--dot);height:var(--dot)}.cv .bar-level .level-name{text-decoration:none}.cv .bar-level label:hover{color:var(--ink)}.cv .bar-sum,.cv .cur,.cv .sheet{display:none}.cv .sheet{--sheet-out:.22s cubic-bezier(.4, 0, 1, 1);z-index:10;overscroll-behavior:contain;width:min(100%,30rem);max-height:85dvh;padding:0 var(--gutter) calc(.9rem + env(safe-area-inset-bottom));border:1px solid var(--rule);background:var(--paper);box-shadow:0 -.4rem 1.6rem color-mix(in oklab,var(--ink) 12%,transparent);color:var(--ink);font-size:var(--step-0);transition:translate var(--sheet-out),display var(--sheet-out) allow-discrete,overlay var(--sheet-out) allow-discrete;border-bottom:0;border-radius:1rem 1rem 0 0;align-content:start;gap:.25rem;margin:0 auto;position:fixed;inset:auto 0 0;overflow:auto;translate:0 100%}.cv .sheet:popover-open{transition-duration:.44s;transition-timing-function:cubic-bezier(.32,.72,0,1);display:grid;translate:none}@starting-style{.cv .sheet:popover-open{translate:0 100%}}.cv .sheet::backdrop{transition:background-color .22s cubic-bezier(.4,0,1,1),display allow-discrete .22s,overlay allow-discrete .22s;background:0 0}.cv .sheet:popover-open::backdrop{background:color-mix(in oklab,var(--ink) 30%,transparent);transition-duration:.44s}@starting-style{.cv .sheet:popover-open::backdrop{background:0 0}}.cv .sheet.at-once::backdrop,.cv .sheet:is(.dragged,.at-once){transition:none}.cv .sheet-head,.cv .sheet.fits{touch-action:none}.cv .sheet-head{grid-template-columns:1fr auto;align-items:center;row-gap:.25rem;padding-top:.45rem;display:grid}.cv .sheet-head:before{content:"";background:color-mix(in oklab,var(--ink-muted) 45%,transparent);border-radius:1rem;grid-column:1/-1;justify-self:center;width:2.25rem;height:.3rem}.cv .sheet-head .c-legend{margin:0}.cv .sheet .track[role]{gap:.15rem;margin-inline:-.6rem}.cv .sheet .track[role]:before{display:none}.cv .sheet .track button[data-for]{font:inherit;text-align:start;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:.6rem;width:100%;min-height:3rem;padding:.45rem .6rem;transition:color .15s,background-color .15s}.cv .sheet .track[role] .stop{margin-top:.64em}.cv .sheet .track button[data-for]:not(:last-child):after{content:"";top:calc(.75rem + .64em);background:var(--spine);width:1px;height:calc(100% + .15rem);position:absolute;inset-inline-start:calc(.9rem - .5px)}.cv .sheet .track button[aria-checked=true]{background:color-mix(in oklab,var(--accent) 11%,transparent)}.cv .sheet .track button[data-for]:active{background:color-mix(in oklab,var(--ink) 9%,transparent)}.cv .sheet .track button[data-for]:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.cv .sheet .track .level-hint{font-size:var(--step--1);margin:0;display:block}.cv .sheet-close{font:inherit;font-size:var(--step--1);min-height:2.75rem;color:var(--ink);cursor:pointer;text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:.22em;-webkit-tap-highlight-color:transparent;background:0 0;border:0;padding:0 .2rem;text-decoration-thickness:.09em}@media (width<40rem){.cv .bar-level{display:none}.cv .bar-sum{font:inherit;color:var(--ink);cursor:pointer;white-space:nowrap;background:0 0;border:0;flex-shrink:1;align-items:baseline;gap:.4rem;margin:0;padding:.3rem 0;display:inline-flex}.cv .bar-sum,.cv .bar-sum .cur{text-overflow:ellipsis;min-width:0;overflow:hidden}.cv .bar-sum .c-legend{flex:none}.cv .bar-sum:after{content:"";border:solid var(--ink-muted);border-width:0 1.5px 1.5px 0;width:.5em;height:.5em;margin-inline-start:.1em;display:inline-block;transform:translateY(-.2em)rotate(45deg)}}@media (width>=40rem){.cv .sheet:popover-open{display:none}}@supports not selector(:popover-open){.cv .bar-level{display:flex!important}.cv .bar-in{overflow-x:auto}.cv :is(.bar-sum,.sheet){display:none!important}}@media (prefers-reduced-motion:reduce){.cv .bar{transition:none;translate:none}.cv .sheet,.cv .sheet::backdrop{transition:none}}@media (forced-colors:active){.cv .sheet .track button[data-for]{border:1px solid buttontext}.cv .sheet .track button[data-for]:not(:last-child):after{forced-color-adjust:none;background:canvastext;height:calc(100% + .15rem + 2px)}.cv .bar-track:after,.cv .bar-track:before{forced-color-adjust:none;background:canvastext}}:root{--wash:#d3cc94;--tint:#d7dbc0;--photo:saturate(.78);--photo-full:none;--spine:color-mix(in oklab, var(--ink-muted) 78%, var(--rule));--node-size:.62rem;--bar-h:2.75rem}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--wash:#4e4d26;--tint:#2c3b2c;--photo:saturate(.78) brightness(.9);--photo-full:brightness(.9)}}:root[data-theme=dark]{--wash:#4e4d26;--tint:#2c3b2c;--photo:saturate(.78) brightness(.9);--photo-full:brightness(.9)}html:has(.bar:not([hidden])){scroll-padding-top:calc(var(--bar-h) + .5rem)}.cv{line-height:1.6}.cv h2,.cv h3{margin:0}.cv h3{text-wrap:pretty}.cv .nowrap{white-space:nowrap}.cv :lang(zh-Hans){white-space:nowrap;font-family:Noto Serif CJK SC,Source Han Serif SC,Songti SC,STSong,SimSun,serif}@media (width<600px){.cv{line-height:1.5}}@media (width<66rem){.cv{grid-template-columns:minmax(0,1fr);display:grid}.cv .body,.cv .screen{display:contents}.cv .screen>.sec-roles{margin-top:clamp(2.2rem,6vh,3.4rem)}}@media (width>=66rem){.cv{grid-template-columns:minmax(0,var(--measure)) var(--rail-gap) var(--rail);grid-template-rows:auto auto 1fr;align-content:start;display:grid}.cv .screen>.sec,.cv>*{grid-column:1/-1}.cv .body,.cv .screen{display:contents}.cv .id{grid-area:1/1}.cv .screen>.sec-roles{grid-area:2/1;margin-top:clamp(2rem,5vh,3rem)}.cv .screen>.sec-highlights{grid-area:3/1}.cv .side{grid-area:1/3/span 3;align-self:start}}.cv .print-body{display:none}.cv .reach{margin:2.5rem 0 0}.cv .offscreen{font-size:var(--step--1);color:var(--ink-muted);margin:.6rem 0 0}.offscreen-shots .shots{grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem 1.5rem;display:grid}.offscreen-shots .shots>.shot{max-width:none;margin-top:.8rem}.offscreen-shots .shot img{-o-object-fit:cover;object-fit:cover;width:auto;max-width:100%;height:11rem}@media (width<40rem){.offscreen-shots .shots{grid-template-columns:minmax(0,1fr)}.offscreen-shots .shots>.shot{grid-template-columns:auto minmax(0,1fr);align-items:start;gap:0 .9rem;display:grid}.offscreen-shots .shot img{height:7rem}.offscreen-shots .shot figcaption{margin-top:0}}.hl .t-short{display:none}html:has(#level-1:checked) .screen .hl .t-long{display:none}html:has(#level-1:checked) .screen .only:not(.only-level-1){display:none}html:has(#level-1:checked) :is(.screen,.offscreen-shots) :is(.r2,.r3,.r4){display:none}html:has(#level-2:checked) .screen .only:not(.only-level-2){display:none}html:has(#level-2:checked) :is(.screen,.offscreen-shots) :is(.r3,.r4){display:none}html:has(#level-3:checked) .screen .only:not(.only-level-3){display:none}html:has(#level-3:checked) :is(.screen,.offscreen-shots) .r4{display:none}html:has(#level-4:checked) .screen .only:not(.only-level-4){display:none}html:has(#level-1:checked) .at-level-1{display:inline}html:has(#level-1:checked) .screen .hl .t-short{display:inline}html:has(#level-2:checked) .at-level-2{display:inline}html:has(#level-3:checked) .at-level-3{display:inline}html:has(#level-4:checked) .at-level-4{display:inline}:root[data-cv-switch]::view-transition-group(*){animation-duration:.26s;animation-timing-function:cubic-bezier(.2,0,0,1)}:root[data-cv-switch]::view-transition-new(*){-o-object-fit:none;object-fit:none;-o-object-position:top left;object-position:top left;clip-path:inset(-.2rem -100vw);block-size:100%;animation-duration:.26s}:root[data-cv-switch]::view-transition-old(*){-o-object-fit:none;object-fit:none;-o-object-position:top left;object-position:top left;clip-path:inset(-.2rem -100vw);block-size:100%;animation-duration:.26s}:root[data-cv-switch]::view-transition-old(*):only-child{animation-duration:.13s}:root[data-cv-switch]::view-transition-new(*):only-child{animation-duration:.13s;animation-delay:.13s}:root[data-cv-switch]:not([data-flip-to])::view-transition-new(root){animation-duration:.26s}:root[data-cv-switch]:not([data-flip-to])::view-transition-old(root){animation-duration:.26s}:root[data-flip-to] .cv *{view-transition-name:none!important}.level-added,.level-added-flash,.level-added-still{--mark-spread:.2rem;--mark-rest:transparent;-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:2px}:is(.quotes,.q):is(.level-added,.level-added-flash,.level-added-still){--mark-spread:.6rem}.stack .w:is(.level-added,.level-added-flash,.level-added-still){--mark-spread:0px}.level-added{--mark-rest:var(--tint);background-color:var(--tint);box-shadow:0 0 0 var(--mark-spread) var(--tint)}:is(.pts,.hl,.roles,.skills)>.level-added+.level-added{border-top-left-radius:0;border-top-right-radius:0}:is(.pts,.hl,.roles,.skills)>.level-added:has(+.level-added){border-bottom-right-radius:0;border-bottom-left-radius:0}.level-added-still{background-color:var(--wash);box-shadow:0 0 0 var(--mark-spread) var(--wash)}.level-added-flash{animation:1.8s .28s cv-added}@keyframes cv-added{0%{background-color:var(--mark-rest);box-shadow:0 0 0 var(--mark-spread) var(--mark-rest);animation-timing-function:cubic-bezier(.4,0,.2,1)}18%,40%{background-color:var(--wash);box-shadow:0 0 0 var(--mark-spread) var(--wash);animation-timing-function:ease-out}to{background-color:var(--mark-rest);box-shadow:0 0 0 var(--mark-spread) var(--mark-rest)}}@media (forced-colors:active){.level-added{outline-offset:0;outline:1px dashed canvastext}.stack .level-added{outline:none;-webkit-text-decoration:underline dashed canvastext;text-decoration:underline dashed canvastext}:is(.level-added-flash,.level-added-still){outline-offset:.2rem;outline:2px solid highlight}}@media (prefers-contrast:more){.cv a{text-decoration-color:currentColor}}@font-face{font-family:Literata Print;src:url(../cv/fonts/literata-400.ttf)format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Literata Print;src:url(../cv/fonts/literata-400-italic.ttf)format("truetype");font-weight:400;font-style:italic}@font-face{font-family:Literata Print;src:url(../cv/fonts/literata-500.ttf)format("truetype");font-weight:500;font-style:normal}@font-face{font-family:Literata Print;src:url(../cv/fonts/literata-500-italic.ttf)format("truetype");font-weight:500;font-style:italic}@font-face{font-family:Literata Print;src:url(../cv/fonts/literata-600.ttf)format("truetype");font-weight:600;font-style:normal}@media print{@page{size:A4;margin:9mm 10mm 10mm!important;@bottom-right{content:counter(page);font:7.5pt Literata Print,serif;color:#555}}.cv{--paper:#fff;--paper-sunk:#f4f4f4;--ink:#000;--ink-soft:#1f1f1f;--ink-muted:#404040;--rule:#b6b6b6;--accent:#404040;--spine:#9a9a9a;--serif:"Literata Print", georgia, serif;font-family:var(--serif);font-variation-settings:normal;font-size:9.2pt;line-height:1.26;display:block}html{scroll-padding-top:0}.shell:has(.cv){display:block!important}.shell:has(.cv)>:is(.masthead,.footer,.skip){display:none!important}.cv :is(.level-added-flash,.arrived){animation:none}.cv :is(.arrived-still,.level-added,.level-added-still,.tl-i:target){box-shadow:none!important;background:0 0!important}.cv .screen>:not(.side),.cv :is(.ghost,.lightbox,.bar,.sheet,.reach,.offscreen,.offscreen-shots){display:none!important}.cv .screen{display:contents}.cv .print-body{display:block}.cv .body{margin-top:5pt}.cv a{text-underline-offset:1.4pt;-webkit-text-decoration:underline #bdbdbd;text-decoration:underline #bdbdbd;text-decoration-thickness:.4pt}.cv .visually-hidden{display:none}}
