.cv-page{--cv-muted:color-mix(in srgb,var(--cv-text) 74%,var(--cv-bg));--cv-subtle:color-mix(in srgb,var(--cv-text) 56%,var(--cv-bg));--cv-divider:color-mix(in srgb,var(--cv-text) 14%,var(--cv-bg));--cv-primary-soft:color-mix(in srgb,var(--cv-primary) 12%,var(--cv-bg));--cv-section-gap:calc(var(--cv-gap-y) * 1.6);--cv-row-gap:var(--cv-gap-y);--cv-heading-gap:calc(var(--cv-gap-y) * 0.9);--cv-level-on:var(--cv-primary);--cv-level-off:color-mix(in srgb,var(--cv-level-on) 22%,transparent);position:relative;display:flex;flex-direction:column;width:var(--cv-page-width);height:var(--cv-page-height);overflow:hidden;background:var(--cv-bg);color:var(--cv-text);font-family:var(--cv-font-body);font-size:var(--cv-size-body);font-weight:var(--cv-weight-body);line-height:var(--cv-line-height);text-align:left;overflow-wrap:break-word;font-kerning:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-print-color-adjust:exact;print-color-adjust:exact}.cv-page *,.cv-page :after,.cv-page :before{box-sizing:border-box}.cv-page :where(h1,h2,h3,h4,h5,h6,p,ul,ol,dl,dt,dd,figure,blockquote){margin:0;padding:0}.cv-page :where(h1,h2,h3,h4,h5,h6){font-size:inherit;font-weight:inherit;line-height:inherit}.cv-page :where(ul,ol){list-style:none}.cv-page b,.cv-page strong{font-weight:var(--cv-weight-strong)}.cv-page :where(a){color:inherit;text-decoration:none}.cv-page--underlined-links :where(.cv-rich a,.cv-link,.cv-profile__label,.cv-contacts__text[href]){text-decoration:underline;text-decoration-thickness:.06em;text-underline-offset:.18em}.cv-page--hyphens{hyphens:auto}.cv-page--measure{height:auto;min-height:var(--cv-page-height)}.cv-header{position:relative;flex:none;padding:var(--cv-margin-y) var(--cv-margin-x) 0}.cv-page__columns{position:relative;flex:1 1 auto;display:grid;grid-template-columns:minmax(0,1fr);min-height:0}.cv-page--two:not(.cv-page--full) .cv-page__columns{grid-template-columns:var(--cv-sidebar-width) minmax(0,1fr)}.cv-page--two.cv-page--sidebar-right:not(.cv-page--full) .cv-page__columns{grid-template-columns:minmax(0,1fr) var(--cv-sidebar-width)}.cv-page--sidebar-right .cv-sidebar{order:2}.cv-column{position:relative;gap:var(--cv-section-gap);padding:var(--cv-margin-y) var(--cv-margin-x)}.cv-column,.cv-section{display:flex;flex-direction:column;min-width:0}.cv-section{gap:var(--cv-row-gap)}.cv-section__heading{padding-bottom:max(0px,calc(var(--cv-heading-gap) - var(--cv-row-gap)))}.cv-section:not(.cv-section--summary)>.cv-section__heading{margin-bottom:min(0px,calc(var(--cv-heading-gap) - var(--cv-row-gap)))}.cv-heading{display:flex;align-items:center;gap:.45em;font-family:var(--cv-font-heading);font-size:var(--cv-size-heading);font-weight:var(--cv-weight-heading);line-height:var(--cv-line-height-heading);color:var(--cv-primary)}.cv-heading__icon{display:inline-flex;flex:none}.cv-section--summary{gap:.45em}.cv-section--summary>.cv-section__heading{padding-bottom:max(0px,calc(var(--cv-heading-gap) - .45em))}.cv-section--summary>.cv-row--text:has(>ul,>ol)+.cv-row--text:has(>ul,>ol){margin-top:-.25em}.cv-row--items{display:grid;grid-template-columns:repeat(var(--cv-row-columns,1),minmax(0,1fr));-moz-column-gap:var(--cv-gap-x);column-gap:var(--cv-gap-x);align-items:start}.cv-inline__item+.cv-inline__item:before{content:", "}.cv-rich :where(p,ul,ol,h3,h4)+:where(p,ul,ol,h3,h4){margin-top:.35em}.cv-rich ol,.cv-rich ul{padding-left:1.15em}.cv-rich ul{list-style:disc}.cv-rich ol{list-style:decimal}.cv-rich li+li{margin-top:.15em}.cv-rich li>p{margin:0}.cv-rich li::marker{color:var(--cv-subtle)}.cv-rich :where(h3,h4){font-family:var(--cv-font-heading);font-weight:var(--cv-weight-heading)}.cv-rich mark{padding:0 .1em;color:inherit;background:color-mix(in srgb,var(--cv-primary) 22%,transparent)}.cv-rich a{color:var(--cv-link,var(--cv-primary))}.cv-entry{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title dates" "subtitle location" "tag tag" "extra extra" "link link" "body body";-moz-column-gap:var(--cv-gap-x);column-gap:var(--cv-gap-x);align-items:baseline;min-width:0}.cv-entry__title{grid-area:title;font-weight:var(--cv-weight-strong)}.cv-entry__subtitle{grid-area:subtitle}.cv-entry__dates{grid-area:dates;white-space:nowrap}.cv-entry__dates,.cv-entry__location{justify-self:end;text-align:right;color:var(--cv-muted)}.cv-entry__location{grid-area:location}.cv-entry__tag{grid-area:tag;color:var(--cv-muted)}.cv-entry__extra{grid-area:extra;display:flex;flex-wrap:wrap;-moz-column-gap:.9em;column-gap:.9em;color:var(--cv-muted)}.cv-entry__link{grid-area:link;min-width:0}.cv-entry__body{grid-area:body;min-width:0;padding-top:.3em}.cv-link{color:var(--cv-link,var(--cv-primary));overflow-wrap:anywhere}.cv-roles{display:flex;flex-direction:column;gap:.45em;padding-top:.35em}.cv-entry__description+.cv-roles{padding-top:.5em}.cv-role__head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--cv-gap-x)}.cv-role__position{font-weight:var(--cv-weight-strong)}.cv-role__dates{white-space:nowrap;color:var(--cv-muted)}.cv-skill{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name proficiency" "level level" "keywords keywords";-moz-column-gap:var(--cv-gap-x);column-gap:var(--cv-gap-x)}.cv-skill,.cv-skill__name{align-items:center;min-width:0}.cv-skill__name{grid-area:name;display:flex;gap:.4em;font-weight:var(--cv-weight-strong)}.cv-skill__proficiency{grid-area:proficiency;text-align:right;color:var(--cv-muted)}.cv-skill__level{grid-area:level;padding-top:.25em}.cv-skill__keywords{grid-area:keywords;color:var(--cv-muted)}.cv-keywords--list{padding-left:1.1em;list-style:disc}.cv-level{display:inline-flex;align-items:center;gap:.24em;line-height:1;vertical-align:middle}.cv-level__unit{display:inline-block;flex:none;width:.62em;height:.62em;background:var(--cv-level-off)}.cv-level__unit.is-on{background:var(--cv-level-on)}.cv-level--circle .cv-level__unit{border-radius:50%}.cv-level--square .cv-level__unit{border-radius:1px}.cv-level--rectangle .cv-level__unit{width:1.15em;height:.42em;border-radius:1px}.cv-level--rectangle-full{display:flex;width:100%;gap:.18em}.cv-level--rectangle-full .cv-level__unit{flex:1 1 0;width:auto;height:.42em}.cv-level--bar{display:block;width:100%;height:.38em;overflow:hidden;border-radius:99px;background:var(--cv-level-off)}.cv-level__fill{display:block;height:100%;border-radius:inherit;background:var(--cv-level-on)}.cv-level--icon .cv-level__unit{width:.85em;height:.85em;background:none;color:var(--cv-level-off)}.cv-level--icon .cv-level__unit.is-on{background:none;color:var(--cv-level-on)}.cv-profile{display:flex;align-items:center;gap:.4em;min-width:0}.cv-profile__label{min-width:0;overflow-wrap:anywhere}.cv-profile__network{display:none}.cv-contacts{display:flex;flex-wrap:wrap;gap:.25em 1em}.cv-contacts__item{display:inline-flex;align-items:center;gap:.4em;min-width:0}.cv-contacts__text{min-width:0;overflow-wrap:break-word}.cv-icon{flex:none;width:1em;height:1em}.cv-picture{display:block;flex:none;overflow:hidden;background:var(--cv-divider)}.cv-picture img{display:block;width:100%;height:100%}.cv-jobsearch__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(7.5em,1fr));gap:.45em var(--cv-gap-x)}.cv-jobsearch__label{font-size:.78em;letter-spacing:.08em;text-transform:uppercase;color:var(--cv-subtle)}.cv-jobsearch__value{font-weight:var(--cv-weight-strong)}.cv-jobsearch__note{padding-top:.45em}.cv-pages{display:flex;flex-direction:column;align-items:center}.cv-pages__measure{position:absolute;top:0;left:-100000px;visibility:hidden;pointer-events:none;contain:layout style}.cv-pages__sheet{position:relative;flex:none;overflow:hidden;background:#fff}.cv-pages__sheet>.cv-page{transform-origin:0 0}.cv-pages--interactive .cv-section__heading,.cv-pages--interactive [data-cv-item],.cv-pages--interactive [data-cv-region=header]{cursor:pointer;border-radius:2px;transition:outline-color .12s ease;outline:1.5px solid transparent;outline-offset:2px}.cv-pages--interactive .cv-section__heading:hover,.cv-pages--interactive [data-cv-item]:hover,.cv-pages--interactive [data-cv-region=header]:hover{outline-color:rgba(22,163,74,.55)}.cv-pages--interactive [data-cv-item]:has([data-cv-item]:hover){outline-color:transparent}@media print{.cv-pages__sheet{-moz-column-break-after:page;break-after:page}.cv-pages__sheet:last-child{-moz-column-break-after:auto;break-after:auto}}