.cv{--cv-bg:var(--surface);--cv-fg:var(--text);--cv-soft:color-mix(in srgb, var(--text) 68%, var(--surface));--cv-line:var(--border);--cv-link:var(--accent);--cv-link-hover:var(--highlight);--cv-focus:var(--highlight);--cv-panel:color-mix(in srgb, var(--surface-hover) 55%, var(--surface));--cv-button-bg:var(--surface-hover);--cv-button-fg:var(--text);--cv-frame:var(--border);--cv-hover:var(--highlight);--cv-chip-bg:var(--surface-hover);--cv-chip-fg:var(--text);--cv-current-bg:var(--surface);--cv-current-fg:var(--highlight)}.cv[data-theme=light]{--cv-bg:var(--paper);--cv-fg:var(--ink);--cv-soft:var(--ink-soft);--cv-line:var(--ink);--cv-link:var(--link);--cv-link-hover:var(--ink);--cv-focus:var(--link);--cv-panel:var(--paper);--cv-button-bg:var(--label);--cv-button-fg:var(--ink);--cv-frame:var(--ink);--cv-hover:var(--link);--cv-chip-bg:var(--label);--cv-chip-fg:var(--ink);--cv-current-bg:var(--surface);--cv-current-fg:var(--text)}html:has(.cv){background:var(--surface);height:auto}html:has(.cv) body{background:var(--surface);height:auto}html:has(.cv) #root{background:var(--surface);height:auto}html:has(.cv[data-theme=light]){background:var(--paper)}html:has(.cv[data-theme=light]) body{background:var(--paper)}html:has(.cv[data-theme=light]) #root{background:var(--paper)}.cv{background:var(--cv-bg);max-width:48rem;color:var(--cv-fg);font-family:var(--font-body);margin:0 auto;padding:48px 24px 64px;font-size:18px;line-height:1.6}.cv :focus-visible{outline:3px solid var(--cv-focus);outline-offset:3px}.cv a{color:var(--cv-link);text-underline-offset:4px}.cv a:hover{color:var(--cv-link-hover)}.cv .facts dt,.cv .job-period,.cv .job-org,.cv .link-note,.cv .tech-stack dt,.cv .cv-subtitle{color:var(--cv-soft)}.cv .links a{color:var(--cv-link)}.cv .chips li{--frame:var(--cv-frame);background:var(--cv-chip-bg);color:var(--cv-chip-fg)}.cv:not([data-theme=light]) .tech-logo{background:var(--label);padding:2px}.cv-skip{background:var(--surface);padding:8px 12px;position:absolute;top:-64px;left:16px;color:var(--text)!important}.cv-skip:focus{top:16px}.cv-header h1{font-family:var(--font-display);margin:0;font-size:clamp(34px,7vw,48px);line-height:1.1}.cv-kicker,.cv-location{color:var(--cv-soft);font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:13px;font-weight:700}.cv-kicker{margin-bottom:8px}.cv-role{margin:4px 0 2px;font-size:20px}.cv-contact{flex-wrap:wrap;gap:8px 20px;margin:16px 0;padding:0;list-style:none;display:flex}.cv-contact a{align-items:center;gap:8px;display:inline-flex}.cv-actions{flex-wrap:wrap;gap:12px;margin-top:4px;display:flex}.cv-button,.cv-project-summary{--frame:var(--cv-frame);background:var(--cv-button-bg);color:var(--cv-button-fg)}.cv a.cv-button,.cv .cv-button{min-height:40px;color:var(--cv-button-fg);font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;border:0;align-items:center;padding:6px 14px;font-size:13px;font-weight:700;text-decoration:none;display:inline-flex}.cv a.cv-button:hover,.cv .cv-button:hover,.cv-project-summary:hover{--frame:var(--cv-hover);color:var(--cv-hover)}.cv .mode-toggle{--mode-bg:var(--cv-button-bg);--mode-frame:var(--cv-frame);--mode-fg:var(--cv-button-fg);--mode-hover:var(--cv-hover);--mode-current-bg:var(--cv-current-bg);--mode-current-fg:var(--cv-current-fg)}.cv a.mode-option{color:var(--mode-fg)}.cv a.mode-option:hover{color:var(--mode-hover)}.cv-nav{z-index:1;background:var(--cv-bg);border-bottom:var(--px) solid var(--cv-line);margin:32px -24px 0;padding:10px 24px;position:sticky;top:0}.cv-nav ul{flex-wrap:wrap;gap:4px 18px;margin:0;padding:0;list-style:none;display:flex}.cv-nav a{font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;font-size:13px;font-weight:700}.cv section[id]{margin-top:40px;scroll-margin-top:64px}.cv h2{border-bottom:2px solid var(--cv-line);font-family:var(--font-display);margin:0 0 16px;padding-bottom:6px;font-size:22px}.cv h3,.cv h4{font-family:var(--font-display);margin:0;font-size:18px;line-height:1.35}.cv h4{font-size:16px}.cv-subtitle{margin:0;font-size:20px}.cv-project{--frame:var(--cv-frame);margin:var(--px)}.cv-project+.cv-project{margin-top:20px}.cv-project[open]{box-shadow:0 calc(-1 * var(--px)) 0 0 var(--frame), 0 var(--px) 0 0 var(--frame), calc(-1 * var(--px)) 0 0 0 var(--frame), var(--px) 0 0 0 var(--frame)}.cv-project-summary{cursor:pointer;gap:12px;padding:14px 16px;list-style:none;display:grid}.cv-project[open]>.cv-project-summary{box-shadow:none;border-bottom:var(--px) solid var(--frame)}.cv-project-summary .chips li{background:var(--cv-bg)}.cv-project-summary::-webkit-details-marker{display:none}.cv-project-heading{align-items:baseline;gap:12px;display:flex}.cv-project-heading h3{font-size:20px}.cv-project-year{color:var(--cv-soft);font-family:var(--font-display);font-size:14px}.cv-chevron{align-self:center;margin-left:auto;display:grid}.cv-chevron svg{width:22px;height:22px;transition:transform var(--duration-base) var(--ease-out)}.cv-project[open] .cv-chevron svg{transform:rotate(180deg)}.cv-project-body{background:var(--cv-panel);animation:fade-in var(--duration-base) var(--ease-out);padding:28px 28px 16px;position:relative}.cv[data-theme=light] .cv-project-body{background-image:var(--paper-noise,none);background-blend-mode:multiply}.cv-project-body:before,.cv-project-body:after{content:"";pointer-events:none;background:linear-gradient(var(--cv-soft), var(--cv-soft)) top left / 12px 4px, linear-gradient(var(--cv-soft), var(--cv-soft)) top left / 4px 12px, linear-gradient(var(--cv-soft), var(--cv-soft)) top right / 12px 4px, linear-gradient(var(--cv-soft), var(--cv-soft)) top right / 4px 12px;background-repeat:no-repeat;position:absolute;inset:10px}.cv-project-body:after{transform:scaleY(-1)}.cv-project-section{margin-top:20px}.cv-education{gap:16px;margin:0;padding:0;list-style:none;display:grid}.cv #skills h3{color:var(--cv-soft);letter-spacing:.06em;text-transform:uppercase;margin:20px 0 8px;font-size:13px}.cv-year{border:2px solid var(--cv-line);margin-top:12px}.cv-year summary{cursor:pointer;font-family:var(--font-display);justify-content:space-between;gap:12px;padding:12px 16px;font-weight:700;display:flex}.cv-year[open] summary{border-bottom:2px solid var(--cv-line)}.cv-count{color:var(--cv-soft);font-weight:400}.cv-module{padding:16px}.cv-module+.cv-module{border-top:1px solid var(--cv-soft)}.cv-module .chips{margin:8px 0}.cv-footer{border-top:2px solid var(--cv-line);gap:8px;margin-top:48px;padding-top:16px;display:grid}@media (width<=600px){.cv{padding:32px 16px 48px;font-size:17px}.cv-role{font-size:17px}.cv-contact{flex-direction:column;gap:10px}.cv-contact a{overflow-wrap:anywhere}.cv-nav{margin:24px -16px 0;padding:8px 16px}.cv-nav ul{scrollbar-width:none;flex-wrap:nowrap;gap:18px;overflow-x:auto}.cv-nav li{flex:none}.cv h2{font-size:20px}.cv .facts div{flex-direction:column;gap:0}.cv .facts dt{min-width:0;font-size:14px}.cv .facts div+div{margin-top:6px}.cv .chips{gap:8px}.cv .chips li{padding:2px 8px;font-size:13px}.cv-project-summary{padding:12px}.cv-project-heading h3{font-size:18px}.cv-project-body{padding:22px 14px 8px}.cv-year summary{padding:12px}.cv-module{padding:14px 12px}.cv .links,.cv .page-list{padding-left:1.1rem}}@media print{.cv,.cv[data-theme=light]{--cv-bg:var(--paper);--cv-fg:var(--ink);--cv-soft:var(--ink-soft);--cv-line:var(--ink);--cv-link:var(--ink)}.cv-skip,.cv-nav,.cv-actions,.cv-chevron{display:none}.cv-project-summary{color:var(--ink);box-shadow:none;background:0 0}.cv-year{break-inside:avoid}}
