#cv-paper{--cv-bg:#3b4252;--cv-text:#e5e9f0;--cv-text-soft:#d8dee9;--cv-dim:#a9b6cb;--cv-muted:#a7bdd4;--cv-faint:#b0b9ca;--cv-rule:#4c566a;--cv-tile:#2e34408c;--cv-link:#88c0d0;--cv-on-fill:#2e3440;--cv-frost:#88c0d0;--cv-teal:#8fbcbb;--cv-green:#a3be8c;--cv-yellow:#ebcb8b;--cv-orange:#deab9b;--cv-purple:#ccaac5;--cv-frost-fill:#88c0d0;--cv-teal-fill:#8fbcbb;--cv-green-fill:#a3be8c;--cv-yellow-fill:#ebcb8b;--cv-orange-fill:#d08770;--cv-purple-fill:#b48ead;--c:var(--cv-frost);--c-fill:var(--cv-frost-fill);background:var(--cv-bg);color:var(--cv-text);border-radius:.75rem;max-width:56rem;margin:0 auto 3rem;overflow:hidden;box-shadow:0 4px 20px #0006,0 0 1px #5e81ac26}#cv-paper .cv-c-frost{--c:var(--cv-frost);--c-fill:var(--cv-frost-fill)}#cv-paper .cv-c-teal{--c:var(--cv-teal);--c-fill:var(--cv-teal-fill)}#cv-paper .cv-c-green{--c:var(--cv-green);--c-fill:var(--cv-green-fill)}#cv-paper .cv-c-yellow{--c:var(--cv-yellow);--c-fill:var(--cv-yellow-fill)}#cv-paper .cv-c-orange{--c:var(--cv-orange);--c-fill:var(--cv-orange-fill)}#cv-paper .cv-c-purple{--c:var(--cv-purple);--c-fill:var(--cv-purple-fill)}#cv-paper a{min-width:0;min-height:0}.cv-header{color:#eceff4;background:linear-gradient(120deg,#2e3440 0%,#3a4760 100%);padding:2.25rem 2.5rem 1.75rem;position:relative}.cv-header:after{content:"";background:linear-gradient(90deg,#5e81ac,#88c0d0,#8fbcbb,#a3be8c,#ebcb8b,#d08770,#bf616a,#b48ead);height:5px;position:absolute;bottom:0;left:0;right:0}.cv-header-main{justify-content:space-between;align-items:center;gap:1.5rem;display:flex}.cv-identity{align-items:center;gap:1.4rem;min-width:0;display:flex}.cv-photo{object-fit:cover;border:3px solid #88c0d0;border-radius:50%;flex-shrink:0;width:7rem;height:7rem;box-shadow:0 0 0 5px #88c0d02e}.cv-name{color:#eceff4;letter-spacing:-.02em;font-size:2.1rem;font-weight:800;line-height:1.15}.cv-name-title{color:#88c0d0;font-weight:400}.cv-subtitle{color:#d8dee9;margin-top:.3rem;font-size:1.125rem}.cv-affiliation{color:#8fbcbb;margin-top:.2rem;font-size:.875rem;font-weight:600}.cv-contact-block{text-align:right;color:#d8dee9;flex-shrink:0;font-size:.8125rem;line-height:1.7}.cv-contact-block a{color:#d8dee9;text-decoration:none}.cv-contact-block a:hover{color:#88c0d0;text-decoration:underline}.cv-contact-item{align-items:center;gap:.4rem;display:inline-flex}.cv-icon{color:#88c0d0;flex-shrink:0}.cv-profile-links{flex-wrap:wrap;gap:.5rem;margin-top:1.25rem;display:flex}.cv-link{color:#e5e9f0;background:#d8dee912;border:1px solid #d8dee938;border-radius:999px;align-items:center;gap:.375rem;padding:.2rem .7rem;font-size:.78rem;text-decoration:none;display:inline-flex}.cv-link:hover{color:#88c0d0;border-color:#88c0d0}.cv-stats{grid-template-columns:repeat(auto-fit,minmax(6.5rem,1fr));gap:.75rem;padding:1.5rem 2.5rem 0;display:grid}.cv-stat{background:var(--cv-tile);border-top:3px solid var(--c-fill);border-radius:.5rem;flex-direction:column-reverse;align-items:center;gap:.1rem;padding:.7rem .5rem .6rem;display:flex}.cv-stat-value{color:var(--c);font-size:1.6rem;font-weight:800;line-height:1.1}.cv-stat-label{text-transform:uppercase;letter-spacing:.08em;color:var(--cv-dim);text-align:center;font-size:.65rem;font-weight:600}.cv-body{padding:1.75rem 2.5rem 2.5rem}.cv-section{margin-bottom:2rem}.cv-section-title{text-transform:uppercase;letter-spacing:.1em;color:var(--c);border-bottom:2px solid color-mix(in srgb, var(--c-fill) 45%, transparent);flex-wrap:wrap;align-items:center;gap:.2rem .6rem;margin-bottom:.85rem;padding-bottom:.4rem;font-size:.8rem;font-weight:700;display:flex}.cv-section-icon{background:var(--c-fill);width:1.5rem;height:1.5rem;color:var(--cv-on-fill);border-radius:.375rem;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.cv-section-count{text-transform:none;letter-spacing:0;color:var(--cv-faint);text-align:right;margin-left:auto;font-size:.72rem;font-weight:400}.cv-bullet-list{color:var(--cv-text-soft);padding-left:1.25rem;font-size:.875rem;list-style:outside}.cv-bullet-list li::marker{color:var(--c-fill)}.cv-timeline{flex-direction:column;display:flex}.cv-timeline-row{color:var(--cv-text);font-size:.875rem;line-height:1.3125rem;display:flex}.cv-timeline-when{color:var(--c);white-space:nowrap;flex-shrink:0;width:6rem;padding:.22rem 0;font-family:Fira Code Variable,Fira Code,Courier New,monospace;font-size:.8125rem}.cv-timeline-what{border-left:2px solid var(--cv-rule);flex:1;padding:.22rem 0 .22rem 1.1rem;position:relative}.cv-timeline-what:before{content:"";box-sizing:border-box;background:var(--c-fill);border:2px solid var(--cv-bg);border-radius:50%;width:10px;height:10px;position:absolute;top:.56rem;left:-6px}.cv-timeline-row-past .cv-timeline-what{color:var(--cv-dim)}.cv-timeline-row-past .cv-timeline-what:before{background:var(--cv-bg);border-color:var(--c-fill)}.cv-muted{color:var(--cv-muted)}.cv-award-list{flex-direction:column;gap:.65rem;display:flex}.cv-award-row{align-items:flex-start;gap:1.25rem;font-size:.875rem;display:flex}.cv-award-year{color:var(--c);white-space:nowrap;flex-shrink:0;width:2.75rem;padding-top:.125rem;font-family:Fira Code Variable,Fira Code,Courier New,monospace;font-size:.8125rem}.cv-award-kind{text-transform:uppercase;letter-spacing:.07em;color:color-mix(in srgb, var(--c) 75%, white);background:color-mix(in srgb, var(--c-fill) 10%, transparent);border:1px solid color-mix(in srgb, var(--c-fill) 55%, transparent);vertical-align:.08em;border-radius:999px;margin-right:.15rem;padding:.05rem .5rem;font-size:.65rem;font-weight:700;display:inline-block}.cv-award-title{color:var(--cv-text);font-weight:600}.cv-award-name{color:var(--cv-dim);margin-top:.15rem;font-size:.8125rem;font-style:italic}.cv-project-list{flex-direction:column;gap:.7rem;display:flex}.cv-project-list+.cv-project-list{margin-top:.7rem}.cv-project-row{border-left:3px solid var(--c-fill);padding-left:.8rem;font-size:.875rem}.cv-project-row-past{border-left-color:color-mix(in srgb, var(--c-fill) 45%, transparent)}.cv-project-header{flex-wrap:wrap;align-items:baseline;gap:.375rem;display:flex}.cv-project-name{color:var(--cv-text);font-weight:700;text-decoration:none}a.cv-project-name:hover{color:var(--c);text-decoration:underline}.cv-project-title{color:var(--cv-text-soft)}.cv-project-meta{color:var(--cv-dim);white-space:nowrap;align-items:baseline;gap:.5rem;margin-left:auto;font-size:.75rem;display:flex}.cv-project-grant{color:color-mix(in srgb, var(--c) 75%, white);background:color-mix(in srgb, var(--c-fill) 10%, transparent);border:1px solid color-mix(in srgb, var(--c-fill) 55%, transparent);border-radius:999px;padding:0 .45rem;font-weight:700}.cv-project-role-line{color:var(--c);margin-top:.1rem;font-size:.8125rem;font-weight:600}.cv-project-desc{color:var(--cv-dim);margin-top:.15rem;font-size:.8125rem}.cv-pub-group{margin-top:1.1rem}.cv-pub-group-title{text-transform:uppercase;letter-spacing:.07em;color:var(--c);margin-bottom:.5rem;font-size:.75rem;font-weight:700}.cv-pub-list{flex-direction:column;gap:.5rem;padding-left:1.6rem;list-style:decimal;display:flex}.cv-pub-item{color:var(--cv-text-soft);font-size:.8125rem;line-height:1.5}.cv-pub-item::marker{color:var(--c);font-weight:700}.cv-pub-authors{color:var(--cv-dim)}.cv-pub-self{color:var(--cv-text);font-weight:700}.cv-pub-title{color:var(--cv-text);font-weight:600}.cv-pub-venue{color:var(--cv-teal);font-style:italic}.cv-pub-link{color:var(--cv-link);margin-left:.25rem;font-size:.75rem;text-decoration:none}.cv-pub-link:hover{text-decoration:underline}.cv-pub-omitted{color:var(--cv-faint);margin-top:.5rem;font-size:.75rem;font-style:italic}.cv-phd-list{flex-direction:column;gap:.875rem;display:flex}.cv-phd-row{align-items:flex-start;gap:1.25rem;font-size:.875rem;display:flex}.cv-phd-meta{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:.25rem;width:7.5rem;display:flex}.cv-phd-dates{color:var(--c);white-space:nowrap;font-family:Fira Code Variable,Fira Code,Courier New,monospace;font-size:.8125rem}.cv-phd-share{color:color-mix(in srgb, var(--cv-green) 75%, white);background:color-mix(in srgb, var(--cv-green-fill) 10%, transparent);border:1px solid color-mix(in srgb, var(--cv-green-fill) 55%, transparent);border-radius:999px;padding:0 .45rem;font-size:.7rem;font-weight:700}.cv-phd-content{flex:1;min-width:0}.cv-phd-student{color:var(--cv-text);font-weight:700}.cv-phd-title{color:var(--cv-text-soft);margin-top:.125rem;font-style:italic;line-height:1.4}.cv-phd-supervisors{color:var(--cv-dim);margin-top:.2rem;font-size:.8125rem}.cv-phd-funding{color:var(--cv-teal)}.cv-phd-outcome{color:var(--cv-teal);margin-top:.2rem;font-size:.8125rem;font-weight:600}.cv-patent-list{flex-direction:column;gap:.7rem;display:flex}.cv-patent-row{border-left:3px solid var(--c-fill);padding-left:.8rem;font-size:.875rem}.cv-patent-number{color:var(--c);font-family:Fira Code Variable,Fira Code,Courier New,monospace;font-size:.8125rem;font-weight:700}.cv-patent-title{color:var(--cv-text);margin-top:.2rem;font-weight:600;line-height:1.4}.cv-patent-inventors{color:var(--cv-dim);margin-top:.2rem;font-size:.8125rem}@media print{nav,footer{display:none!important}body{background:#fff!important}main{padding:0!important}#cv-paper{--cv-bg:#fff;--cv-text:#2e3440;--cv-text-soft:#434c5e;--cv-dim:#4c566a;--cv-muted:#6f7c93;--cv-faint:#7b88a1;--cv-rule:#d8dee9;--cv-tile:#f3f5f9;--cv-link:#40618e;--cv-on-fill:#fff;--cv-frost:#40618e;--cv-teal:#2f7572;--cv-green:#557a38;--cv-yellow:#94690a;--cv-orange:#b4532f;--cv-purple:#865a80;--cv-frost-fill:#5e81ac;--cv-teal-fill:#5fa3a1;--cv-green-fill:#8db06f;--cv-yellow-fill:#e0ac3f;--cv-orange-fill:#d08770;--cv-purple-fill:#b48ead;max-width:100%;box-shadow:none;-webkit-print-color-adjust:exact;print-color-adjust:exact;border-radius:0;margin:0;overflow:visible}.cv-header{border-radius:.75rem;padding:1.4rem 1.5rem 1.3rem;overflow:hidden}.cv-photo{width:6rem;height:6rem}.cv-name{font-size:1.9rem}.cv-profile-links{margin-top:.9rem}.cv-stats{gap:.6rem;padding:.9rem 0 0}.cv-stat{padding:.5rem .5rem .45rem}.cv-stat-value{font-size:1.4rem}.cv-body{padding:1.1rem 0 0}.cv-section{margin-bottom:1.35rem}.cv-section-title,.cv-pub-group-title{break-after:avoid}.cv-timeline-row,.cv-award-row,.cv-project-row,.cv-pub-item,.cv-phd-row,.cv-patent-row,.cv-stats{break-inside:avoid}@page{margin:1.4cm;size:A4}}@media (width<=640px){.cv-header{padding:1.5rem 1.25rem 1.4rem}.cv-header-main{flex-direction:column;align-items:flex-start}.cv-contact-block{text-align:left}.cv-photo{width:4.5rem;height:4.5rem}.cv-name{font-size:1.6rem}.cv-stats{grid-template-columns:repeat(3,1fr);padding:1.25rem 1.25rem 0}.cv-body{padding:1.5rem 1.25rem}.cv-section-count{text-align:left;flex-basis:100%;margin-left:2.1rem}.cv-timeline-when{width:5.25rem}}
