@layer components{.button{isolation:isolate;gap:var(--space-xs);min-block-size:var(--size-touch);padding-inline:var(--space-lg);border-radius:var(--radius-pill);font-weight:var(--font-weight-medium);line-height:var(--line-height-snug);justify-content:center;align-items:center;text-decoration-line:none;display:inline-flex;position:relative}.button:before,.button:after{z-index:var(--z-below);border-radius:inherit;content:"";opacity:0;pointer-events:none;transition:opacity var(--duration-base) var(--ease-out);position:absolute;inset:0}.button:before{box-shadow:var(--shadow-glow)}.button:after{transition-duration:var(--duration-fast)}@media (hover:hover){.button:hover:before{opacity:1}}.button:active:after{opacity:1}.button:disabled{opacity:.5;cursor:not-allowed}.button:disabled:before,.button:disabled:after{opacity:0}.button[aria-busy=true]{opacity:.75;cursor:progress}.button--primary{border:var(--border-width) solid transparent;background-image:var(--gradient-accent), var(--gradient-border);background-origin:border-box;background-clip:padding-box,border-box}@media (forced-colors:active){.button--primary{border-color:canvastext}}.button--primary{color:var(--color-on-accent)}.button--primary:before{background-image:var(--gradient-accent-hover)}.button--primary:after{background-image:var(--gradient-accent-active)}@media (forced-colors:active){.button--primary{border-color:buttontext}}.button--secondary{border:var(--border-width) solid transparent;background-image:var(--gradient-surface), var(--gradient-border);background-origin:border-box;background-clip:padding-box,border-box}@media (forced-colors:active){.button--secondary{border-color:canvastext}}.button--secondary{color:var(--color-text)}.button--secondary:before{background-image:var(--gradient-surface-hover)}.button--secondary:after{background-image:var(--gradient-surface-active)}.cv-header{gap:var(--space-sm);inline-size:100%;max-inline-size:var(--size-cv);display:grid}.cv-header__role{gap:var(--space-2xs) var(--space-sm);font-size:var(--font-size-lg);font-weight:var(--font-weight-medium);flex-wrap:wrap;align-items:baseline;display:flex}.cv-header__location{font-weight:var(--font-weight-regular);color:var(--color-text-muted)}.cv-header__contacts{gap:var(--space-xs);flex-wrap:wrap;margin-block-start:var(--space-xs);padding:0;list-style:none;display:flex}@media print{.cv-header__contacts{gap:var(--space-2xs) var(--space-lg);margin-block-start:0}}.cv-header__link{border:var(--border-width) solid transparent;background-image:var(--gradient-surface), var(--gradient-border);background-origin:border-box;background-clip:padding-box,border-box}@media (forced-colors:active){.cv-header__link{border-color:canvastext}}.cv-header__link{min-block-size:var(--size-touch);padding-inline:var(--space-md);overflow-wrap:anywhere;color:var(--color-text);border-radius:var(--radius-pill);align-items:center;display:inline-flex}.cv-header__link:focus-visible{outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:var(--space-3xs)}.cv-header__link:active{background-image:var(--gradient-surface-active), var(--gradient-border)}@media (hover:hover){.cv-header__link:hover{background-image:var(--gradient-surface-hover), var(--gradient-border)}}@media print{.cv-header__link{min-block-size:0;color:var(--color-text);border-width:0;padding-inline:0}.cv-header__link-value--screen{display:none}}@media screen{.cv-header__link-value--print{display:none}}.cv-header__actions{gap:var(--space-sm);flex-wrap:wrap;align-items:center;margin-block-start:var(--space-xs);display:flex}@media print{.cv-header__actions{display:none}}.cv-header__pdf{margin-inline-start:var(--space-xs)}@media (width<30em){.cv-header__pdf-verb{clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}}.cv-header__pdf-icon{inline-size:var(--size-icon-sm);block-size:var(--size-icon-sm);fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.cv-header__link-text{line-height:var(--line-height-snug);text-box:trim-both cap alphabetic}.cv-header__link-label{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-inline-end:var(--space-2xs)}.cv-job{padding-block-end:var(--space-2xl);padding-inline-start:var(--space-xl);position:relative}.cv-job:last-child{padding-block-end:0}@media print{.cv-job{padding-block-end:var(--space-lg)}}.cv-job:before,.cv-job:after{print-color-adjust:exact}.cv-job:before{content:"";inset-block:var(--space-sm) 0;inline-size:var(--border-width);background-image:linear-gradient(to bottom, var(--color-accent), var(--color-accent-2) 60%, var(--color-accent-3));position:absolute;inset-inline-start:calc(var(--space-xs) / 2)}.cv-job:last-child:before{background-image:linear-gradient(to bottom, var(--color-chart-line), transparent)}.cv-job:after{content:"";inline-size:var(--size-cv-star);block-size:var(--size-cv-star);background-color:var(--color-accent);border-radius:var(--radius-pill);box-shadow:var(--shadow-glow-sm);position:absolute;inset-block-start:var(--space-xs);inset-inline-start:calc(var(--space-xs) / 2 - var(--size-cv-star) / 2)}@supports (animation-timeline:view()){@media screen and (prefers-reduced-motion:no-preference){.cv-job:before{transform-origin:top;animation-name:cv-job-draw;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:view(block var(--timeline-draw-line) calc(100% - var(--timeline-draw-line)));animation-range:cover}.cv-job:after{animation-name:cv-job-star;animation-timing-function:var(--ease-out);animation-fill-mode:both;animation-timeline:view(block var(--timeline-draw-line) calc(100% - var(--timeline-draw-line)));animation-range:cover 0% cover var(--space-xl)}}}.cv-job[data-current]:after{background-color:var(--color-highlight);box-shadow:var(--shadow-glow)}@media print,(width>=768px){.cv-job{padding-inline-start:0}.cv-job:before{inset-inline-start:calc(var(--size-cv-rail) + var(--space-lg))}.cv-job:after{inset-inline-start:calc(var(--size-cv-rail) + var(--space-lg) - var(--size-cv-star) / 2)}}.cv-job__comet{display:none}@supports (animation-timeline:view()){@media screen and (prefers-reduced-motion:no-preference){.cv-job__comet{inset-block:var(--space-sm) 0;inline-size:var(--size-cv-comet);pointer-events:none;view-timeline-name:--cv-job-comet;view-timeline-axis:block;view-timeline-inset:var(--timeline-draw-line) calc(100% - var(--timeline-draw-line));display:block;position:absolute;inset-inline-start:calc(var(--space-xs) / 2 + var(--border-width) / 2 - var(--size-cv-comet) / 2)}}@media screen and (prefers-reduced-motion:no-preference) and (width>=768px){.cv-job__comet{inset-inline-start:calc(var(--size-cv-rail) + var(--space-lg) + var(--border-width) / 2 - var(--size-cv-comet) / 2)}}@media screen and (prefers-reduced-motion:no-preference){.cv-job__comet:before,.cv-job__comet:after{content:"";background-repeat:no-repeat;block-size:100%;animation-name:cv-job-comet;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--cv-job-comet;animation-range:cover;position:absolute;inset-inline:0}.cv-job__comet:before{background-image:linear-gradient(to bottom, transparent, color-mix(in srgb, var(--color-highlight) 55%, transparent) 60%, var(--color-comet-core));background-position:top;background-size:var(--size-cv-comet-tail-width) var(--size-cv-comet-tail);clip-path:polygon(50% 0, calc(50% + var(--size-cv-comet-tail-width) / 2) var(--size-cv-comet-tail), calc(50% - var(--size-cv-comet-tail-width) / 2) var(--size-cv-comet-tail));inset-block-start:calc(-1 * var(--size-cv-comet-tail))}.cv-job__comet:after{background-image:radial-gradient(circle closest-side, var(--color-comet-core) 18%, var(--color-highlight) 36%, color-mix(in srgb, var(--color-highlight) 35%, transparent) 62%, transparent);background-position:top;background-size:var(--size-cv-comet) var(--size-cv-comet);inset-block-start:calc(-1 * var(--size-cv-comet) / 2)}.cv-job__article{animation-name:reveal-on-scroll;animation-timing-function:var(--ease-out);animation-fill-mode:both;animation-timeline:view();animation-range:entry 0% entry var(--distance-reveal-range)}}}.cv-job__article{gap:var(--space-2xs);display:grid}@media print,(width>=768px){.cv-job__article{grid-template-columns:var(--size-cv-rail) minmax(0, 1fr);column-gap:calc(var(--space-lg) * 2)}.cv-job__company,.cv-job__title,.cv-job__meta,.cv-job__details,.cv-job__stack{grid-column:2}}.cv-job__company{font-size:var(--font-size-xl);break-after:avoid}.cv-job__title{font-weight:var(--font-weight-medium)}.cv-job__period{font-size:var(--font-size-sm);font-variant-numeric:tabular-nums;color:var(--color-text-muted)}@media print,(width>=768px){.cv-job__period{text-align:end;grid-area:1/1/span 2;padding-block-start:var(--space-2xs)}}.cv-job__meta{font-size:var(--font-size-sm);color:var(--color-text-muted)}.cv-job__details,.cv-job__stack{margin-block-start:var(--space-sm)}@keyframes cv-job-draw{0%{transform:scaleY(0)}}@keyframes cv-job-comet{0%{opacity:0;transform:translateY(0)}6%,94%{opacity:1}to{opacity:0;transform:translateY(100%)}}@keyframes cv-job-star{0%{opacity:0;transform:scale(.3)}}.cv-prose{max-inline-size:var(--measure);font-family:var(--font-serif);font-size:var(--font-size-lg);line-height:var(--line-height-prose)}.cv-prose :where(p,ul,ol)+:where(p,ul,ol){margin-block-start:var(--space-sm)}.cv-prose :where(ul,ol){padding-inline-start:var(--space-lg)}.cv-prose :where(li)+:where(li){margin-block-start:var(--space-2xs)}.cv-prose :where(li)::marker{color:var(--color-chart-line)}.cv-prose :where(strong){font-weight:var(--font-weight-medium)}.cv-prose :where(a){text-decoration-line:underline}.cv-prose :where(code){font-size:var(--font-size-md)}.tag-list{gap:var(--space-2xs);flex-wrap:wrap;padding:0;list-style:none;display:flex}.tag-list__item{padding-block:var(--space-3xs);padding-inline:var(--space-xs);font-size:var(--font-size-sm);line-height:var(--line-height-body);overflow-wrap:anywhere;color:var(--color-text);background-color:var(--color-track);border-radius:var(--radius-sm);box-shadow:var(--shadow-track)}@media (forced-colors:active){.tag-list__item{border:var(--border-width) solid CanvasText}}@media print{.tag-list__item{border:var(--border-width) solid var(--color-border)}}@supports (animation-timeline:view()){@media screen and (prefers-reduced-motion:no-preference){.cv-project{animation-name:reveal-on-scroll;animation-timing-function:var(--ease-out);animation-fill-mode:both;animation-timeline:view();animation-range:entry 0% entry var(--distance-reveal-range)}}}.cv-project{break-inside:avoid;display:flex}.cv-project__article{border:var(--border-width) solid transparent;background-image:var(--gradient-surface), var(--gradient-border);background-origin:border-box;background-clip:padding-box,border-box}@media (forced-colors:active){.cv-project__article{border-color:canvastext}}.cv-project__article{gap:var(--space-xs);min-inline-size:0;padding:var(--space-lg);border-radius:var(--radius-md);box-shadow:var(--shadow-raised);flex-direction:column;flex:1;display:flex}@media print{.cv-project__article{padding:var(--space-md);border-color:var(--color-border)}}.cv-project__name{font-size:var(--font-size-lg)}.cv-project__kind{gap:var(--space-xs);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:var(--letter-spacing-caps);flex-wrap:wrap;display:flex}.cv-project__kind[data-kind=production]{color:var(--color-text)}.cv-project__kind[data-kind=production]:before{content:"★"/"";color:var(--color-highlight)}.cv-project__text{font-family:var(--font-serif);line-height:var(--line-height-prose)}.cv-project__links{gap:0 var(--space-md);flex-wrap:wrap;margin-block-start:auto;padding:0;list-style:none;display:flex}@media print{.cv-project__links{gap:var(--space-2xs);flex-direction:column}}.cv-project__link{min-block-size:var(--size-touch);font-weight:var(--font-weight-medium);align-items:center;display:inline-flex;position:relative}.cv-project__link:focus-visible{outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:var(--space-3xs)}.cv-project__link:active{color:var(--color-accent-active)}@media print{.cv-project__link{flex-direction:column;align-items:flex-start;min-block-size:0}}.cv-project__link-url{font-size:var(--font-size-sm);font-weight:var(--font-weight-regular);color:var(--color-text-muted);overflow-wrap:anywhere}@media screen{.cv-project__link-url{display:none}}.cv-project__link-context{clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}.cv-records{gap:var(--space-md);padding:0;list-style:none;display:grid}@supports (animation-timeline:view()){@media screen and (prefers-reduced-motion:no-preference){.cv-records__item{animation-name:reveal-on-scroll;animation-timing-function:var(--ease-out);animation-fill-mode:both;animation-timeline:view();animation-range:entry 0% entry var(--distance-reveal-range)}}}.cv-records__item{gap:0 var(--space-xs);break-inside:avoid;display:grid}@media print,(width>=768px){.cv-records__item{grid-template-columns:var(--size-cv-rail) minmax(0, 1fr);column-gap:calc(var(--space-lg) * 2)}.cv-records__title,.cv-records__detail{grid-column:2}}.cv-records__title{font-weight:var(--font-weight-medium)}.cv-records__detail{color:var(--color-text-muted)}.cv-records__dates{font-size:var(--font-size-sm);font-variant-numeric:tabular-nums;color:var(--color-text-muted)}@media print,(width>=768px){.cv-records__dates{text-align:end;grid-area:1/1/span 2;padding-block-start:var(--space-3xs)}}.cv-section{gap:var(--space-lg);inline-size:100%;max-inline-size:var(--size-cv);display:grid}@supports (animation-timeline:view()){@media screen and (prefers-reduced-motion:no-preference){.cv-section__title{animation-name:reveal-on-scroll;animation-timing-function:var(--ease-out);animation-fill-mode:both;animation-timeline:view();animation-range:entry 0% entry var(--distance-reveal-range)}}}.cv-section__title{gap:var(--space-md);font-size:var(--font-size-xl);break-after:avoid;align-items:center;display:flex}.cv-section__title:after{content:"";block-size:var(--border-width);print-color-adjust:exact;background-image:linear-gradient(to right, var(--color-chart-line), transparent);flex:1}.cv-section__list{margin:0;padding:0;list-style:none}.cv-section__list--cards{gap:var(--space-md);grid-template-columns:minmax(0,1fr);display:grid}@media print,(width>=768px){.cv-section__list--cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,16rem),1fr))}}.cv-skills{gap:var(--space-lg);display:grid}@supports (animation-timeline:view()){@media screen and (prefers-reduced-motion:no-preference){.cv-skills__group{animation-name:reveal-on-scroll;animation-timing-function:var(--ease-out);animation-fill-mode:both;animation-timeline:view();animation-range:entry 0% entry var(--distance-reveal-range)}}}.cv-skills__group{gap:var(--space-xs);display:grid}@media print,(width>=768px){.cv-skills__group{grid-template-columns:var(--size-cv-rail) minmax(0, 1fr);column-gap:calc(var(--space-lg) * 2)}}.cv-skills__name{font-weight:var(--font-weight-medium)}@media print,(width>=768px){.cv-skills__name{font-size:var(--font-size-sm);color:var(--color-text-muted);text-align:end;padding-block-start:var(--space-3xs)}}.cv-view-switch{isolation:isolate;border-radius:var(--radius-pill);background-color:var(--color-track);min-inline-size:0;box-shadow:var(--shadow-track);border:0;grid-template-columns:1fr 1fr;margin:0;padding:0;display:inline-grid;position:relative}.cv-view-switch[hidden]{display:none}@media (forced-colors:active){.cv-view-switch{outline:var(--border-width) solid CanvasText;outline-offset:calc(-1 * var(--border-width))}}@media print{.cv-view-switch{display:none}}.cv-view-switch__legend{clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}.cv-view-switch__indicator{inset-block:var(--space-3xs);z-index:var(--z-below);inline-size:calc(50% - var(--space-3xs));border-radius:var(--radius-pill);background-image:var(--gradient-accent);box-shadow:var(--shadow-glow-sm);transition:transform var(--duration-slow) var(--ease-in-out);position:absolute;inset-inline-start:var(--space-3xs)}@media (prefers-reduced-motion:reduce){.cv-view-switch__indicator{transition:none}}@media (forced-colors:active){.cv-view-switch__indicator{forced-color-adjust:none;background-color:highlight;background-image:none}}.cv-view-switch[data-view=full] .cv-view-switch__indicator{transform:translate(100%)}.cv-view-switch__option{isolation:isolate;min-inline-size:var(--size-touch);min-block-size:var(--size-touch);padding-inline:var(--space-lg);border:var(--border-width) solid transparent;border-radius:var(--radius-pill);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);line-height:var(--line-height-snug);color:var(--color-text);background-color:#0000;position:relative}.cv-view-switch__option:before,.cv-view-switch__option:after{inset:var(--space-3xs);z-index:var(--z-below);border-radius:inherit;content:"";opacity:0;transition:opacity var(--duration-base) var(--ease-out);position:absolute}.cv-view-switch__option:before{background-color:var(--color-highlight-soft)}.cv-view-switch__option:after{background-color:var(--color-highlight-strong);transition-duration:var(--duration-fast)}.cv-view-switch__option[aria-pressed=true]{color:var(--color-on-accent)}@media (forced-colors:active){.cv-view-switch__option[aria-pressed=true]{color:highlighttext;forced-color-adjust:none}}.cv-view-switch__option[aria-pressed=false]:active:after{opacity:1}.cv-view-switch__option:focus-visible{outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:var(--space-3xs)}@media (hover:hover){.cv-view-switch__option[aria-pressed=false]:hover:before{opacity:1}}}
