:root{--cv-bg: #d9dde3;--cv-paper: #ffffff;--cv-ink: #171923;--cv-muted: #5f6675;--cv-subtle: #9aa2b1;--cv-border: #dde2ea;--cv-accent: #214171;--cv-accent-soft: #edf3ff;--cv-positive: #18894f}.cv-root{min-height:100vh;background:radial-gradient(circle at top,#e4e8ee 0%,var(--cv-bg) 60%);color:var(--cv-ink)}.cv-toolbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1.25rem;border-bottom:1px solid rgba(0,0,0,.08);background:color-mix(in srgb,var(--cv-bg) 92%,white)}.cv-toolbar-title{margin:0;font-size:.85rem;font-weight:700;color:#4a4f5e}.cv-print-btn{border:1px solid transparent;border-radius:.4rem;background:var(--cv-accent);color:#fff;font-size:.8rem;font-weight:700;padding:.45rem .85rem;cursor:pointer}.cv-print-btn:hover{background:#16325b}.cv-print-modal-backdrop{position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:1rem;background:#1719236b}.cv-print-modal{position:relative;width:min(100%,34rem);border-radius:.5rem;border:1px solid rgba(23,25,35,.12);background:#fff;box-shadow:0 18px 52px #00000038;padding:1.25rem}.cv-print-modal-body{display:grid;grid-template-columns:9rem 1fr;gap:1.1rem;align-items:center;padding-right:1.75rem}.cv-print-paper-cue{display:grid;gap:.45rem;justify-items:center}.cv-print-paper-sheet{display:grid;width:5.4rem;height:7.65rem;place-items:center;border:3px solid var(--cv-accent);border-radius:.15rem;background:linear-gradient(180deg,#fff,#f4f7fc);color:var(--cv-accent);font-size:1.9rem;font-weight:900;box-shadow:0 10px 24px #2141712e}.cv-print-paper-label{color:var(--cv-muted);font-size:.72rem;font-weight:800;text-transform:uppercase}.cv-print-modal-copy{min-width:0}.cv-print-modal-kicker{margin:0 0 .25rem;color:var(--cv-positive);font-size:.72rem;font-weight:900;text-transform:uppercase}.cv-print-modal h2{margin:0 0 .45rem;font-size:1.55rem;line-height:1.25}.cv-print-modal p{margin:0;color:var(--cv-muted);font-size:1rem;line-height:1.5}.cv-print-modal .cv-print-modal-kicker{color:var(--cv-positive);font-size:.72rem}.cv-print-modal-close{position:absolute;top:.7rem;right:.7rem;display:grid;width:2rem;height:2rem;place-items:center;border:1px solid transparent;border-radius:.35rem;background:transparent;color:var(--cv-muted);font-size:1.4rem;line-height:1;cursor:pointer}.cv-print-modal-close:hover{background:var(--cv-accent-soft);color:var(--cv-accent)}.cv-print-modal-actions{display:flex;flex-wrap:wrap;gap:.65rem;margin-top:1rem}.cv-print-modal-primary,.cv-print-modal-download{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:2.4rem;border-radius:.4rem;font-size:.85rem;font-weight:700;cursor:pointer}.cv-print-modal-primary{border:1px solid transparent;background:var(--cv-accent);color:#fff;padding:.55rem .9rem}.cv-print-modal-primary img{width:1rem;height:1rem;flex:0 0 auto;filter:invert(1)}.cv-print-modal-primary:hover{background:#16325b}.cv-print-modal-download{border:1px solid var(--cv-border);background:#fff;color:var(--cv-ink);padding:.55rem .8rem;text-decoration:none}.cv-print-modal-download:hover{border-color:#b7c0cf;background:#f7f9fc}.cv-print-modal-download img{width:1rem;height:1rem;flex:0 0 auto}.cv-document-shell{width:fit-content;margin:0 auto;display:flex;justify-content:center;gap:1.5rem;padding:1.2rem 1rem 2rem}.cv-page-frame{width:210mm;height:297mm;flex:0 0 auto}.cv-page{width:210mm;height:297mm;background:var(--cv-paper);border:1px solid rgba(0,0,0,.08);box-shadow:0 14px 36px #00000029;display:flex;flex-direction:column;overflow:hidden}.cv-page-content{flex:1;padding:10mm 10mm 6mm;display:flex;flex-direction:column;gap:4mm;min-height:0}.cv-header{display:grid;grid-template-columns:1fr auto;gap:4mm;align-items:start;border-bottom:1px solid var(--cv-border);padding-bottom:2.4mm}.cv-header-left{display:grid;gap:2.6mm;min-width:0}.cv-prominent-logos{display:flex;flex-wrap:wrap;align-items:flex-start;gap:1.8mm 3.2mm;min-height:7.2mm}.cv-prominent-logo-item{max-width:46mm;flex:0 1 auto;display:grid;place-items:center}.cv-identity-row{display:grid;grid-template-columns:24mm 1fr;align-items:center;gap:3mm;min-width:0}.cv-prominent-logo,.cv-prominent-logo-fallback{grid-area:1 / 1}.cv-prominent-logo{width:auto!important;height:9.6mm!important;max-width:46mm;object-fit:contain;object-position:center;display:block}.cv-prominent-logo-fallback{font-size:2.8mm;font-weight:700;color:var(--cv-subtle);letter-spacing:.08em}.cv-prominent-logo-item.has-metric{position:relative;padding-bottom:3.4mm}.cv-prominent-logo-metric{position:absolute;bottom:0;left:50%;transform:translate(-50%);font-size:2.6mm;line-height:1;color:var(--cv-subtle);white-space:nowrap}.cv-header-right{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;min-width:0}.cv-header-name-block{text-align:left;padding-top:0;min-width:0}.cv-header h1{margin:0;font-size:8.6mm;letter-spacing:-.02em;line-height:1}.cv-subtitle{margin:.8mm 0 0;font-size:3.3mm;color:var(--cv-muted)}.cv-name-contact-list{display:flex;flex-wrap:wrap;gap:1.2mm 3.6mm;list-style:none;margin:1.3mm 0 0;padding:0}.cv-name-contact-list li{display:inline-flex;align-items:center;gap:1mm;font-size:2.9mm;color:var(--cv-muted)}.cv-name-contact-list li .cv-inline-icon{width:3.2mm;height:3.2mm}.cv-flags{display:flex;flex-wrap:nowrap;justify-content:flex-end;gap:1.8mm;margin-top:0}.cv-header-meta{display:grid;gap:1mm;margin-top:1.4mm}.cv-header-meta-line{margin:0;display:inline-flex;align-items:center;justify-content:flex-end;gap:1mm;font-size:2.9mm;color:var(--cv-muted);white-space:nowrap}.cv-header-meta-line .cv-inline-icon{width:3.2mm;height:3.2mm}.cv-header-meta-line.is-positive{color:var(--cv-positive);font-weight:600}.cv-flag{width:12.5mm;height:8.4mm;border-radius:.5mm;border:1px solid rgba(0,0,0,.16);display:block}.cv-photo-frame{width:24mm;height:24mm;border:1px solid var(--cv-border);border-radius:1.2mm;overflow:hidden;background:#eef1f6}.cv-photo-image{width:100%;height:100%;object-fit:cover;object-position:center;display:block}.cv-photo-fallback{width:100%;height:100%;display:grid;place-items:center;color:#5a6478;font-weight:700;font-size:7mm;letter-spacing:.02em;background:linear-gradient(155deg,#f4f6fa,#e4e8f0)}.cv-flag-fallback{min-width:12.5mm;min-height:8.4mm;border:1px solid var(--cv-border);border-radius:.5mm;font-size:2.8mm;display:grid;place-items:center}.cv-contact-list{display:flex;flex-wrap:nowrap;justify-content:flex-start;gap:1.2mm 4.1mm;list-style:none;margin:0;padding:.2mm 0 0}.cv-contact-list li{display:inline-flex;align-items:center;gap:1.2mm;font-size:2.85mm;line-height:1.2;color:var(--cv-muted);white-space:nowrap}.cv-contact-list li span{overflow-wrap:anywhere}.cv-contact-list li .cv-inline-icon{width:3.2mm;height:3.2mm}.cv-inline-icon{display:inline-block;flex:0 0 auto;background-color:currentColor;-webkit-mask-image:var(--icon-url);mask-image:var(--icon-url);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.cv-contact-list .is-positive{color:var(--cv-positive);font-weight:600}.cv-focus-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;background:var(--cv-accent-soft);border:1px solid #bfd1f6;border-radius:1.2mm;padding:1.6mm 2mm}.cv-focus-bar p{margin:0;font-size:3.1mm;font-weight:700;color:#17407b}.cv-focus-bar small{font-size:2.75mm;color:#47618e}.cv-focus-bar button{border:none;background:transparent;color:#17407b;font-size:2.7mm;font-weight:700;cursor:pointer}.cv-section h2{margin:0 0 1.8mm;font-size:2.75mm;letter-spacing:.18em;text-transform:uppercase;color:var(--cv-subtle);border-bottom:1px solid var(--cv-border);padding-bottom:1.2mm}.cv-section h3{margin:0;font-size:3.8mm;line-height:1.2}.cv-section p{margin:0}.cv-timeline-list{display:grid;gap:2mm}.cv-timeline-item{border-left:1px solid var(--cv-border);padding-left:2.6mm;transition:opacity .12s ease}.cv-company{width:100%;border:none;background:transparent;padding:0;margin:0;display:grid;grid-template-columns:auto 1fr auto;gap:2mm;align-items:flex-start;text-align:left;cursor:pointer;color:inherit}.cv-company-media{width:6.2mm;height:6.2mm;display:grid;place-items:center}.cv-company-logo,.cv-company-badge{grid-area:1 / 1;width:6.2mm;height:6.2mm;border-radius:1.2mm;margin-top:.25mm;border:1px solid var(--cv-border)}.cv-company-logo{object-fit:contain;object-position:center;box-sizing:border-box;padding:.45mm;background:transparent;visibility:hidden}.cv-company-logo.is-visible{visibility:visible}.cv-company-badge{display:grid;place-items:center;background:#ecf1fa;color:#2b436d;font-size:2.3mm;font-weight:700;z-index:1}.cv-company-badge.is-hidden{display:none}.cv-company p{font-size:3.1mm;color:var(--cv-muted);line-height:1.2}.cv-company time{font-size:2.9mm;color:var(--cv-subtle);white-space:nowrap;margin-top:.5mm}.cv-skill-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.8mm 3mm}.cv-skill-grid h3{margin:0 0 1.1mm;font-size:2.45mm;color:var(--cv-subtle);letter-spacing:.1em;text-transform:uppercase}.cv-chip-row{display:flex;flex-wrap:wrap;gap:1mm}.cv-chip-row--skills{max-height:12mm;overflow:hidden}.cv-chip-row--project{max-height:6mm;overflow:hidden}.cv-chip-row--hobbies{gap:1.2mm}.cv-skill-tag,.cv-pill{border:1px solid transparent;border-radius:1mm;background:#f1f4f9;color:#4f5665;font-size:2.65mm;line-height:1;padding:.85mm 1.4mm}.cv-skill-tag{cursor:pointer;display:inline-flex;align-items:center;gap:1mm}.cv-skill-icon{width:3.2mm;height:3.2mm;border-radius:.55mm;object-fit:contain;object-position:center;box-sizing:border-box;padding:.22mm;background:transparent;flex:0 0 auto}.cv-skill-tag small{color:var(--cv-subtle);font-size:2.3mm}.cv-skill-tag.is-active{background:var(--cv-accent);color:#fff;border-color:var(--cv-accent)}.cv-skill-tag.is-active small{color:#ffffffd1}.cv-pill-button{cursor:pointer}.cv-pill-button.is-active{background:var(--cv-accent);color:#fff;border-color:var(--cv-accent)}.cv-skill-tag.is-dimmed,.is-dimmed{opacity:.23}.is-hidden-by-focus{display:none}.cv-two-col{display:grid;grid-template-columns:1fr 1fr;gap:4mm}.cv-honours-grid{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.8mm}.cv-honour-plaque{display:grid;grid-template-columns:auto 1fr;align-items:stretch;column-gap:1.2mm;border:1px solid #d1d6e2;border-radius:1mm;padding:1mm 1.2mm;box-shadow:inset 0 .2mm .38mm #ffffff6b,0 .28mm .9mm #11192814}.cv-honour-plaque--gold{background:linear-gradient(135deg,#fff8df,#f4d98a 58%,#e7be5a);border-color:#d4a848}.cv-honour-plaque--silver{background:linear-gradient(135deg,#f8fafd,#dde3ec 58%,#bec8d6);border-color:#aab3c3}.cv-honour-plaque--bronze{background:linear-gradient(135deg,#f8f1e7,#e7c8ab 58%,#ce9f74);border-color:#b7885e}.cv-honour-place{margin:0;min-width:7.6mm;padding:.5mm .75mm;border-radius:.8mm;display:grid;place-items:center;align-self:stretch;font-size:3.15mm;letter-spacing:.01em;font-weight:800;color:#161b24c7;background:#ffffff6b;border:1px solid rgba(255,255,255,.5)}.cv-honour-copy{min-width:0;display:grid;gap:.35mm;align-content:center}.cv-honour-name{margin:0;font-size:2.8mm;line-height:1.14;font-weight:650;color:#222732}.cv-honour-plaque small{margin:0;font-size:2.25mm;color:#1b1f28b3;line-height:1.1}.cv-list-clean{margin:0;padding:0;list-style:none;display:grid;gap:1.5mm}.cv-list-clean li p,.cv-list-clean article p{font-size:3.35mm;line-height:1.3}.cv-list-clean small,.cv-lined small{font-size:2.8mm;color:var(--cv-subtle)}.cv-lined{border-bottom:1px solid var(--cv-border);padding-bottom:1.5mm}.cv-lined header{display:flex;justify-content:space-between;gap:1rem;align-items:baseline}.cv-lined header time{font-size:2.8mm;color:var(--cv-subtle);white-space:nowrap}.cv-education-focus h3{margin:0;color:inherit}.cv-lined h3 small{font-size:3.2mm;color:var(--cv-muted);font-weight:500}.cv-lined>p{font-size:3.15mm;line-height:1.35;color:var(--cv-muted)}.cv-project-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.8mm}.cv-project-card{border:1px solid var(--cv-border);border-radius:1.2mm;padding:1.8mm;transition:border-color .12s ease}.cv-project-card:hover{border-color:#9cb7e5}.cv-plain-button{border:none;background:transparent;width:100%;text-align:left;padding:0;margin:0;color:inherit;cursor:pointer}.cv-project-card header{display:flex;justify-content:space-between;gap:1rem;align-items:baseline}.cv-project-card h3{font-size:3.7mm}.cv-project-card time{font-size:2.75mm;color:var(--cv-subtle);white-space:nowrap}.cv-project-card p{margin-top:1mm;font-size:3.05mm;line-height:1.3;color:var(--cv-muted)}.cv-page-footer{display:flex;justify-content:space-between;gap:1rem;border-top:1px solid var(--cv-border);color:#bcc3cf;font-size:2.7mm;letter-spacing:.18em;text-transform:uppercase;padding:3.2mm 10mm}@media(max-width:1500px){.cv-document-shell{flex-direction:column;align-items:center}}@media screen and (max-width:860px){:root{--cv-mobile-page-scale: min(1, calc((100vw - 1.5rem)/210mm) );--cv-mobile-page-width: calc(100vw - 1.5rem) }.cv-root{overflow-x:hidden}.cv-toolbar{gap:.75rem;padding:.65rem .75rem}.cv-toolbar-title{font-size:.78rem}.cv-print-btn{flex:0 0 auto;padding:.42rem .62rem}.cv-print-modal{padding:1rem}.cv-print-modal-body{grid-template-columns:1fr;gap:.85rem;justify-items:center;padding-right:1.75rem;text-align:center}.cv-print-paper-sheet{width:4.4rem;height:6.2rem;font-size:1.55rem}.cv-print-modal-actions{flex-direction:column}.cv-print-modal-primary,.cv-print-modal-download{width:100%}.cv-document-shell{align-items:flex-start;margin:0;padding:.75rem .75rem 1.25rem}.cv-page-frame{width:var(--cv-mobile-page-width);height:auto;aspect-ratio:210 / 297;overflow:hidden}.cv-page{transform:scale(var(--cv-mobile-page-scale));transform-origin:top left}}@media print{@page{size:A4 portrait;margin:0}html,body{width:auto;height:auto;margin:0;padding:0;background:#fff!important;print-color-adjust:exact;-webkit-print-color-adjust:exact}.cv-root{min-height:0!important;background:#fff!important}.cv-toolbar,.cv-print-modal-backdrop{display:none!important}.cv-document-shell{width:210mm;margin:0 auto;padding:0;gap:0;display:block}.cv-page-frame{display:contents}.cv-page{width:210mm;height:297mm;margin:0;padding:0;box-shadow:none;border:none;border-radius:0;page-break-after:always;break-after:page;page-break-inside:avoid;break-inside:avoid-page;overflow:hidden}.cv-page:last-child{page-break-after:auto;break-after:auto}.cv-page-content{display:flex;flex:1;min-height:0;max-height:none;padding:10mm 10mm 6mm;overflow:hidden}.cv-page-footer{margin-top:0;padding:3.2mm 10mm}.cv-skill-tag{border-color:#d8deea}}
