jsonresume-theme-cjean 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,11 +1,10 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var Pe=new Map([["&","&amp;"],["<","&lt;"],[">","&gt;"],['"',"&quot;"],["'","&#x27;"]]),Ze=new Set(["href","src","action","formaction","cite","poster","icon","data"]),je=/[&<>]/g,Me=/[&<>"]/g,Ne=new RegExp("\\p{C}","gu"),Ce=/^[^\s"'>/=]+$/u,Oe=/^(?:java|vb)script:/i,Te=/^data:(?!image\/)/i,pe=e=>e.replace(Ne,""),M=(e,t="content")=>{let r=t==="attr"?Me:je;return e.replaceAll(r,n=>Pe.get(n)??n)},Ee=e=>{let t=pe(e).trim();return t?!(Oe.test(t)||Te.test(t)):!0},Le=e=>Ce.test(e),Ae=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Re=/[A-Z]/g,Ie=new Set(["children","dangerouslySetInnerHTML","key","ref"]),he=e=>{if(e instanceof Promise)return!0;if(Array.isArray(e)){for(let t=0;t<e.length;t++)if(he(e[t]))return!0}return!1};class k{value;constructor(t){this.value=t}toString(){return this.value}}function De(e){if(!e)return"";let t=Object.keys(e);for(let r=0;r<t.length;r++){let n=t[r];if(n&&he(e[n]))return Promise.all(t.map(async a=>[a,await e[a]])).then(a=>te(Object.fromEntries(a)))}return te(e)}function te(e){let t="",r=new Set,n=Object.keys(e);for(let a=0;a<n.length;a++){let o=n[a];if(!o)continue;let i=e[o];if(Ie.has(o)||i===!1||i==null)continue;if(o==="class"||o==="className"){if(typeof i=="string")for(let d of i.split(/\s+/))d&&r.add(d);continue}let s=o.length>20||!/^[a-z]+$/.test(o)?pe(o.toLowerCase()):o;if(Le(s))if(s==="style"){let d=typeof i=="object"?Fe(i):String(i);t+=` style="${M(d,"attr")}"`}else if(i===!0)t+=` ${s}`;else{let d=String(i);Ze.has(s)&&!Ee(d)&&(d="#blocked"),t+=` ${s}="${M(d,"attr")}"`}}return r.size>0&&(t=` class="${M([...r].join(" "),"attr")}"`+t),t}function Fe(e){let t=[];for(let[r,n]of Object.entries(e)){if(n==null)continue;let a=r.startsWith("--")?r:r.replace(Re,"-$&").toLowerCase();t.push(`${a}:${n}`)}return t.join(";")}function K(e){if(e==null||e===!0||e===!1)return"";if(e instanceof k)return e;if(e instanceof Promise)return e.then(K).then(t=>t instanceof k?t:new k(M(String(t))));if(Array.isArray(e)){let t=e.length,r=Array(t),n=!1;for(let a=0;a<t;a++){let o=K(e[a]);r[a]=o,o instanceof Promise&&(n=!0)}if(!n){let a="";for(let o=0;o<t;o++){let i=r[o];a+=i instanceof k?i.value:M(String(i))}return new k(a)}return Promise.all(r).then(a=>{let o="";for(let i=0;i<a.length;i++){let s=a[i];o+=s instanceof k?s.value:M(String(s))}return new k(o)})}return String(e)}function Ue(e,t,r){let n=De(t),a=t.dangerouslySetInnerHTML?new k(t.dangerouslySetInnerHTML.__html):K(r);return n instanceof Promise||a instanceof Promise?Promise.all([n,a]).then(([o,i])=>re(e,o,i)):re(e,n,a)}function re(e,t,r){if(Ae.has(e))return new k(`<${e}${t}>`);let n=r instanceof k?r.value:M(String(r));return new k(`<${e}${t}>${n}</${e}>`)}function c(e,t,r){let n=t||{},a=n.children,o=Array.isArray(a)?a:a!==void 0?[a]:[];return typeof e=="function"?e(n):Ue(e,n,o)}var m=c;function D({children:e}){return e}function Be(e,t={}){return e.replace(/\{([\w-]+?)\}/g,(r,n)=>{let a=t[n];return a!==void 0?String(a):r})}function fe(e,t){return(r,...n)=>{let a=e[r]??r,o=n[0]||{};return n.length===0?a:Be(a,o)}}function Ve(){return e=>e}const We={work_experience:"Work Experience",education:"Education",skills:"Skills",present:"Present",contact_info:"Contact Information",phone_call:"Call mobile phone",email_send:"Send email",show_address:"Show address",portrait_alt:"Portrait of {name}",last_modified:"Last updated on {date}",profile_page_name:"{name}'s resume - {label}",theme_credit:"Theme made with love by {link}"},Je=Ve()({work_experience:"Expériences professionnelles",education:"Formations",skills:"Compétences",present:"Présent",contact_info:"Informations de contact",phone_call:"Appeler sur le téléphone mobile",email_send:"Envoyer un email",show_address:"Afficher l'adresse",portrait_alt:"Portrait de {name}",last_modified:"Dernière mise à jour le {date}",profile_page_name:"CV de {name} - {label}",theme_credit:"Thème proposé avec amour par {link}"}),ge={en:We,fr:Je};let V,W="en";const $=(e,...t)=>(V||(V=fe(ge[W])),V(e,...t)),ne=(e,...t)=>new k($(e,...t));function qe(e){W=e,V=fe(ge[e])}const C={normalize(e){const t=typeof e=="string"?new Date(e):e;return isNaN(t.getTime())?null:t},format(e,t){const r=this.normalize(e);if(!r)return"";const n=typeof W<"u"?W:"fr-FR";switch(t){case"month":return new Intl.DateTimeFormat(n,{month:"long",year:"numeric"}).format(r);case"year":return r.getFullYear().toString();case"date":return new Intl.DateTimeFormat(n,{day:"numeric",month:"numeric",year:"numeric"}).format(r);case"iso":return r.toISOString();default:throw new Error(`Unhandled date format: ${t}`)}},toISO(e){return this.normalize(e)?.toISOString()??""}};class He{seed;constructor(t){this.seed=t}next(){return this.seed=this.seed*16807%2147483647,(this.seed-1)/2147483646}}function Ye(e={}){const{width:t=900,height:r=300,cellSize:n=50,variance:a=.75,seed:o=1}=e,i=new He(o),s=Ke(t,r,n,a,i),d=Xe(s,i),l=et(t,r,d);return`data:image/svg+xml;base64,${btoa(l)}`}function Ke(e,t,r,n,a){const o=[],i=Math.ceil(e/r)+2,s=Math.ceil(t/r)+2;for(let d=0;d<s;d++){const l=[];for(let u=0;u<i;u++){const g=Math.round((u-.5)*r+(a.next()-.5)*r*n),w=Math.round((d-.5)*r+(a.next()-.5)*r*n);l.push({x:g,y:w})}o.push(l)}return o}function Ge(e){const t=e.next(),r=t>.5?"#000000":"#ffffff",n=(Math.round(t*5)*5).toString(16).padStart(2,"0");return r+n}function Qe(e,t){const[r,n,a]=e,o=r.x-t.x,i=r.y-t.y,s=n.x-r.x,d=n.y-r.y,l=a.x-n.x,u=a.y-n.y;return`m${o} ${i} ${s} ${d} ${l} ${u}`.replace(/ -/g,"-")}function Xe(e,t){const r={},n={},a=e.length,o=e[0]?.length??0;for(let i=0;i<a-1;i++)for(let s=0;s<o-1;s++)[[e[i][s],e[i][s+1],e[i+1][s]],[e[i][s+1],e[i+1][s+1],e[i+1][s]]].forEach(l=>{const u=Ge(t);r[u]||(r[u]="",n[u]={x:0,y:0});const g=n[u],w=Qe(l,g);r[u]+=w,n[u]=l[2]});return r}function et(e,t,r){let n="";for(const[a,o]of Object.entries(r))n+=`<path fill="${a}" d="${o}"/>`;return`<svg xmlns="http://www.w3.org/2000/svg" width="${e}" height="${t}" viewBox="0 0 ${e} ${t}" preserveAspectRatio="xMidYMid slice">${n}</svg>`}function tt({name:e,label:t,children:r,...n}){return m("header",{className:"flex-1 grow pr-14 md:pr-0",...n,children:[c("h1",{className:"text-primary kerning-none inline-block text-4xl font-bold tracking-widest uppercase",children:e}),t&&c("p",{className:"text-3xl",children:t}),r]})}function f(e,t,r){function n(s,d){if(s._zod||Object.defineProperty(s,"_zod",{value:{def:d,constr:i,traits:new Set},enumerable:!1}),s._zod.traits.has(e))return;s._zod.traits.add(e),t(s,d);const l=i.prototype,u=Object.keys(l);for(let g=0;g<u.length;g++){const w=u[g];w in s||(s[w]=l[w].bind(s))}}const a=r?.Parent??Object;class o extends a{}Object.defineProperty(o,"name",{value:e});function i(s){var d;const l=r?.Parent?new o:this;n(l,s),(d=l._zod).deferred??(d.deferred=[]);for(const u of l._zod.deferred)u();return l}return Object.defineProperty(i,"init",{value:n}),Object.defineProperty(i,Symbol.hasInstance,{value:s=>r?.Parent&&s instanceof r.Parent?!0:s?._zod?.traits?.has(e)}),Object.defineProperty(i,"name",{value:e}),i}class O extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class rt extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}}const nt={};function T(e){return nt}function at(e){const t=Object.values(e).filter(n=>typeof n=="number");return Object.entries(e).filter(([n,a])=>t.indexOf(+n)===-1).map(([n,a])=>a)}function ot(e,t){return typeof t=="bigint"?t.toString():t}function it(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function st(e){return e==null}function ct(e){const t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}const ae=Symbol("evaluating");function y(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==ae)return n===void 0&&(n=ae,n=r()),n},set(a){Object.defineProperty(e,t,{value:a})},configurable:!0})}const me="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function G(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function lt(e){if(G(e)===!1)return!1;const t=e.constructor;if(t===void 0||typeof t!="function")return!0;const r=t.prototype;return!(G(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function we(e){return lt(e)?{...e}:Array.isArray(e)?[...e]:e}const dt=new Set(["string","number","symbol"]);function ut(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function pt(e,t,r){const n=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(n._zod.parent=e),n}function z(e){const t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function ht(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}function F(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function be(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function U(e){return typeof e=="string"?e:e?.message}function E(e,t,r){const n={...e,path:e.path??[]};if(!e.message){const a=U(e.inst?._zod.def?.error?.(e))??U(t?.error?.(e))??U(r.customError?.(e))??U(r.localeError?.(e))??"Invalid input";n.message=a}return delete n.inst,delete n.continue,t?.reportInput||delete n.input,n}function ft(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function gt(...e){const[t,r,n]=e;return typeof t=="string"?{message:t,code:"custom",input:r,inst:n}:{...t}}const ve=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,ot,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},mt=f("$ZodError",ve),H=f("$ZodError",ve,{Parent:Error}),wt=e=>(t,r,n,a)=>{const o=n?Object.assign(n,{async:!1}):{async:!1},i=t._zod.run({value:r,issues:[]},o);if(i instanceof Promise)throw new O;if(i.issues.length){const s=new(a?.Err??e)(i.issues.map(d=>E(d,o,T())));throw me(s,a?.callee),s}return i.value},bt=wt(H),vt=e=>async(t,r,n,a)=>{const o=n?Object.assign(n,{async:!0}):{async:!0};let i=t._zod.run({value:r,issues:[]},o);if(i instanceof Promise&&(i=await i),i.issues.length){const s=new(a?.Err??e)(i.issues.map(d=>E(d,o,T())));throw me(s,a?.callee),s}return i.value},yt=vt(H),xt=e=>(t,r,n)=>{const a=n?{...n,async:!1}:{async:!1},o=t._zod.run({value:r,issues:[]},a);if(o instanceof Promise)throw new O;return o.issues.length?{success:!1,error:new(e??mt)(o.issues.map(i=>E(i,a,T())))}:{success:!0,data:o.value}},ye=xt(H),kt=e=>async(t,r,n)=>{const a=n?Object.assign(n,{async:!0}):{async:!0};let o=t._zod.run({value:r,issues:[]},a);return o instanceof Promise&&(o=await o),o.issues.length?{success:!1,error:new e(o.issues.map(i=>E(i,a,T())))}:{success:!0,data:o.value}},xe=kt(H),_t=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,zt=e=>{const t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},$t=/^-?\d+(?:\.\d+)?$/,St=/^(?:true|false)$/i,Q=f("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),Pt=f("$ZodCheckLengthEquals",(e,t)=>{var r;Q.init(e,t),(r=e._zod.def).when??(r.when=n=>{const a=n.value;return!st(a)&&a.length!==void 0}),e._zod.onattach.push(n=>{const a=n._zod.bag;a.minimum=t.length,a.maximum=t.length,a.length=t.length}),e._zod.check=n=>{const a=n.value,o=a.length;if(o===t.length)return;const i=ft(a),s=o>t.length;n.issues.push({origin:i,...s?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),ke=f("$ZodCheckStringFormat",(e,t)=>{var r,n;Q.init(e,t),e._zod.onattach.push(a=>{const o=a._zod.bag;o.format=t.format,t.pattern&&(o.patterns??(o.patterns=new Set),o.patterns.add(t.pattern))}),t.pattern?(r=e._zod).check??(r.check=a=>{t.pattern.lastIndex=0,!t.pattern.test(a.value)&&a.issues.push({origin:"string",code:"invalid_format",format:t.format,input:a.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),Zt=f("$ZodCheckRegex",(e,t)=>{ke.init(e,t),e._zod.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),jt={major:4,minor:3,patch:6},v=f("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=jt;const n=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&n.unshift(e);for(const a of n)for(const o of a._zod.onattach)o(e);if(n.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{const a=(i,s,d)=>{let l=F(i),u;for(const g of s){if(g._zod.def.when){if(!g._zod.def.when(i))continue}else if(l)continue;const w=i.issues.length,_=g._zod.check(i);if(_ instanceof Promise&&d?.async===!1)throw new O;if(u||_ instanceof Promise)u=(u??Promise.resolve()).then(async()=>{await _,i.issues.length!==w&&(l||(l=F(i,w)))});else{if(i.issues.length===w)continue;l||(l=F(i,w))}}return u?u.then(()=>i):i},o=(i,s,d)=>{if(F(i))return i.aborted=!0,i;const l=a(s,n,d);if(l instanceof Promise){if(d.async===!1)throw new O;return l.then(u=>e._zod.parse(u,d))}return e._zod.parse(l,d)};e._zod.run=(i,s)=>{if(s.skipChecks)return e._zod.parse(i,s);if(s.direction==="backward"){const l=e._zod.parse({value:i.value,issues:[]},{...s,skipChecks:!0});return l instanceof Promise?l.then(u=>o(u,i,s)):o(l,i,s)}const d=e._zod.parse(i,s);if(d instanceof Promise){if(s.async===!1)throw new O;return d.then(l=>a(l,n,s))}return a(d,n,s)}}y(e,"~standard",()=>({validate:a=>{try{const o=ye(e,a);return o.success?{value:o.data}:{issues:o.error?.issues}}catch{return xe(e,a).then(i=>i.success?{value:i.data}:{issues:i.error?.issues})}},vendor:"zod",version:1}))}),_e=f("$ZodString",(e,t)=>{v.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??zt(e._zod.bag),e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:e}),r}}),X=f("$ZodStringFormat",(e,t)=>{ke.init(e,t),_e.init(e,t)}),Mt=f("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=_t),X.init(e,t)}),Nt=f("$ZodURL",(e,t)=>{X.init(e,t),e._zod.check=r=>{try{const n=r.value.trim(),a=new URL(n);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(a.hostname)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:r.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(a.protocol.endsWith(":")?a.protocol.slice(0,-1):a.protocol)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:r.value,inst:e,continue:!t.abort})),t.normalize?r.value=a.href:r.value=n;return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort})}}}),Ct=f("$ZodNumber",(e,t)=>{v.init(e,t),e._zod.pattern=e._zod.bag.pattern??$t,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=Number(r.value)}catch{}const a=r.value;if(typeof a=="number"&&!Number.isNaN(a)&&Number.isFinite(a))return r;const o=typeof a=="number"?Number.isNaN(a)?"NaN":Number.isFinite(a)?void 0:"Infinity":void 0;return r.issues.push({expected:"number",code:"invalid_type",input:a,inst:e,...o?{received:o}:{}}),r}}),Ot=f("$ZodBoolean",(e,t)=>{v.init(e,t),e._zod.pattern=St,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=!!r.value}catch{}const a=r.value;return typeof a=="boolean"||r.issues.push({expected:"boolean",code:"invalid_type",input:a,inst:e}),r}}),Tt=f("$ZodUnknown",(e,t)=>{v.init(e,t),e._zod.parse=r=>r});function oe(e,t,r){e.issues.length&&t.issues.push(...be(r,e.issues)),t.value[r]=e.value}const Et=f("$ZodArray",(e,t)=>{v.init(e,t),e._zod.parse=(r,n)=>{const a=r.value;if(!Array.isArray(a))return r.issues.push({expected:"array",code:"invalid_type",input:a,inst:e}),r;r.value=Array(a.length);const o=[];for(let i=0;i<a.length;i++){const s=a[i],d=t.element._zod.run({value:s,issues:[]},n);d instanceof Promise?o.push(d.then(l=>oe(l,r,i))):oe(d,r,i)}return o.length?Promise.all(o).then(()=>r):r}});function J(e,t,r,n,a){if(e.issues.length){if(a&&!(r in n))return;t.issues.push(...be(r,e.issues))}e.value===void 0?r in n&&(t.value[r]=void 0):t.value[r]=e.value}function Lt(e){const t=Object.keys(e.shape);for(const n of t)if(!e.shape?.[n]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${n}": expected a Zod schema`);const r=ht(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(r)}}function At(e,t,r,n,a,o){const i=[],s=a.keySet,d=a.catchall._zod,l=d.def.type,u=d.optout==="optional";for(const g in t){if(s.has(g))continue;if(l==="never"){i.push(g);continue}const w=d.run({value:t[g],issues:[]},n);w instanceof Promise?e.push(w.then(_=>J(_,r,g,t,u))):J(w,r,g,t,u)}return i.length&&r.issues.push({code:"unrecognized_keys",keys:i,input:t,inst:o}),e.length?Promise.all(e).then(()=>r):r}const Rt=f("$ZodObject",(e,t)=>{if(v.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){const s=t.shape;Object.defineProperty(t,"shape",{get:()=>{const d={...s};return Object.defineProperty(t,"shape",{value:d}),d}})}const n=it(()=>Lt(t));y(e._zod,"propValues",()=>{const s=t.shape,d={};for(const l in s){const u=s[l]._zod;if(u.values){d[l]??(d[l]=new Set);for(const g of u.values)d[l].add(g)}}return d});const a=G,o=t.catchall;let i;e._zod.parse=(s,d)=>{i??(i=n.value);const l=s.value;if(!a(l))return s.issues.push({expected:"object",code:"invalid_type",input:l,inst:e}),s;s.value={};const u=[],g=i.shape;for(const w of i.keys){const _=g[w],Z=_._zod.optout==="optional",A=_._zod.run({value:l[w],issues:[]},d);A instanceof Promise?u.push(A.then(Y=>J(Y,s,w,l,Z))):J(A,s,w,l,Z)}return o?At(u,l,s,d,n.value,e):u.length?Promise.all(u).then(()=>s):s}}),It=f("$ZodEnum",(e,t)=>{v.init(e,t);const r=at(t.entries),n=new Set(r);e._zod.values=n,e._zod.pattern=new RegExp(`^(${r.filter(a=>dt.has(typeof a)).map(a=>typeof a=="string"?ut(a):a.toString()).join("|")})$`),e._zod.parse=(a,o)=>{const i=a.value;return n.has(i)||a.issues.push({code:"invalid_value",values:r,input:i,inst:e}),a}}),Dt=f("$ZodTransform",(e,t)=>{v.init(e,t),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new rt(e.constructor.name);const a=t.transform(r.value,r);if(n.async)return(a instanceof Promise?a:Promise.resolve(a)).then(i=>(r.value=i,r));if(a instanceof Promise)throw new O;return r.value=a,r}});function ie(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}const Ft=f("$ZodOptional",(e,t)=>{v.init(e,t),e._zod.optin="optional",e._zod.optout="optional",y(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),y(e._zod,"pattern",()=>{const r=t.innerType._zod.pattern;return r?new RegExp(`^(${ct(r.source)})?$`):void 0}),e._zod.parse=(r,n)=>{if(t.innerType._zod.optin==="optional"){const a=t.innerType._zod.run(r,n);return a instanceof Promise?a.then(o=>ie(o,r.value)):ie(a,r.value)}return r.value===void 0?r:t.innerType._zod.run(r,n)}}),Ut=f("$ZodDefault",(e,t)=>{v.init(e,t),e._zod.optin="optional",y(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);if(r.value===void 0)return r.value=t.defaultValue,r;const a=t.innerType._zod.run(r,n);return a instanceof Promise?a.then(o=>se(o,t)):se(a,t)}});function se(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}const Bt=f("$ZodPrefault",(e,t)=>{v.init(e,t),e._zod.optin="optional",y(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>(n.direction==="backward"||r.value===void 0&&(r.value=t.defaultValue),t.innerType._zod.run(r,n))}),Vt=f("$ZodCatch",(e,t)=>{v.init(e,t),y(e._zod,"optin",()=>t.innerType._zod.optin),y(e._zod,"optout",()=>t.innerType._zod.optout),y(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);const a=t.innerType._zod.run(r,n);return a instanceof Promise?a.then(o=>(r.value=o.value,o.issues.length&&(r.value=t.catchValue({...r,error:{issues:o.issues.map(i=>E(i,n,T()))},input:r.value}),r.issues=[]),r)):(r.value=a.value,a.issues.length&&(r.value=t.catchValue({...r,error:{issues:a.issues.map(o=>E(o,n,T()))},input:r.value}),r.issues=[]),r)}}),Wt=f("$ZodPipe",(e,t)=>{v.init(e,t),y(e._zod,"values",()=>t.in._zod.values),y(e._zod,"optin",()=>t.in._zod.optin),y(e._zod,"optout",()=>t.out._zod.optout),y(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(r,n)=>{if(n.direction==="backward"){const o=t.out._zod.run(r,n);return o instanceof Promise?o.then(i=>B(i,t.in,n)):B(o,t.in,n)}const a=t.in._zod.run(r,n);return a instanceof Promise?a.then(o=>B(o,t.out,n)):B(a,t.out,n)}});function B(e,t,r){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},r)}const Jt=f("$ZodCustom",(e,t)=>{Q.init(e,t),v.init(e,t),e._zod.parse=(r,n)=>r,e._zod.check=r=>{const n=r.value,a=t.fn(n);if(a instanceof Promise)return a.then(o=>ce(o,r,n,e));ce(a,r,n,e)}});function ce(e,t,r,n){if(!e){const a={code:"custom",input:r,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(a.params=n._zod.def.params),t.issues.push(gt(a))}}var le;class qt{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...r){const n=r[0];return this._map.set(t,n),n&&typeof n=="object"&&"id"in n&&this._idmap.set(n.id,t),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){const r=this._map.get(t);return r&&typeof r=="object"&&"id"in r&&this._idmap.delete(r.id),this._map.delete(t),this}get(t){const r=t._zod.parent;if(r){const n={...this.get(r)??{}};delete n.id;const a={...n,...this._map.get(t)};return Object.keys(a).length?a:void 0}return this._map.get(t)}has(t){return this._map.has(t)}}function Ht(){return new qt}(le=globalThis).__zod_globalRegistry??(le.__zod_globalRegistry=Ht());function Yt(e,t){return new e({type:"string",...z(t)})}function Kt(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...z(t)})}function Gt(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...z(t)})}function Qt(e,t){return new e({type:"number",checks:[],...z(t)})}function Xt(e,t){return new e({type:"boolean",...z(t)})}function er(e){return new e({type:"unknown"})}function tr(e,t){return new Pt({check:"length_equals",...z(t),length:e})}function rr(e,t){return new Zt({check:"string_format",format:"regex",...z(t),pattern:e})}function nr(e,t,r){return new e({type:"custom",check:"custom",fn:t,...z(r)})}const x=f("ZodMiniType",(e,t)=>{if(!e._zod)throw new Error("Uninitialized schema in ZodMiniType.");v.init(e,t),e.def=t,e.type=t.type,e.parse=(r,n)=>bt(e,r,n,{callee:e.parse}),e.safeParse=(r,n)=>ye(e,r,n),e.parseAsync=async(r,n)=>yt(e,r,n,{callee:e.parseAsync}),e.safeParseAsync=async(r,n)=>xe(e,r,n),e.check=(...r)=>e.clone({...t,checks:[...t.checks??[],...r.map(n=>typeof n=="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]},{parent:!0}),e.with=e.check,e.clone=(r,n)=>pt(e,r,n),e.brand=()=>e,e.register=((r,n)=>(r.add(e,n),e)),e.apply=r=>r(e)}),ze=f("ZodMiniString",(e,t)=>{_e.init(e,t),x.init(e,t)});function h(e){return Yt(ze,e)}const $e=f("ZodMiniStringFormat",(e,t)=>{X.init(e,t),ze.init(e,t)}),ar=f("ZodMiniEmail",(e,t)=>{Mt.init(e,t),$e.init(e,t)});function or(e){return Kt(ar,e)}const ir=f("ZodMiniURL",(e,t)=>{Nt.init(e,t),$e.init(e,t)});function S(e){return Gt(ir,e)}const sr=f("ZodMiniNumber",(e,t)=>{Ct.init(e,t),x.init(e,t)});function cr(e){return Qt(sr,e)}const lr=f("ZodMiniBoolean",(e,t)=>{Ot.init(e,t),x.init(e,t)});function de(e){return Xt(lr,e)}const dr=f("ZodMiniUnknown",(e,t)=>{Tt.init(e,t),x.init(e,t)});function ur(){return er(dr)}const pr=f("ZodMiniArray",(e,t)=>{Et.init(e,t),x.init(e,t)});function P(e,t){return new pr({type:"array",element:e,...z(t)})}const Se=f("ZodMiniObject",(e,t)=>{Rt.init(e,t),x.init(e,t),y(e,"shape",()=>t.shape)});function j(e,t){const r={type:"object",shape:e??{},...z(t)};return new Se(r)}function L(e,t){return new Se({type:"object",shape:e,catchall:ur(),...z(t)})}const hr=f("ZodMiniEnum",(e,t)=>{It.init(e,t),x.init(e,t),e.options=Object.values(t.entries)});function fr(e,t){const r=Array.isArray(e)?Object.fromEntries(e.map(n=>[n,n])):e;return new hr({type:"enum",entries:r,...z(t)})}const gr=f("ZodMiniTransform",(e,t)=>{Dt.init(e,t),x.init(e,t)});function mr(e){return new gr({type:"transform",transform:e})}const wr=f("ZodMiniOptional",(e,t)=>{Ft.init(e,t),x.init(e,t)});function p(e){return new wr({type:"optional",innerType:e})}const br=f("ZodMiniDefault",(e,t)=>{Ut.init(e,t),x.init(e,t)});function b(e,t){return new br({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():we(t)}})}const vr=f("ZodMiniPrefault",(e,t)=>{Bt.init(e,t),x.init(e,t)});function q(e,t){return new vr({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():we(t)}})}const yr=f("ZodMiniCatch",(e,t)=>{Vt.init(e,t),x.init(e,t)});function xr(e,t){return new yr({type:"catch",innerType:e,catchValue:(()=>t)})}const kr=f("ZodMiniPipe",(e,t)=>{Wt.init(e,t),x.init(e,t)});function _r(e,t){return new kr({type:"pipe",in:e,out:t})}const zr=f("ZodMiniCustom",(e,t)=>{Jt.init(e,t),x.init(e,t)});function $r(e,t={}){return nr(zr,e,t)}const Sr=j({ui:q(j({primary:b(h(),"#255b8f"),headerFrom:b(h(),"#ccc074"),headerTo:b(h(),"#4971af"),footerFrom:b(h(),"#463932"),footerTo:b(h(),"#7fbdbc"),backgroundTilesSeed:b(cr(),1),showLogos:b(de(),!0),cta:p(j({text:h(),url:h(),icon:b(p(h().check(rr(/^[a-z]+:[a-z-]+$/))),"tabler:message-circle")})),links:b(P(h()),["phone","email","location","profiles"])}),{}),seo:q(j({title:p(h()),description:p(h()),canonical:p(S()),favicon:p(h()),ogImage:p(S()),twitterImage:p(S()),firstName:p(h()),lastName:p(h()),robots:b(p(h()),"index, follow")}),{}),modest:b(de(),!1)}),Pr=_r(L({name:p(h()),company:p(h()),location:p(h()),description:p(h()),position:p(h()),url:p(S()),website:p(S()),startDate:h(),endDate:p(h()),summary:p(h()),highlights:p(P(h())),logo:p(S())}).check($r(({name:e,company:t})=>!!(e||t),{path:["name"],message:"Either 'name' or 'company' must be provided."})),mr(({company:e,name:t,url:r,website:n,...a})=>({...a,name:t??e,...r||n?{url:r??n}:{}}))),Zr=L({network:h(),username:p(h()),url:p(S())}),jr=L({address:p(h()),postalCode:p(h()),city:p(h()),countryCode:p(h().check(tr(2))),region:p(h())}),Mr=L({name:h(),label:p(h()),image:p(S()),email:p(or()),phone:p(h()),birthDate:p(h()),url:p(S()),summary:p(h()),location:p(jr),profiles:p(P(Zr))}),Nr=j({institution:h(),url:p(S()),area:p(h()),studyType:p(h()),startDate:h(),endDate:p(h()),score:p(h()),courses:p(P(h()))}),Cr=j({name:h(),date:p(h()),url:p(S()),issuer:p(h())}),Or=j({name:h(),level:p(h()),keywords:p(P(h()))}),Tr=L({language:h(),fluency:p(h())}),Er=j({meta:q(L({lang:b(xr(fr(["en","fr"]),"en"),"en"),lastModified:b(h(),()=>new Date().toISOString()),themeConfig:q(Sr,{})}),{}),work:b(p(P(Pr)),[]),basics:Mr,education:b(p(P(Nr)),[]),certificates:b(p(P(Cr)),[]),skills:b(p(P(Or)),[]),languages:b(p(P(Tr)),[])});function I({date:e,children:t,...r}){const n=C.normalize(e);return n?c("time",{dateTime:C.toISO(n),...r,children:t}):c("span",{...r,children:t})}function ee({name:e,children:t,...r}){return m("section",{...r,children:[e&&c("h2",{className:"before:bg-primary relative mt-4 mb-4 text-2xl before:absolute before:-bottom-1 before:left-0 before:h-1 before:w-[3ch] before:rounded-[0_0.25rem_0.25rem_0] before:print:[print-color-adjust:exact]",children:e}),t]})}function Lr({education:e,certificates:t}){const r=e&&e.length>0,n=t&&t.length>0;return!r&&!n?null:m(ee,{name:$("education"),className:"break-inside-avoid",children:[e?.map((a,o)=>m("article",{className:"mb-4 break-inside-avoid",children:[m("h3",{className:"text-lg font-bold",children:[a.studyType," : ",a.area]}),m("p",{children:[a.institution," (",a.startDate&&c(I,{date:a.startDate,children:C.format(a.startDate,"year")}),")"]})]},`edu-${o}`)),r&&n&&c("br",{}),t?.map((a,o)=>m("article",{className:"mb-4 break-inside-avoid",children:[c("h3",{className:"text-lg font-bold",children:a.name}),m("p",{children:[a.issuer," (",a.date&&c(I,{date:a.date,children:C.format(a.date,"year")}),")"]})]},`cert-${o}`))]})}const Ar=async(e,t={})=>{const r=new URL(`https://api.iconify.design/${e}.svg`);for(const[a,o]of Object.entries(t))o&&r.searchParams.set(a,o.toString());const n=await fetch(r);if(!n.ok)throw new Error(`Failed to fetch icon ${e}`);return n.text()},N=async(e,t=24)=>{const r=await Ar(e,{height:t});return new k(r)},Rr=({text:e,url:t,icon:r="tabler:message-circle",...n})=>m(D,{children:[m("a",{href:t,target:"_blank",rel:"noopener noreferrer",id:"cta-fab",className:"fab--extended group fixed right-8 bottom-8 z-20 inline-flex items-center space-x-2 rounded-full bg-black/80 p-4 text-lg whitespace-nowrap text-white shadow-md backdrop-blur-sm transition-colors hover:bg-black dark:bg-gray-700 dark:text-white print:hidden",...n,children:[c("span",{className:"shrink-0",children:N(r)}),c("span",{className:"-mr-2 max-w-0 overflow-hidden text-transparent transition-all duration-300 ease-in-out group-hover:mr-0 group-hover:max-w-96 group-hover:text-inherit group-focus:mr-0 group-focus:max-w-96 group-focus:text-inherit group-[.fab--extended]:mr-0 group-[.fab--extended]:max-w-96 group-[.fab--extended]:text-inherit",children:e})]}),c("script",{dangerouslySetInnerHTML:{__html:`(${Ir.toString()})();`}})]}),Ir=()=>{const e=document.getElementById("cta-fab");if(!e||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;let r=window.pageYOffset||document.documentElement.scrollTop;const n=15,a=()=>{const o=window.pageYOffset||document.documentElement.scrollTop,i=o-r;Math.abs(i)>n&&(i>0?e.classList.remove("fab--extended"):e.classList.add("fab--extended"),r=Math.max(o,0))};window.addEventListener("scroll",a,{passive:!0})};function Dr({meta:e,...t}){const r=e.lastModified;return m("footer",{className:"bg-svg-tiles from-footer-from to-footer-to -z-10 -mt-10 h-32 content-center bg-cover bg-center pt-12 pb-2 text-center text-sm text-white dark:opacity-90 dark:contrast-125 dark:saturate-50 print:hidden",...t,children:[c("div",{children:ne("last_modified",{date:c(I,{date:r,children:C.format(r,"date")})})}),c("div",{className:"mt-1 text-xs opacity-75",children:!e.themeConfig.modest&&ne("theme_credit",{link:c("a",{href:"https://www.cjean.fr",target:"_blank",className:"underline decoration-white/30 underline-offset-2 transition-colors hover:decoration-white/80",children:"Christophe Jean"})})})]})}const Fr=()=>c("header",{className:"bg-primary bg-svg-tiles from-header-from to-header-to h-2.5 bg-cover bg-center shadow-inner md:-mb-60 md:h-80 dark:opacity-90 dark:contrast-125 dark:saturate-50 print:hidden","aria-hidden":"true"});function Ur(e){return`https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(e)}`}function ue(e){try{return N(`tabler:brand-${e.toLowerCase()}`)}catch{return N("tabler:link")}}const R=({children:e,...t})=>c("li",{className:"inline-flex items-center gap-x-1",...t,children:e});function Br({basics:e,list:t=["phone","email","location","profiles"]}){const{phone:r,email:n,location:a,profiles:o=[]}=e,i=new Set,s=d=>{const l=d.toLowerCase();if(l==="phone"&&r)return m(R,{children:[N("tabler:phone"),c("a",{href:`tel:${encodeURIComponent(r)}`,title:$("phone_call"),children:r})]});if(l==="email"&&n)return m(R,{children:[N("tabler:mail"),c("a",{href:`mailto:${n}`,title:$("email_send"),children:n})]});if(l==="location"&&a)return m(R,{children:[N("tabler:map-pin"),m("a",{href:Ur(`${a.city}, ${a.region}, ${a.postalCode||""}, ${a.countryCode}`),title:$("show_address"),target:"_blank",rel:"noopener noreferrer",referrerPolicy:"no-referrer",children:[a.city,", ",a.countryCode]})]});if(l==="profiles")return o.filter(g=>!i.has(g.network.toLowerCase())).map(g=>(i.add(g.network.toLowerCase()),m(R,{children:[ue(g.network),c("a",{href:g.url,rel:"me noopener noreferrer",title:g.username,target:"_blank",referrerPolicy:"no-referrer",children:g.network})]},g.network)));const u=o.find(g=>g.network.toLowerCase()===l);return u&&!i.has(l)?(i.add(l),m(R,{children:[ue(u.network),c("a",{href:u.url,rel:"me noopener noreferrer",title:u.username,target:"_blank",referrerPolicy:"no-referrer",children:u.network})]},u.network)):null};return c("ul",{className:"my-3 inline-flex flex-wrap gap-x-[2ch] gap-y-2","aria-label":$("contact_info"),children:t.map(s)})}function Vr(e){return{"@context":"https://schema.org","@type":"ProfilePage",name:e.basics.label?$("profile_page_name",{name:e.basics.name,label:e.basics.label}):e.basics.name,description:e.basics.summary,dateModified:e.meta.lastModified,mainEntity:{"@type":"Person",name:e.basics.name,birthDate:e.basics.birthDate,jobTitle:e.basics.label,url:e.basics.url,description:e.basics.summary,image:e.basics.image,email:e.basics.email,telephone:e.basics.phone,address:{"@type":"PostalAddress",addressLocality:e.basics.location?.city,addressRegion:e.basics.location?.region,postalCode:e.basics.location?.postalCode,addressCountry:e.basics.location?.countryCode},alumniOf:e.education.map(t=>({"@type":"EducationalOrganization",name:t.institution,url:t.url})),worksFor:e.work.map(t=>({"@type":"Organization",name:t.name,location:t.location,member:{"@type":"OrganizationRole",roleName:t.position},url:t.url})),sameAs:e.basics.profiles?.map(t=>t.url),knowsAbout:e.skills.flatMap(t=>t.keywords)}}}function Wr({resume:e}){return c("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(Vr(e))}})}function Jr(e){const[t,...r]=e.split(" ");return{firstNameSlice:t,lastNameSlice:r.join(" ")}}async function qr({title:e,description:t,canonical:r,robots:n,favicon:a}){return m(D,{children:[c("title",{children:e}),t&&c("meta",{name:"description",content:t}),c("meta",{name:"robots",content:n||"index, follow"}),r&&c("link",{rel:"canonical",href:r}),a&&c("link",{rel:"icon",href:`data:image/svg+xml;base64,${btoa((await N(a)).toString())}`})]})}function Hr({title:e,description:t,url:r,image:n,firstName:a,lastName:o}){return m(D,{children:[c("meta",{property:"og:type",content:"profile"}),c("meta",{property:"og:title",content:e}),t&&c("meta",{property:"og:description",content:t}),a&&c("meta",{property:"profile:first_name",content:a}),o&&c("meta",{property:"profile:last_name",content:o}),n&&c("meta",{property:"og:image",content:n}),r&&c("meta",{property:"og:url",content:r})]})}function Yr({title:e,description:t,url:r,image:n}){return m(D,{children:[c("meta",{property:"twitter:card",content:"summary_large_image"}),c("meta",{property:"twitter:title",content:e}),t&&c("meta",{property:"twitter:description",content:t}),n&&c("meta",{property:"twitter:image",content:n}),r&&c("meta",{property:"twitter:url",content:r})]})}function Kr({skills:e,...t}){return!e||e.length===0?null:c(ee,{name:$("skills"),...t,children:e.map(r=>m("div",{className:"mb-4 break-inside-avoid",children:[c("h3",{className:"text-lg font-bold",children:r.name}),c("ul",{className:"my-3 flex flex-wrap gap-2 leading-8",children:r.keywords?.map(n=>c("li",{className:"inline-flex items-center rounded-md bg-gray-50 px-2 py-1 text-sm font-medium text-gray-600 inset-ring inset-ring-gray-500/10 dark:bg-slate-800 dark:text-slate-300 dark:inset-ring-white/10",children:n},n))})]},r.name))})}function Gr({works:e,showLogos:t}){return!e||e.length===0?null:c(ee,{name:$("work_experience"),children:c("ol",{className:"relative list-none border-gray-200 md:ml-4 md:border-l-[5px] md:pl-6 dark:border-slate-700/50",reversed:!0,children:e.map(r=>m("li",{className:"break-inside-avoid",children:[m("div",{className:"before:border-primary relative text-gray-500 before:absolute before:top-0 before:-left-[calc(1.5rem+2.5px)] before:hidden before:h-[19px] before:w-[19px] before:-translate-x-1/2 before:rounded-full before:border-4 before:bg-white md:before:block dark:text-slate-400 dark:before:bg-slate-900",children:[c(I,{date:r.startDate,children:C.format(r.startDate,"month")})," — ",r.endDate?c(I,{date:r.endDate,children:C.format(r.endDate,"month")}):$("present")]}),m("article",{children:[m("header",{className:`grid grid-cols-[auto_1fr] ${t&&r.logo?"gap-x-3":""}`,children:[t&&r.logo?c("img",{src:r.logo,alt:r.name,width:"64",height:"64",className:"row-span-2 h-12 w-12 object-contain",loading:"lazy"}):null,c("h3",{className:"col-start-2 text-xl font-semibold",children:r.position}),m("div",{className:"col-start-2",children:[r.url?c("a",{href:r.url,target:"_blank",rel:"noopener noreferrer",translate:"no",children:r.name}):c("span",{translate:"no",children:r.name}),r.description&&m(D,{children:[" - ",c("small",{children:r.description})]})]})]}),r.summary&&c("p",{children:r.summary}),c("ul",{className:"m-2 mb-6 list-inside list-disc",children:r.highlights?.map(n=>c("li",{children:n},n))})]})]},r.name))})})}const Qr=async({resume:e,css:t,...r})=>{const{basics:n,work:a,education:o,certificates:i,skills:s,meta:d}=e,{ui:l,seo:u,modest:g}=d.themeConfig,w=Ye({seed:l.backgroundTilesSeed,cellSize:60,variance:.8}),_=u.title||(n.label?`${n.name} - ${n.label}`:n.name),Z=u.description||n.summary,{firstNameSlice:A,lastNameSlice:Y}=Jr(n.name);return m("html",{lang:d.lang,children:[m("head",{children:[c("meta",{charSet:"UTF-8"}),c("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),c("meta",{name:"theme-color",content:l.primary}),!g&&c("meta",{name:"generator",content:"JSON Resume Theme CJEAN"}),c(qr,{title:_,description:Z,canonical:u.canonical,robots:u.robots,favicon:u.favicon}),c(Hr,{title:_,description:Z,url:u.canonical,image:u.ogImage||n.image,firstName:u.firstName||A,lastName:u.lastName||Y}),c(Yr,{title:_,description:Z,url:u.canonical,image:u.twitterImage||n.image}),c("style",{dangerouslySetInnerHTML:{__html:`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var Pe=new Map([["&","&amp;"],["<","&lt;"],[">","&gt;"],['"',"&quot;"],["'","&#x27;"]]),Ze=new Set(["href","src","action","formaction","cite","poster","icon","data"]),je=/[&<>]/g,Ne=/[&<>"]/g,Me=new RegExp("\\p{C}","gu"),Ce=/^[^\s"'>/=]+$/u,Oe=/^(?:java|vb)script:/i,Te=/^data:(?!image\/)/i,pe=e=>e.replace(Me,""),N=(e,t="content")=>{let r=t==="attr"?Ne:je;return e.replaceAll(r,n=>Pe.get(n)??n)},Ee=e=>{let t=pe(e).trim();return t?!(Oe.test(t)||Te.test(t)):!0},Ae=e=>Ce.test(e),Le=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Re=/[A-Z]/g,Ie=new Set(["children","dangerouslySetInnerHTML","key","ref"]),he=e=>{if(e instanceof Promise)return!0;if(Array.isArray(e)){for(let t=0;t<e.length;t++)if(he(e[t]))return!0}return!1};class k{value;constructor(t){this.value=t}toString(){return this.value}}function De(e){if(!e)return"";let t=Object.keys(e);for(let r=0;r<t.length;r++){let n=t[r];if(n&&he(e[n]))return Promise.all(t.map(async o=>[o,await e[o]])).then(o=>te(Object.fromEntries(o)))}return te(e)}function te(e){let t="",r=new Set,n=Object.keys(e);for(let o=0;o<n.length;o++){let a=n[o];if(!a)continue;let i=e[a];if(Ie.has(a)||i===!1||i==null)continue;if(a==="class"||a==="className"){if(typeof i=="string")for(let d of i.split(/\s+/))d&&r.add(d);continue}let s=a.length>20||!/^[a-z]+$/.test(a)?pe(a.toLowerCase()):a;if(Ae(s))if(s==="style"){let d=typeof i=="object"?Fe(i):String(i);t+=` style="${N(d,"attr")}"`}else if(i===!0)t+=` ${s}`;else{let d=String(i);Ze.has(s)&&!Ee(d)&&(d="#blocked"),t+=` ${s}="${N(d,"attr")}"`}}return r.size>0&&(t=` class="${N([...r].join(" "),"attr")}"`+t),t}function Fe(e){let t=[];for(let[r,n]of Object.entries(e)){if(n==null)continue;let o=r.startsWith("--")?r:r.replace(Re,"-$&").toLowerCase();t.push(`${o}:${n}`)}return t.join(";")}function K(e){if(e==null||e===!0||e===!1)return"";if(e instanceof k)return e;if(e instanceof Promise)return e.then(K).then(t=>t instanceof k?t:new k(N(String(t))));if(Array.isArray(e)){let t=e.length,r=Array(t),n=!1;for(let o=0;o<t;o++){let a=K(e[o]);r[o]=a,a instanceof Promise&&(n=!0)}if(!n){let o="";for(let a=0;a<t;a++){let i=r[a];o+=i instanceof k?i.value:N(String(i))}return new k(o)}return Promise.all(r).then(o=>{let a="";for(let i=0;i<o.length;i++){let s=o[i];a+=s instanceof k?s.value:N(String(s))}return new k(a)})}return String(e)}function Ue(e,t,r){let n=De(t),o=t.dangerouslySetInnerHTML?new k(t.dangerouslySetInnerHTML.__html):K(r);return n instanceof Promise||o instanceof Promise?Promise.all([n,o]).then(([a,i])=>re(e,a,i)):re(e,n,o)}function re(e,t,r){if(Le.has(e))return new k(`<${e}${t}>`);let n=r instanceof k?r.value:N(String(r));return new k(`<${e}${t}>${n}</${e}>`)}function c(e,t,r){let n=t||{},o=n.children,a=Array.isArray(o)?o:o!==void 0?[o]:[];return typeof e=="function"?e(n):Ue(e,n,a)}var m=c;function D({children:e}){return e}function Be(e,t={}){return e.replace(/\{([\w-]+?)\}/g,(r,n)=>{let o=t[n];return o!==void 0?String(o):r})}function fe(e,t){return(r,...n)=>{let o=e[r]??r,a=n[0]||{};return n.length===0?o:Be(o,a)}}function Ve(){return e=>e}const We={work_experience:"Work Experience",education:"Education",skills:"Skills",present:"Present",contact_info:"Contact Information",phone_call:"Call mobile phone",email_send:"Send email",show_address:"Show address",portrait_alt:"Portrait of {name}",last_modified:"Last updated on {date}",profile_page_name:"{name}'s resume - {label}",theme_credit:"Theme made with love by {link}"},Je=Ve()({work_experience:"Expériences professionnelles",education:"Formations",skills:"Compétences",present:"Présent",contact_info:"Informations de contact",phone_call:"Appeler sur le téléphone mobile",email_send:"Envoyer un email",show_address:"Afficher l'adresse",portrait_alt:"Portrait de {name}",last_modified:"Dernière mise à jour le {date}",profile_page_name:"CV de {name} - {label}",theme_credit:"Thème proposé avec amour par {link}"}),ge={en:We,fr:Je};let V,W="en";const $=(e,...t)=>(V||(V=fe(ge[W])),V(e,...t)),ne=(e,...t)=>new k($(e,...t));function qe(e){W=e,V=fe(ge[e])}const C={normalize(e){const t=typeof e=="string"?new Date(e):e;return isNaN(t.getTime())?null:t},format(e,t){const r=this.normalize(e);if(!r)return"";const n=typeof W<"u"?W:"fr-FR";switch(t){case"month":return new Intl.DateTimeFormat(n,{month:"long",year:"numeric"}).format(r);case"year":return r.getFullYear().toString();case"date":return new Intl.DateTimeFormat(n,{day:"numeric",month:"numeric",year:"numeric"}).format(r);case"iso":return r.toISOString();default:throw new Error(`Unhandled date format: ${t}`)}},toISO(e){return this.normalize(e)?.toISOString()??""}};class He{seed;constructor(t){this.seed=t}next(){return this.seed=this.seed*16807%2147483647,(this.seed-1)/2147483646}}function Ye(e={}){const{width:t=900,height:r=300,cellSize:n=50,variance:o=.75,seed:a=1}=e,i=new He(a),s=Ke(t,r,n,o,i),d=Xe(s,i),l=et(t,r,d);return`data:image/svg+xml,${encodeURIComponent(l).replace(/%20/g," ").replace(/%3D/g,"=").replace(/%3A/g,":").replace(/%2F/g,"/").replace(/%22/g,"'")}`}function Ke(e,t,r,n,o){const a=[],i=Math.ceil(e/r)+2,s=Math.ceil(t/r)+2;for(let d=0;d<s;d++){const l=[];for(let u=0;u<i;u++){const g=Math.round((u-.5)*r+(o.next()-.5)*r*n),w=Math.round((d-.5)*r+(o.next()-.5)*r*n);l.push({x:g,y:w})}a.push(l)}return a}function Ge(e){const t=e.next(),r=t>.5?"#000000":"#ffffff",n=(Math.round(t*5)*5).toString(16).padStart(2,"0");return r+n}function Qe(e,t){const[r,n,o]=e,a=r.x-t.x,i=r.y-t.y,s=n.x-r.x,d=n.y-r.y,l=o.x-n.x,u=o.y-n.y;return`m${a} ${i} ${s} ${d} ${l} ${u}`.replace(/ -/g,"-")}function Xe(e,t){const r={},n={},o=e.length,a=e[0]?.length??0;for(let i=0;i<o-1;i++)for(let s=0;s<a-1;s++)[[e[i][s],e[i][s+1],e[i+1][s]],[e[i][s+1],e[i+1][s+1],e[i+1][s]]].forEach(l=>{const u=Ge(t);r[u]||(r[u]="",n[u]={x:0,y:0});const g=n[u],w=Qe(l,g);r[u]+=w,n[u]=l[2]});return r}function et(e,t,r){let n="";for(const[o,a]of Object.entries(r))n+=`<path fill="${o}" d="${a}"/>`;return`<svg xmlns="http://www.w3.org/2000/svg" width="${e}" height="${t}" viewBox="0 0 ${e} ${t}" preserveAspectRatio="xMidYMid slice">${n}</svg>`}function tt({name:e,label:t,children:r,...n}){return m("header",{className:"flex-1 grow pr-14 md:pr-0",...n,children:[c("h1",{className:"text-primary kerning-none inline-block text-4xl font-bold tracking-widest uppercase",children:e}),t&&c("p",{className:"text-3xl",children:t}),r]})}function f(e,t,r){function n(s,d){if(s._zod||Object.defineProperty(s,"_zod",{value:{def:d,constr:i,traits:new Set},enumerable:!1}),s._zod.traits.has(e))return;s._zod.traits.add(e),t(s,d);const l=i.prototype,u=Object.keys(l);for(let g=0;g<u.length;g++){const w=u[g];w in s||(s[w]=l[w].bind(s))}}const o=r?.Parent??Object;class a extends o{}Object.defineProperty(a,"name",{value:e});function i(s){var d;const l=r?.Parent?new a:this;n(l,s),(d=l._zod).deferred??(d.deferred=[]);for(const u of l._zod.deferred)u();return l}return Object.defineProperty(i,"init",{value:n}),Object.defineProperty(i,Symbol.hasInstance,{value:s=>r?.Parent&&s instanceof r.Parent?!0:s?._zod?.traits?.has(e)}),Object.defineProperty(i,"name",{value:e}),i}class O extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class rt extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}}const nt={};function T(e){return nt}function ot(e){const t=Object.values(e).filter(n=>typeof n=="number");return Object.entries(e).filter(([n,o])=>t.indexOf(+n)===-1).map(([n,o])=>o)}function at(e,t){return typeof t=="bigint"?t.toString():t}function it(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function st(e){return e==null}function ct(e){const t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}const oe=Symbol("evaluating");function y(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==oe)return n===void 0&&(n=oe,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}const me="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function G(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function lt(e){if(G(e)===!1)return!1;const t=e.constructor;if(t===void 0||typeof t!="function")return!0;const r=t.prototype;return!(G(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function we(e){return lt(e)?{...e}:Array.isArray(e)?[...e]:e}const dt=new Set(["string","number","symbol"]);function ut(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function pt(e,t,r){const n=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(n._zod.parent=e),n}function z(e){const t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function ht(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}function F(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function be(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function U(e){return typeof e=="string"?e:e?.message}function E(e,t,r){const n={...e,path:e.path??[]};if(!e.message){const o=U(e.inst?._zod.def?.error?.(e))??U(t?.error?.(e))??U(r.customError?.(e))??U(r.localeError?.(e))??"Invalid input";n.message=o}return delete n.inst,delete n.continue,t?.reportInput||delete n.input,n}function ft(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function gt(...e){const[t,r,n]=e;return typeof t=="string"?{message:t,code:"custom",input:r,inst:n}:{...t}}const ve=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,at,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},mt=f("$ZodError",ve),H=f("$ZodError",ve,{Parent:Error}),wt=e=>(t,r,n,o)=>{const a=n?Object.assign(n,{async:!1}):{async:!1},i=t._zod.run({value:r,issues:[]},a);if(i instanceof Promise)throw new O;if(i.issues.length){const s=new(o?.Err??e)(i.issues.map(d=>E(d,a,T())));throw me(s,o?.callee),s}return i.value},bt=wt(H),vt=e=>async(t,r,n,o)=>{const a=n?Object.assign(n,{async:!0}):{async:!0};let i=t._zod.run({value:r,issues:[]},a);if(i instanceof Promise&&(i=await i),i.issues.length){const s=new(o?.Err??e)(i.issues.map(d=>E(d,a,T())));throw me(s,o?.callee),s}return i.value},yt=vt(H),xt=e=>(t,r,n)=>{const o=n?{...n,async:!1}:{async:!1},a=t._zod.run({value:r,issues:[]},o);if(a instanceof Promise)throw new O;return a.issues.length?{success:!1,error:new(e??mt)(a.issues.map(i=>E(i,o,T())))}:{success:!0,data:a.value}},ye=xt(H),kt=e=>async(t,r,n)=>{const o=n?Object.assign(n,{async:!0}):{async:!0};let a=t._zod.run({value:r,issues:[]},o);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(i=>E(i,o,T())))}:{success:!0,data:a.value}},xe=kt(H),_t=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,zt=e=>{const t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},$t=/^-?\d+(?:\.\d+)?$/,St=/^(?:true|false)$/i,Q=f("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),Pt=f("$ZodCheckLengthEquals",(e,t)=>{var r;Q.init(e,t),(r=e._zod.def).when??(r.when=n=>{const o=n.value;return!st(o)&&o.length!==void 0}),e._zod.onattach.push(n=>{const o=n._zod.bag;o.minimum=t.length,o.maximum=t.length,o.length=t.length}),e._zod.check=n=>{const o=n.value,a=o.length;if(a===t.length)return;const i=ft(o),s=a>t.length;n.issues.push({origin:i,...s?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),ke=f("$ZodCheckStringFormat",(e,t)=>{var r,n;Q.init(e,t),e._zod.onattach.push(o=>{const a=o._zod.bag;a.format=t.format,t.pattern&&(a.patterns??(a.patterns=new Set),a.patterns.add(t.pattern))}),t.pattern?(r=e._zod).check??(r.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),Zt=f("$ZodCheckRegex",(e,t)=>{ke.init(e,t),e._zod.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),jt={major:4,minor:3,patch:6},v=f("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=jt;const n=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&n.unshift(e);for(const o of n)for(const a of o._zod.onattach)a(e);if(n.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{const o=(i,s,d)=>{let l=F(i),u;for(const g of s){if(g._zod.def.when){if(!g._zod.def.when(i))continue}else if(l)continue;const w=i.issues.length,_=g._zod.check(i);if(_ instanceof Promise&&d?.async===!1)throw new O;if(u||_ instanceof Promise)u=(u??Promise.resolve()).then(async()=>{await _,i.issues.length!==w&&(l||(l=F(i,w)))});else{if(i.issues.length===w)continue;l||(l=F(i,w))}}return u?u.then(()=>i):i},a=(i,s,d)=>{if(F(i))return i.aborted=!0,i;const l=o(s,n,d);if(l instanceof Promise){if(d.async===!1)throw new O;return l.then(u=>e._zod.parse(u,d))}return e._zod.parse(l,d)};e._zod.run=(i,s)=>{if(s.skipChecks)return e._zod.parse(i,s);if(s.direction==="backward"){const l=e._zod.parse({value:i.value,issues:[]},{...s,skipChecks:!0});return l instanceof Promise?l.then(u=>a(u,i,s)):a(l,i,s)}const d=e._zod.parse(i,s);if(d instanceof Promise){if(s.async===!1)throw new O;return d.then(l=>o(l,n,s))}return o(d,n,s)}}y(e,"~standard",()=>({validate:o=>{try{const a=ye(e,o);return a.success?{value:a.data}:{issues:a.error?.issues}}catch{return xe(e,o).then(i=>i.success?{value:i.data}:{issues:i.error?.issues})}},vendor:"zod",version:1}))}),_e=f("$ZodString",(e,t)=>{v.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??zt(e._zod.bag),e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:e}),r}}),X=f("$ZodStringFormat",(e,t)=>{ke.init(e,t),_e.init(e,t)}),Nt=f("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=_t),X.init(e,t)}),Mt=f("$ZodURL",(e,t)=>{X.init(e,t),e._zod.check=r=>{try{const n=r.value.trim(),o=new URL(n);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(o.hostname)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:r.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.protocol)||r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:r.value,inst:e,continue:!t.abort})),t.normalize?r.value=o.href:r.value=n;return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort})}}}),Ct=f("$ZodNumber",(e,t)=>{v.init(e,t),e._zod.pattern=e._zod.bag.pattern??$t,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=Number(r.value)}catch{}const o=r.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return r;const a=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return r.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...a?{received:a}:{}}),r}}),Ot=f("$ZodBoolean",(e,t)=>{v.init(e,t),e._zod.pattern=St,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=!!r.value}catch{}const o=r.value;return typeof o=="boolean"||r.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:e}),r}}),Tt=f("$ZodUnknown",(e,t)=>{v.init(e,t),e._zod.parse=r=>r});function ae(e,t,r){e.issues.length&&t.issues.push(...be(r,e.issues)),t.value[r]=e.value}const Et=f("$ZodArray",(e,t)=>{v.init(e,t),e._zod.parse=(r,n)=>{const o=r.value;if(!Array.isArray(o))return r.issues.push({expected:"array",code:"invalid_type",input:o,inst:e}),r;r.value=Array(o.length);const a=[];for(let i=0;i<o.length;i++){const s=o[i],d=t.element._zod.run({value:s,issues:[]},n);d instanceof Promise?a.push(d.then(l=>ae(l,r,i))):ae(d,r,i)}return a.length?Promise.all(a).then(()=>r):r}});function J(e,t,r,n,o){if(e.issues.length){if(o&&!(r in n))return;t.issues.push(...be(r,e.issues))}e.value===void 0?r in n&&(t.value[r]=void 0):t.value[r]=e.value}function At(e){const t=Object.keys(e.shape);for(const n of t)if(!e.shape?.[n]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${n}": expected a Zod schema`);const r=ht(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(r)}}function Lt(e,t,r,n,o,a){const i=[],s=o.keySet,d=o.catchall._zod,l=d.def.type,u=d.optout==="optional";for(const g in t){if(s.has(g))continue;if(l==="never"){i.push(g);continue}const w=d.run({value:t[g],issues:[]},n);w instanceof Promise?e.push(w.then(_=>J(_,r,g,t,u))):J(w,r,g,t,u)}return i.length&&r.issues.push({code:"unrecognized_keys",keys:i,input:t,inst:a}),e.length?Promise.all(e).then(()=>r):r}const Rt=f("$ZodObject",(e,t)=>{if(v.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){const s=t.shape;Object.defineProperty(t,"shape",{get:()=>{const d={...s};return Object.defineProperty(t,"shape",{value:d}),d}})}const n=it(()=>At(t));y(e._zod,"propValues",()=>{const s=t.shape,d={};for(const l in s){const u=s[l]._zod;if(u.values){d[l]??(d[l]=new Set);for(const g of u.values)d[l].add(g)}}return d});const o=G,a=t.catchall;let i;e._zod.parse=(s,d)=>{i??(i=n.value);const l=s.value;if(!o(l))return s.issues.push({expected:"object",code:"invalid_type",input:l,inst:e}),s;s.value={};const u=[],g=i.shape;for(const w of i.keys){const _=g[w],Z=_._zod.optout==="optional",L=_._zod.run({value:l[w],issues:[]},d);L instanceof Promise?u.push(L.then(Y=>J(Y,s,w,l,Z))):J(L,s,w,l,Z)}return a?Lt(u,l,s,d,n.value,e):u.length?Promise.all(u).then(()=>s):s}}),It=f("$ZodEnum",(e,t)=>{v.init(e,t);const r=ot(t.entries),n=new Set(r);e._zod.values=n,e._zod.pattern=new RegExp(`^(${r.filter(o=>dt.has(typeof o)).map(o=>typeof o=="string"?ut(o):o.toString()).join("|")})$`),e._zod.parse=(o,a)=>{const i=o.value;return n.has(i)||o.issues.push({code:"invalid_value",values:r,input:i,inst:e}),o}}),Dt=f("$ZodTransform",(e,t)=>{v.init(e,t),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new rt(e.constructor.name);const o=t.transform(r.value,r);if(n.async)return(o instanceof Promise?o:Promise.resolve(o)).then(i=>(r.value=i,r));if(o instanceof Promise)throw new O;return r.value=o,r}});function ie(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}const Ft=f("$ZodOptional",(e,t)=>{v.init(e,t),e._zod.optin="optional",e._zod.optout="optional",y(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),y(e._zod,"pattern",()=>{const r=t.innerType._zod.pattern;return r?new RegExp(`^(${ct(r.source)})?$`):void 0}),e._zod.parse=(r,n)=>{if(t.innerType._zod.optin==="optional"){const o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(a=>ie(a,r.value)):ie(o,r.value)}return r.value===void 0?r:t.innerType._zod.run(r,n)}}),Ut=f("$ZodDefault",(e,t)=>{v.init(e,t),e._zod.optin="optional",y(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);if(r.value===void 0)return r.value=t.defaultValue,r;const o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(a=>se(a,t)):se(o,t)}});function se(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}const Bt=f("$ZodPrefault",(e,t)=>{v.init(e,t),e._zod.optin="optional",y(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>(n.direction==="backward"||r.value===void 0&&(r.value=t.defaultValue),t.innerType._zod.run(r,n))}),Vt=f("$ZodCatch",(e,t)=>{v.init(e,t),y(e._zod,"optin",()=>t.innerType._zod.optin),y(e._zod,"optout",()=>t.innerType._zod.optout),y(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);const o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(a=>(r.value=a.value,a.issues.length&&(r.value=t.catchValue({...r,error:{issues:a.issues.map(i=>E(i,n,T()))},input:r.value}),r.issues=[]),r)):(r.value=o.value,o.issues.length&&(r.value=t.catchValue({...r,error:{issues:o.issues.map(a=>E(a,n,T()))},input:r.value}),r.issues=[]),r)}}),Wt=f("$ZodPipe",(e,t)=>{v.init(e,t),y(e._zod,"values",()=>t.in._zod.values),y(e._zod,"optin",()=>t.in._zod.optin),y(e._zod,"optout",()=>t.out._zod.optout),y(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(r,n)=>{if(n.direction==="backward"){const a=t.out._zod.run(r,n);return a instanceof Promise?a.then(i=>B(i,t.in,n)):B(a,t.in,n)}const o=t.in._zod.run(r,n);return o instanceof Promise?o.then(a=>B(a,t.out,n)):B(o,t.out,n)}});function B(e,t,r){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},r)}const Jt=f("$ZodCustom",(e,t)=>{Q.init(e,t),v.init(e,t),e._zod.parse=(r,n)=>r,e._zod.check=r=>{const n=r.value,o=t.fn(n);if(o instanceof Promise)return o.then(a=>ce(a,r,n,e));ce(o,r,n,e)}});function ce(e,t,r,n){if(!e){const o={code:"custom",input:r,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(o.params=n._zod.def.params),t.issues.push(gt(o))}}var le;class qt{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...r){const n=r[0];return this._map.set(t,n),n&&typeof n=="object"&&"id"in n&&this._idmap.set(n.id,t),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){const r=this._map.get(t);return r&&typeof r=="object"&&"id"in r&&this._idmap.delete(r.id),this._map.delete(t),this}get(t){const r=t._zod.parent;if(r){const n={...this.get(r)??{}};delete n.id;const o={...n,...this._map.get(t)};return Object.keys(o).length?o:void 0}return this._map.get(t)}has(t){return this._map.has(t)}}function Ht(){return new qt}(le=globalThis).__zod_globalRegistry??(le.__zod_globalRegistry=Ht());function Yt(e,t){return new e({type:"string",...z(t)})}function Kt(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...z(t)})}function Gt(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...z(t)})}function Qt(e,t){return new e({type:"number",checks:[],...z(t)})}function Xt(e,t){return new e({type:"boolean",...z(t)})}function er(e){return new e({type:"unknown"})}function tr(e,t){return new Pt({check:"length_equals",...z(t),length:e})}function rr(e,t){return new Zt({check:"string_format",format:"regex",...z(t),pattern:e})}function nr(e,t,r){return new e({type:"custom",check:"custom",fn:t,...z(r)})}const x=f("ZodMiniType",(e,t)=>{if(!e._zod)throw new Error("Uninitialized schema in ZodMiniType.");v.init(e,t),e.def=t,e.type=t.type,e.parse=(r,n)=>bt(e,r,n,{callee:e.parse}),e.safeParse=(r,n)=>ye(e,r,n),e.parseAsync=async(r,n)=>yt(e,r,n,{callee:e.parseAsync}),e.safeParseAsync=async(r,n)=>xe(e,r,n),e.check=(...r)=>e.clone({...t,checks:[...t.checks??[],...r.map(n=>typeof n=="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]},{parent:!0}),e.with=e.check,e.clone=(r,n)=>pt(e,r,n),e.brand=()=>e,e.register=((r,n)=>(r.add(e,n),e)),e.apply=r=>r(e)}),ze=f("ZodMiniString",(e,t)=>{_e.init(e,t),x.init(e,t)});function h(e){return Yt(ze,e)}const $e=f("ZodMiniStringFormat",(e,t)=>{X.init(e,t),ze.init(e,t)}),or=f("ZodMiniEmail",(e,t)=>{Nt.init(e,t),$e.init(e,t)});function ar(e){return Kt(or,e)}const ir=f("ZodMiniURL",(e,t)=>{Mt.init(e,t),$e.init(e,t)});function S(e){return Gt(ir,e)}const sr=f("ZodMiniNumber",(e,t)=>{Ct.init(e,t),x.init(e,t)});function cr(e){return Qt(sr,e)}const lr=f("ZodMiniBoolean",(e,t)=>{Ot.init(e,t),x.init(e,t)});function de(e){return Xt(lr,e)}const dr=f("ZodMiniUnknown",(e,t)=>{Tt.init(e,t),x.init(e,t)});function ur(){return er(dr)}const pr=f("ZodMiniArray",(e,t)=>{Et.init(e,t),x.init(e,t)});function P(e,t){return new pr({type:"array",element:e,...z(t)})}const Se=f("ZodMiniObject",(e,t)=>{Rt.init(e,t),x.init(e,t),y(e,"shape",()=>t.shape)});function j(e,t){const r={type:"object",shape:e??{},...z(t)};return new Se(r)}function A(e,t){return new Se({type:"object",shape:e,catchall:ur(),...z(t)})}const hr=f("ZodMiniEnum",(e,t)=>{It.init(e,t),x.init(e,t),e.options=Object.values(t.entries)});function fr(e,t){const r=Array.isArray(e)?Object.fromEntries(e.map(n=>[n,n])):e;return new hr({type:"enum",entries:r,...z(t)})}const gr=f("ZodMiniTransform",(e,t)=>{Dt.init(e,t),x.init(e,t)});function mr(e){return new gr({type:"transform",transform:e})}const wr=f("ZodMiniOptional",(e,t)=>{Ft.init(e,t),x.init(e,t)});function p(e){return new wr({type:"optional",innerType:e})}const br=f("ZodMiniDefault",(e,t)=>{Ut.init(e,t),x.init(e,t)});function b(e,t){return new br({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():we(t)}})}const vr=f("ZodMiniPrefault",(e,t)=>{Bt.init(e,t),x.init(e,t)});function q(e,t){return new vr({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():we(t)}})}const yr=f("ZodMiniCatch",(e,t)=>{Vt.init(e,t),x.init(e,t)});function xr(e,t){return new yr({type:"catch",innerType:e,catchValue:(()=>t)})}const kr=f("ZodMiniPipe",(e,t)=>{Wt.init(e,t),x.init(e,t)});function _r(e,t){return new kr({type:"pipe",in:e,out:t})}const zr=f("ZodMiniCustom",(e,t)=>{Jt.init(e,t),x.init(e,t)});function $r(e,t={}){return nr(zr,e,t)}const Sr=j({ui:q(j({primary:b(h(),"#255b8f"),headerFrom:b(h(),"#ccc074"),headerTo:b(h(),"#4971af"),footerFrom:b(h(),"#463932"),footerTo:b(h(),"#7fbdbc"),backgroundTilesSeed:b(cr(),1),showLogos:b(de(),!0),cta:p(j({text:h(),url:h(),icon:b(p(h().check(rr(/^[a-z]+:[a-z-]+$/))),"tabler:message-circle")})),links:b(P(h()),["phone","email","location","profiles"])}),{}),seo:q(j({title:p(h()),description:p(h()),canonical:p(S()),favicon:p(h()),ogImage:p(S()),twitterImage:p(S()),firstName:p(h()),lastName:p(h()),robots:b(p(h()),"index, follow")}),{}),modest:b(de(),!1)}),Pr=_r(A({name:p(h()),company:p(h()),location:p(h()),description:p(h()),position:p(h()),url:p(S()),website:p(S()),startDate:h(),endDate:p(h()),summary:p(h()),highlights:p(P(h())),logo:p(S())}).check($r(({name:e,company:t})=>!!(e||t),{path:["name"],message:"Either 'name' or 'company' must be provided."})),mr(({company:e,name:t,url:r,website:n,...o})=>({...o,name:t??e,...r||n?{url:r??n}:{}}))),Zr=A({network:h(),username:p(h()),url:p(S())}),jr=A({address:p(h()),postalCode:p(h()),city:p(h()),countryCode:p(h().check(tr(2))),region:p(h())}),Nr=A({name:h(),label:p(h()),image:p(S()),email:p(ar()),phone:p(h()),birthDate:p(h()),url:p(S()),summary:p(h()),location:p(jr),profiles:p(P(Zr))}),Mr=j({institution:h(),url:p(S()),area:p(h()),studyType:p(h()),startDate:h(),endDate:p(h()),score:p(h()),courses:p(P(h()))}),Cr=j({name:h(),date:p(h()),url:p(S()),issuer:p(h())}),Or=j({name:h(),level:p(h()),keywords:p(P(h()))}),Tr=A({language:h(),fluency:p(h())}),Er=j({meta:q(A({lang:b(xr(fr(["en","fr"]),"en"),"en"),lastModified:b(h(),()=>new Date().toISOString()),themeConfig:q(Sr,{})}),{}),work:b(p(P(Pr)),[]),basics:Nr,education:b(p(P(Mr)),[]),certificates:b(p(P(Cr)),[]),skills:b(p(P(Or)),[]),languages:b(p(P(Tr)),[])});function I({date:e,children:t,...r}){const n=C.normalize(e);return n?c("time",{dateTime:C.toISO(n),...r,children:t}):c("span",{...r,children:t})}function ee({name:e,children:t,...r}){return m("section",{...r,children:[e&&c("h2",{className:"before:bg-primary relative mt-4 mb-4 text-2xl before:absolute before:-bottom-1 before:left-0 before:h-1 before:w-[3ch] before:rounded-[0_0.25rem_0.25rem_0] before:print:[print-color-adjust:exact]",children:e}),t]})}function Ar({education:e,certificates:t}){const r=e&&e.length>0,n=t&&t.length>0;return!r&&!n?null:m(ee,{name:$("education"),className:"break-inside-avoid",children:[e?.map((o,a)=>m("article",{className:"mb-4 break-inside-avoid",children:[m("h3",{className:"text-lg font-bold",children:[o.studyType," : ",o.area]}),m("p",{children:[o.institution," (",o.startDate&&c(I,{date:o.startDate,children:C.format(o.startDate,"year")}),")"]})]},`edu-${a}`)),r&&n&&c("br",{}),t?.map((o,a)=>m("article",{className:"mb-4 break-inside-avoid",children:[c("h3",{className:"text-lg font-bold",children:o.name}),m("p",{children:[o.issuer," (",o.date&&c(I,{date:o.date,children:C.format(o.date,"year")}),")"]})]},`cert-${a}`))]})}const Lr=async(e,t={})=>{const r=new URL(`https://api.iconify.design/${e}.svg`);for(const[o,a]of Object.entries(t))a&&r.searchParams.set(o,a.toString());const n=await fetch(r);if(!n.ok)throw new Error(`Failed to fetch icon ${e}`);return n.text()},M=async(e,t=24)=>{const r=await Lr(e,{height:t});return new k(r)},Rr=({text:e,url:t,icon:r="tabler:message-circle",...n})=>m(D,{children:[m("a",{href:t,target:"_blank",rel:"noopener noreferrer",id:"cta-fab",className:"fab--extended group fixed right-8 bottom-8 z-20 inline-flex items-center space-x-2 rounded-full bg-black/80 p-4 text-lg whitespace-nowrap text-white shadow-md backdrop-blur-sm transition-colors hover:bg-black dark:bg-gray-700 dark:text-white print:hidden",...n,children:[c("span",{className:"shrink-0",children:M(r)}),c("span",{className:"-mr-2 max-w-0 overflow-hidden text-transparent transition-all duration-300 ease-in-out group-hover:mr-0 group-hover:max-w-96 group-hover:text-inherit group-focus:mr-0 group-focus:max-w-96 group-focus:text-inherit group-[.fab--extended]:mr-0 group-[.fab--extended]:max-w-96 group-[.fab--extended]:text-inherit",children:e})]}),c("script",{dangerouslySetInnerHTML:{__html:`(${Ir.toString()})();`}})]}),Ir=()=>{const e=document.getElementById("cta-fab");if(!e||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;let r=window.pageYOffset||document.documentElement.scrollTop;const n=15,o=()=>{const a=window.pageYOffset||document.documentElement.scrollTop,i=a-r;Math.abs(i)>n&&(i>0?e.classList.remove("fab--extended"):e.classList.add("fab--extended"),r=Math.max(a,0))};window.addEventListener("scroll",o,{passive:!0})};function Dr({meta:e,bgTiles:t,...r}){const n=e.lastModified;return m("footer",{className:"bg-angled-gradient from-footer-from to-footer-to relative isolate -z-10 -mt-10 h-32 content-center pt-12 pb-2 text-center text-sm text-white dark:opacity-90 dark:contrast-125 dark:saturate-50 print:hidden",...r,children:[c("img",{src:t,alt:"",loading:"lazy",className:"absolute inset-0 -z-10 size-full object-cover object-center","aria-hidden":"true"}),c("div",{children:ne("last_modified",{date:c(I,{date:n,children:C.format(n,"date")})})}),c("div",{className:"mt-1 text-xs opacity-75",children:!e.themeConfig.modest&&ne("theme_credit",{link:c("a",{href:"https://www.cjean.fr",target:"_blank",className:"underline decoration-white/30 underline-offset-2 transition-colors hover:decoration-white/80",children:"Christophe Jean"})})})]})}const Fr=({bgTiles:e})=>c("header",{className:"bg-primary bg-angled-gradient from-header-from to-header-to relative h-2.5 overflow-hidden shadow-inner md:-mb-60 md:h-80 dark:opacity-90 dark:contrast-125 dark:saturate-50 print:hidden","aria-hidden":"true",children:c("img",{src:e,alt:"",fetchPriority:"high",className:"absolute inset-0 size-full object-cover object-center"})});function Ur(e){return`https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(e)}`}function ue(e){try{return M(`tabler:brand-${e.toLowerCase()}`)}catch{return M("tabler:link")}}const R=({children:e,...t})=>c("li",{className:"inline-flex items-center gap-x-1",...t,children:e});function Br({basics:e,list:t=["phone","email","location","profiles"]}){const{phone:r,email:n,location:o,profiles:a=[]}=e,i=new Set,s=d=>{const l=d.toLowerCase();if(l==="phone"&&r)return m(R,{children:[M("tabler:phone"),c("a",{href:`tel:${encodeURIComponent(r)}`,title:$("phone_call"),children:r})]});if(l==="email"&&n)return m(R,{children:[M("tabler:mail"),c("a",{href:`mailto:${n}`,title:$("email_send"),children:n})]});if(l==="location"&&o)return m(R,{children:[M("tabler:map-pin"),m("a",{href:Ur(`${o.city}, ${o.region}, ${o.postalCode||""}, ${o.countryCode}`),title:$("show_address"),target:"_blank",rel:"noopener noreferrer",referrerPolicy:"no-referrer",children:[o.city,", ",o.countryCode]})]});if(l==="profiles")return a.filter(g=>!i.has(g.network.toLowerCase())).map(g=>(i.add(g.network.toLowerCase()),m(R,{children:[ue(g.network),c("a",{href:g.url,rel:"me noopener noreferrer",title:g.username,target:"_blank",referrerPolicy:"no-referrer",children:g.network})]},g.network)));const u=a.find(g=>g.network.toLowerCase()===l);return u&&!i.has(l)?(i.add(l),m(R,{children:[ue(u.network),c("a",{href:u.url,rel:"me noopener noreferrer",title:u.username,target:"_blank",referrerPolicy:"no-referrer",children:u.network})]},u.network)):null};return c("ul",{className:"my-3 inline-flex flex-wrap gap-x-[2ch] gap-y-2","aria-label":$("contact_info"),children:t.map(s)})}function Vr(e){return{"@context":"https://schema.org","@type":"ProfilePage",name:e.basics.label?$("profile_page_name",{name:e.basics.name,label:e.basics.label}):e.basics.name,description:e.basics.summary,dateModified:e.meta.lastModified,mainEntity:{"@type":"Person",name:e.basics.name,birthDate:e.basics.birthDate,jobTitle:e.basics.label,url:e.basics.url,description:e.basics.summary,image:e.basics.image,email:e.basics.email,telephone:e.basics.phone,address:{"@type":"PostalAddress",addressLocality:e.basics.location?.city,addressRegion:e.basics.location?.region,postalCode:e.basics.location?.postalCode,addressCountry:e.basics.location?.countryCode},alumniOf:e.education.map(t=>({"@type":"EducationalOrganization",name:t.institution,url:t.url})),worksFor:e.work.map(t=>({"@type":"Organization",name:t.name,location:t.location,member:{"@type":"OrganizationRole",roleName:t.position},url:t.url})),sameAs:e.basics.profiles?.map(t=>t.url),knowsAbout:e.skills.flatMap(t=>t.keywords)}}}function Wr({resume:e}){return c("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(Vr(e))}})}function Jr(e){const[t,...r]=e.split(" ");return{firstNameSlice:t,lastNameSlice:r.join(" ")}}async function qr({title:e,description:t,canonical:r,robots:n,favicon:o}){return m(D,{children:[c("title",{children:e}),t&&c("meta",{name:"description",content:t}),c("meta",{name:"robots",content:n||"index, follow"}),r&&c("link",{rel:"canonical",href:r}),o&&c("link",{rel:"icon",href:`data:image/svg+xml;base64,${btoa((await M(o)).toString())}`})]})}function Hr({title:e,description:t,url:r,image:n,firstName:o,lastName:a}){return m(D,{children:[c("meta",{property:"og:type",content:"profile"}),c("meta",{property:"og:title",content:e}),t&&c("meta",{property:"og:description",content:t}),o&&c("meta",{property:"profile:first_name",content:o}),a&&c("meta",{property:"profile:last_name",content:a}),n&&c("meta",{property:"og:image",content:n}),r&&c("meta",{property:"og:url",content:r})]})}function Yr({title:e,description:t,url:r,image:n}){return m(D,{children:[c("meta",{property:"twitter:card",content:"summary_large_image"}),c("meta",{property:"twitter:title",content:e}),t&&c("meta",{property:"twitter:description",content:t}),n&&c("meta",{property:"twitter:image",content:n}),r&&c("meta",{property:"twitter:url",content:r})]})}function Kr({skills:e,...t}){return!e||e.length===0?null:c(ee,{name:$("skills"),...t,children:e.map(r=>m("div",{className:"mb-4 break-inside-avoid",children:[c("h3",{className:"text-lg font-bold",children:r.name}),c("ul",{className:"my-3 flex flex-wrap gap-2 leading-8",children:r.keywords?.map(n=>c("li",{className:"inline-flex items-center rounded-md bg-gray-50 px-2 py-1 text-sm font-medium text-gray-600 inset-ring inset-ring-gray-500/10 dark:bg-slate-800 dark:text-slate-300 dark:inset-ring-white/10",children:n},n))})]},r.name))})}function Gr({works:e,showLogos:t}){return!e||e.length===0?null:c(ee,{name:$("work_experience"),children:c("ol",{className:"relative list-none border-gray-200 md:ml-4 md:border-l-[5px] md:pl-6 dark:border-slate-700/50",reversed:!0,children:e.map(r=>m("li",{className:"break-inside-avoid",children:[m("div",{className:"before:border-primary relative text-gray-500 before:absolute before:top-0 before:-left-[calc(1.5rem+2.5px)] before:hidden before:h-[19px] before:w-[19px] before:-translate-x-1/2 before:rounded-full before:border-4 before:bg-white md:before:block dark:text-slate-400 dark:before:bg-slate-900",children:[c(I,{date:r.startDate,children:C.format(r.startDate,"month")})," — ",r.endDate?c(I,{date:r.endDate,children:C.format(r.endDate,"month")}):$("present")]}),m("article",{children:[m("header",{className:`grid grid-cols-[auto_1fr] ${t&&r.logo?"gap-x-3":""}`,children:[t&&r.logo?c("img",{src:r.logo,alt:r.name,width:"64",height:"64",className:"row-span-2 h-12 w-12 object-contain",loading:"lazy"}):null,c("h3",{className:"col-start-2 text-xl font-semibold",children:r.position}),m("div",{className:"col-start-2",children:[r.url?c("a",{href:r.url,target:"_blank",rel:"noopener noreferrer",translate:"no",children:r.name}):c("span",{translate:"no",children:r.name}),r.description&&m(D,{children:[" - ",c("small",{children:r.description})]})]})]}),r.summary&&c("p",{children:r.summary}),c("ul",{className:"m-2 mb-6 list-inside list-disc",children:r.highlights?.map(n=>c("li",{children:n},n))})]})]},r.name))})})}const Qr=async({resume:e,css:t,...r})=>{const{basics:n,work:o,education:a,certificates:i,skills:s,meta:d}=e,{ui:l,seo:u,modest:g}=d.themeConfig,w=Ye({seed:l.backgroundTilesSeed,cellSize:60,variance:.8}),_=u.title||(n.label?`${n.name} - ${n.label}`:n.name),Z=u.description||n.summary,{firstNameSlice:L,lastNameSlice:Y}=Jr(n.name);return m("html",{lang:d.lang,children:[m("head",{children:[c("meta",{charSet:"UTF-8"}),c("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),c("meta",{name:"theme-color",content:l.primary}),!g&&c("meta",{name:"generator",content:"JSON Resume Theme CJEAN"}),c(qr,{title:_,description:Z,canonical:u.canonical,robots:u.robots,favicon:u.favicon}),c(Hr,{title:_,description:Z,url:u.canonical,image:u.ogImage||n.image,firstName:u.firstName||L,lastName:u.lastName||Y}),c(Yr,{title:_,description:Z,url:u.canonical,image:u.twitterImage||n.image}),c("style",{dangerouslySetInnerHTML:{__html:`
2
2
  :root {
3
3
  --theme-primary: ${l.primary};
4
4
  --theme-header-from: ${l.headerFrom};
5
5
  --theme-header-to: ${l.headerTo};
6
6
  --theme-footer-from: ${l.footerFrom};
7
7
  --theme-footer-to: ${l.footerTo};
8
- --theme-bg-tiles: url("${w}");
9
8
  }
10
9
  ${t}
11
- `}})]}),m("body",{className:"bg-gray-200 text-gray-800 dark:bg-slate-950 dark:text-slate-300 print:bg-transparent print:text-sm",...r,children:[c(Fr,{}),c("main",{className:"relative z-10 container mx-auto max-w-5xl rounded bg-white p-4 shadow-md backdrop-blur-3xl md:p-6 dark:bg-slate-900/95 dark:text-slate-200 dark:shadow-2xl dark:ring-1 dark:ring-white/10 print:rounded-none print:shadow-none [&_a]:underline",children:m("article",{children:[c(tt,{name:n.name,label:n.label}),c(Br,{basics:n,list:d.themeConfig.ui.links}),m("div",{className:"flex break-inside-avoid flex-wrap justify-center gap-4 sm:flex-nowrap",children:[c("div",{className:"relative inline-block",children:c("img",{src:n.image,alt:$("portrait_alt",{name:n.name}),width:"200",height:"200",className:"relative aspect-square min-w-30 rounded-full object-cover"})}),c("p",{className:"text-lg print:text-base",children:n.summary})]}),c(Gr,{works:a,showLogos:l.showLogos}),c(Lr,{education:o,certificates:i}),c(Kr,{skills:s})]})}),c(Dr,{meta:d}),l.cta&&c(Rr,{text:l.cta.text,url:l.cta.url,icon:l.cta.icon}),c(Wr,{resume:e}),c("script",{dangerouslySetInnerHTML:{__html:"if (window.matchMedia('(prefers-color-scheme: dark)').matches) document.documentElement.classList.add('dark');"}})]})]})};function Xr(e,t=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(e)}&sz=${t}`}function en(e,t={}){const r=new URL("https://wsrv.nl/");return r.searchParams.set("url",e),t.w&&r.searchParams.set("w",t.w.toString()),t.h&&r.searchParams.set("h",t.h.toString()),t.output&&r.searchParams.set("output",t.output),t.encoding&&r.searchParams.set("encoding",t.encoding),t.fit&&r.searchParams.set("fit",t.fit),t.a&&r.searchParams.set("a",t.a),r.toString()}async function tn(e,t=64){if(e)try{const r=Xr(e,t),n=en(r,{w:t,h:t,output:"webp",encoding:"base64"}),a=await fetch(n);if(!a.ok){console.warn(n,a);return}return await a.text()}catch{return}}const rn='@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-x-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-widest:.1em;--radius-md:.375rem;--radius-xl:.75rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--blur-sm:8px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:var(--theme-primary);--color-header-from:var(--theme-header-from);--color-header-to:var(--theme-header-to);--color-footer-from:var(--theme-footer-from);--color-footer-to:var(--theme-footer-to);--min-width-30:7.5rem}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components{.portrait-card{width:calc(var(--spacing) * 48);height:calc(var(--spacing) * 48);cursor:pointer;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;-webkit-user-select:none;user-select:none;transform-style:preserve-3d;flex-shrink:0;transition-duration:.2s;position:relative}@media(min-width:48rem){.portrait-card{width:calc(var(--spacing) * 32);height:calc(var(--spacing) * 32)}}@media(hover:hover){.portrait-card:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}}.portrait-card:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.portrait-card.rotate-y-180{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.portrait-card__side{inset:calc(var(--spacing) * 0);border-style:var(--tw-border-style);border-width:4px;border-color:var(--color-white);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.7s;backface-visibility:hidden;transition-duration:.7s;position:absolute}.portrait-card__side:where(.dark,.dark *){border-color:var(--color-slate-800)}.portrait-card__front{object-fit:cover;border-radius:3.40282e38px}.portrait-card__back{--tw-rotate-y:rotateY(180deg);transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);border-radius:var(--radius-xl);background-color:var(--color-white);padding:calc(var(--spacing) * .5);justify-content:center;align-items:center;display:flex}@media print{.portrait-card__back{display:none}}.portrait-card__back img{object-fit:contain;width:100%;height:100%}}@layer utilities{.fixed{position:fixed}.relative{position:relative}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.right-8{right:calc(var(--spacing) * 8)}.bottom-8{bottom:calc(var(--spacing) * 8)}.-z-10{z-index:-10}.z-10{z-index:10}.z-20{z-index:20}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-2{margin:calc(var(--spacing) * 2)}.mx-auto{margin-inline:auto}.my-3{margin-block:calc(var(--spacing) * 3)}.-mt-10{margin-top:calc(var(--spacing) * -10)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-4{margin-top:calc(var(--spacing) * 4)}.-mr-2{margin-right:calc(var(--spacing) * -2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1}.h-2\\.5{height:calc(var(--spacing) * 2.5)}.h-12{height:calc(var(--spacing) * 12)}.h-32{height:calc(var(--spacing) * 32)}.w-12{width:calc(var(--spacing) * 12)}.max-w-0{max-width:calc(var(--spacing) * 0)}.max-w-5xl{max-width:var(--container-5xl)}.min-w-30{min-width:var(--min-width-30)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.break-inside-avoid{break-inside:avoid}.grid-cols-\\[auto_1fr\\]{grid-template-columns:auto 1fr}.flex-wrap{flex-wrap:wrap}.content-center{align-content:center}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-x-1{column-gap:calc(var(--spacing) * 1)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-\\[2ch\\]{column-gap:2ch}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-md{border-radius:var(--radius-md)}.border-gray-200{border-color:var(--color-gray-200)}.bg-black\\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\\/80{background-color:color-mix(in oklab,var(--color-black) 80%,transparent)}}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-primary{background-color:var(--color-primary)}.bg-white{background-color:var(--color-white)}.bg-svg-tiles{--gradient-angle:16deg;background-image:var(--theme-bg-tiles),linear-gradient(var(--gradient-angle),var(--tw-gradient-from,transparent),var(--tw-gradient-to,transparent))}.from-footer-from{--tw-gradient-from:var(--color-footer-from);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-header-from{--tw-gradient-from:var(--color-header-from);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-footer-to{--tw-gradient-to:var(--color-footer-to);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-header-to{--tw-gradient-to:var(--color-header-to);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-cover{background-size:cover}.bg-center{background-position:50%}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-4{padding:calc(var(--spacing) * 4)}.px-2{padding-inline:calc(var(--spacing) * 2)}.py-1{padding-block:calc(var(--spacing) * 1)}.pt-12{padding-top:calc(var(--spacing) * 12)}.pr-14{padding-right:calc(var(--spacing) * 14)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-8{--tw-leading:calc(var(--spacing) * 8);line-height:calc(var(--spacing) * 8)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap{white-space:nowrap}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-800{color:var(--color-gray-800)}.text-primary{color:var(--color-primary)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.decoration-white\\/30{text-decoration-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.decoration-white\\/30{-webkit-text-decoration-color:color-mix(in oklab,var(--color-white) 30%,transparent);text-decoration-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.underline-offset-2{text-underline-offset:2px}.opacity-75{opacity:.75}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring-gray-500\\/10{--tw-inset-ring-color:#6a72821a}@supports (color:color-mix(in lab,red,red)){.inset-ring-gray-500\\/10{--tw-inset-ring-color:color-mix(in oklab, var(--color-gray-500) 10%, transparent)}}.backdrop-blur-3xl{--tw-backdrop-blur:blur(var(--blur-3xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.kerning-none{font-kerning:none}@media(hover:hover){.group-hover\\:mr-0:is(:where(.group):hover *){margin-right:calc(var(--spacing) * 0)}.group-hover\\:max-w-96:is(:where(.group):hover *){max-width:calc(var(--spacing) * 96)}.group-hover\\:text-inherit:is(:where(.group):hover *){color:inherit}}.group-focus\\:mr-0:is(:where(.group):focus *){margin-right:calc(var(--spacing) * 0)}.group-focus\\:max-w-96:is(:where(.group):focus *){max-width:calc(var(--spacing) * 96)}.group-focus\\:text-inherit:is(:where(.group):focus *){color:inherit}.group-\\[\\.fab--extended\\]\\:mr-0:is(:where(.group).fab--extended *){margin-right:calc(var(--spacing) * 0)}.group-\\[\\.fab--extended\\]\\:max-w-96:is(:where(.group).fab--extended *){max-width:calc(var(--spacing) * 96)}.group-\\[\\.fab--extended\\]\\:text-inherit:is(:where(.group).fab--extended *){color:inherit}.before\\:absolute:before{content:var(--tw-content);position:absolute}.before\\:top-0:before{content:var(--tw-content);top:calc(var(--spacing) * 0)}.before\\:-bottom-1:before{content:var(--tw-content);bottom:calc(var(--spacing) * -1)}.before\\:-left-\\[calc\\(1\\.5rem\\+2\\.5px\\)\\]:before{content:var(--tw-content);left:calc(-1.5rem - 2.5px)}.before\\:left-0:before{content:var(--tw-content);left:calc(var(--spacing) * 0)}.before\\:hidden:before{content:var(--tw-content);display:none}.before\\:h-1:before{content:var(--tw-content);height:calc(var(--spacing) * 1)}.before\\:h-\\[19px\\]:before{content:var(--tw-content);height:19px}.before\\:w-\\[3ch\\]:before{content:var(--tw-content);width:3ch}.before\\:w-\\[19px\\]:before{content:var(--tw-content);width:19px}.before\\:-translate-x-1\\/2:before{content:var(--tw-content);--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.before\\:rounded-\\[0_0\\.25rem_0\\.25rem_0\\]:before{content:var(--tw-content);border-radius:0 .25rem .25rem 0}.before\\:rounded-full:before{content:var(--tw-content);border-radius:3.40282e38px}.before\\:border-4:before{content:var(--tw-content);border-style:var(--tw-border-style);border-width:4px}.before\\:border-primary:before{content:var(--tw-content);border-color:var(--color-primary)}.before\\:bg-primary:before{content:var(--tw-content);background-color:var(--color-primary)}.before\\:bg-white:before{content:var(--tw-content);background-color:var(--color-white)}@media(hover:hover){.hover\\:bg-black:hover{background-color:var(--color-black)}.hover\\:decoration-white\\/80:hover{text-decoration-color:#fffc}@supports (color:color-mix(in lab,red,red)){.hover\\:decoration-white\\/80:hover{-webkit-text-decoration-color:color-mix(in oklab,var(--color-white) 80%,transparent);text-decoration-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}}@media(min-width:40rem){.sm\\:flex-nowrap{flex-wrap:nowrap}}@media(min-width:48rem){.md\\:-mb-60{margin-bottom:calc(var(--spacing) * -60)}.md\\:ml-4{margin-left:calc(var(--spacing) * 4)}.md\\:h-80{height:calc(var(--spacing) * 80)}.md\\:border-l-\\[5px\\]{border-left-style:var(--tw-border-style);border-left-width:5px}.md\\:p-6{padding:calc(var(--spacing) * 6)}.md\\:pr-0{padding-right:calc(var(--spacing) * 0)}.md\\:pl-6{padding-left:calc(var(--spacing) * 6)}.md\\:before\\:block:before{content:var(--tw-content);display:block}}.dark\\:border-slate-700\\/50:where(.dark,.dark *){border-color:#31415880}@supports (color:color-mix(in lab,red,red)){.dark\\:border-slate-700\\/50:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-slate-700) 50%,transparent)}}.dark\\:bg-gray-700:where(.dark,.dark *){background-color:var(--color-gray-700)}.dark\\:bg-slate-800:where(.dark,.dark *){background-color:var(--color-slate-800)}.dark\\:bg-slate-900\\/95:where(.dark,.dark *){background-color:#0f172bf2}@supports (color:color-mix(in lab,red,red)){.dark\\:bg-slate-900\\/95:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-slate-900) 95%,transparent)}}.dark\\:bg-slate-950:where(.dark,.dark *){background-color:var(--color-slate-950)}.dark\\:text-slate-200:where(.dark,.dark *){color:var(--color-slate-200)}.dark\\:text-slate-300:where(.dark,.dark *){color:var(--color-slate-300)}.dark\\:text-slate-400:where(.dark,.dark *){color:var(--color-slate-400)}.dark\\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\\:opacity-90:where(.dark,.dark *){opacity:.9}.dark\\:shadow-2xl:where(.dark,.dark *){--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\\:ring-1:where(.dark,.dark *){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\\:ring-white\\/10:where(.dark,.dark *){--tw-ring-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.dark\\:ring-white\\/10:where(.dark,.dark *){--tw-ring-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.dark\\:inset-ring-white\\/10:where(.dark,.dark *){--tw-inset-ring-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.dark\\:inset-ring-white\\/10:where(.dark,.dark *){--tw-inset-ring-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.dark\\:contrast-125:where(.dark,.dark *){--tw-contrast:contrast(125%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.dark\\:saturate-50:where(.dark,.dark *){--tw-saturate:saturate(50%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.dark\\:before\\:bg-slate-900:where(.dark,.dark *):before{content:var(--tw-content);background-color:var(--color-slate-900)}@media print{.print\\:hidden{display:none}.print\\:rounded-none{border-radius:0}.print\\:bg-transparent{background-color:#0000}.print\\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.print\\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.print\\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.before\\:print\\:\\[print-color-adjust\\:exact\\]:before{content:var(--tw-content)}@media print{.before\\:print\\:\\[print-color-adjust\\:exact\\]:before{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.\\[\\&_a\\]\\:underline a{text-decoration-line:underline}}:where(.dark){--color-primary:oklch(from var(--theme-primary) calc(l*.9) calc(c*.7) h)}@media print{.portrait-card{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y);transform:none}.portrait-card__side{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:none}}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}';async function nn(e){const t=Er.parse(e);return qe(t.meta.lang),t.meta.themeConfig.ui.showLogos&&await Promise.all(t.work.filter(r=>!r.logo).map(async r=>{r.logo=await tn(r.url)})),`<!doctype html>${await Qr({resume:t,css:rn})}`}exports.render=nn;
10
+ `}})]}),m("body",{className:"bg-gray-200 text-gray-800 dark:bg-slate-950 dark:text-slate-300 print:bg-transparent print:text-sm",...r,children:[c(Fr,{bgTiles:w}),c("main",{className:"relative z-10 container mx-auto max-w-5xl rounded bg-white p-4 shadow-md backdrop-blur-3xl md:p-6 dark:bg-slate-900/95 dark:text-slate-200 dark:shadow-2xl dark:ring-1 dark:ring-white/10 print:rounded-none print:shadow-none [&_a]:underline",children:m("article",{children:[c(tt,{name:n.name,label:n.label}),c(Br,{basics:n,list:d.themeConfig.ui.links}),m("div",{className:"flex break-inside-avoid flex-wrap justify-center gap-4 sm:flex-nowrap",children:[c("div",{className:"relative inline-block",children:c("img",{src:n.image,alt:$("portrait_alt",{name:n.name}),width:"200",height:"200",className:"relative aspect-square min-w-30 rounded-full object-cover"})}),c("p",{className:"text-lg print:text-base",children:n.summary})]}),c(Gr,{works:o,showLogos:l.showLogos}),c(Ar,{education:a,certificates:i}),c(Kr,{skills:s})]})}),c(Dr,{meta:d,bgTiles:w}),l.cta&&c(Rr,{text:l.cta.text,url:l.cta.url,icon:l.cta.icon}),c(Wr,{resume:e}),c("script",{dangerouslySetInnerHTML:{__html:"if (window.matchMedia('(prefers-color-scheme: dark)').matches) document.documentElement.classList.add('dark');"}})]})]})};function Xr(e,t=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(e)}&sz=${t}`}function en(e,t={}){const r=new URL("https://wsrv.nl/");return r.searchParams.set("url",e),t.w&&r.searchParams.set("w",t.w.toString()),t.h&&r.searchParams.set("h",t.h.toString()),t.output&&r.searchParams.set("output",t.output),t.encoding&&r.searchParams.set("encoding",t.encoding),t.fit&&r.searchParams.set("fit",t.fit),t.a&&r.searchParams.set("a",t.a),r.toString()}async function tn(e,t=64){if(e)try{const r=Xr(e,t),n=en(r,{w:t,h:t,output:"webp",encoding:"base64"}),o=await fetch(n);if(!o.ok){console.warn(n,o);return}return await o.text()}catch{return}}const rn='@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-x-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-widest:.1em;--radius-md:.375rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--blur-sm:8px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:var(--theme-primary);--color-header-from:var(--theme-header-from);--color-header-to:var(--theme-header-to);--color-footer-from:var(--theme-footer-from);--color-footer-to:var(--theme-footer-to);--min-width-30:7.5rem}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.right-8{right:calc(var(--spacing) * 8)}.bottom-8{bottom:calc(var(--spacing) * 8)}.isolate{isolation:isolate}.-z-10{z-index:-10}.z-10{z-index:10}.z-20{z-index:20}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-2{margin:calc(var(--spacing) * 2)}.mx-auto{margin-inline:auto}.my-3{margin-block:calc(var(--spacing) * 3)}.-mt-10{margin-top:calc(var(--spacing) * -10)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-4{margin-top:calc(var(--spacing) * 4)}.-mr-2{margin-right:calc(var(--spacing) * -2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1}.size-full{width:100%;height:100%}.h-2\\.5{height:calc(var(--spacing) * 2.5)}.h-12{height:calc(var(--spacing) * 12)}.h-32{height:calc(var(--spacing) * 32)}.w-12{width:calc(var(--spacing) * 12)}.max-w-0{max-width:calc(var(--spacing) * 0)}.max-w-5xl{max-width:var(--container-5xl)}.min-w-30{min-width:var(--min-width-30)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.break-inside-avoid{break-inside:avoid}.grid-cols-\\[auto_1fr\\]{grid-template-columns:auto 1fr}.flex-wrap{flex-wrap:wrap}.content-center{align-content:center}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-x-1{column-gap:calc(var(--spacing) * 1)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-\\[2ch\\]{column-gap:2ch}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-md{border-radius:var(--radius-md)}.border-gray-200{border-color:var(--color-gray-200)}.bg-black\\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\\/80{background-color:color-mix(in oklab,var(--color-black) 80%,transparent)}}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-primary{background-color:var(--color-primary)}.bg-white{background-color:var(--color-white)}.bg-angled-gradient{--gradient-angle:16deg;background-image:linear-gradient(var(--gradient-angle),var(--tw-gradient-from,transparent),var(--tw-gradient-to,transparent))}.from-footer-from{--tw-gradient-from:var(--color-footer-from);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-header-from{--tw-gradient-from:var(--color-header-from);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-footer-to{--tw-gradient-to:var(--color-footer-to);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-header-to{--tw-gradient-to:var(--color-header-to);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.object-center{object-position:center}.p-4{padding:calc(var(--spacing) * 4)}.px-2{padding-inline:calc(var(--spacing) * 2)}.py-1{padding-block:calc(var(--spacing) * 1)}.pt-12{padding-top:calc(var(--spacing) * 12)}.pr-14{padding-right:calc(var(--spacing) * 14)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-8{--tw-leading:calc(var(--spacing) * 8);line-height:calc(var(--spacing) * 8)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap{white-space:nowrap}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-800{color:var(--color-gray-800)}.text-primary{color:var(--color-primary)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.decoration-white\\/30{text-decoration-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.decoration-white\\/30{-webkit-text-decoration-color:color-mix(in oklab,var(--color-white) 30%,transparent);text-decoration-color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.underline-offset-2{text-underline-offset:2px}.opacity-75{opacity:.75}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring-gray-500\\/10{--tw-inset-ring-color:#6a72821a}@supports (color:color-mix(in lab,red,red)){.inset-ring-gray-500\\/10{--tw-inset-ring-color:color-mix(in oklab, var(--color-gray-500) 10%, transparent)}}.backdrop-blur-3xl{--tw-backdrop-blur:blur(var(--blur-3xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.kerning-none{font-kerning:none}@media(hover:hover){.group-hover\\:mr-0:is(:where(.group):hover *){margin-right:calc(var(--spacing) * 0)}.group-hover\\:max-w-96:is(:where(.group):hover *){max-width:calc(var(--spacing) * 96)}.group-hover\\:text-inherit:is(:where(.group):hover *){color:inherit}}.group-focus\\:mr-0:is(:where(.group):focus *){margin-right:calc(var(--spacing) * 0)}.group-focus\\:max-w-96:is(:where(.group):focus *){max-width:calc(var(--spacing) * 96)}.group-focus\\:text-inherit:is(:where(.group):focus *){color:inherit}.group-\\[\\.fab--extended\\]\\:mr-0:is(:where(.group).fab--extended *){margin-right:calc(var(--spacing) * 0)}.group-\\[\\.fab--extended\\]\\:max-w-96:is(:where(.group).fab--extended *){max-width:calc(var(--spacing) * 96)}.group-\\[\\.fab--extended\\]\\:text-inherit:is(:where(.group).fab--extended *){color:inherit}.before\\:absolute:before{content:var(--tw-content);position:absolute}.before\\:top-0:before{content:var(--tw-content);top:calc(var(--spacing) * 0)}.before\\:-bottom-1:before{content:var(--tw-content);bottom:calc(var(--spacing) * -1)}.before\\:-left-\\[calc\\(1\\.5rem\\+2\\.5px\\)\\]:before{content:var(--tw-content);left:calc(-1.5rem - 2.5px)}.before\\:left-0:before{content:var(--tw-content);left:calc(var(--spacing) * 0)}.before\\:hidden:before{content:var(--tw-content);display:none}.before\\:h-1:before{content:var(--tw-content);height:calc(var(--spacing) * 1)}.before\\:h-\\[19px\\]:before{content:var(--tw-content);height:19px}.before\\:w-\\[3ch\\]:before{content:var(--tw-content);width:3ch}.before\\:w-\\[19px\\]:before{content:var(--tw-content);width:19px}.before\\:-translate-x-1\\/2:before{content:var(--tw-content);--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.before\\:rounded-\\[0_0\\.25rem_0\\.25rem_0\\]:before{content:var(--tw-content);border-radius:0 .25rem .25rem 0}.before\\:rounded-full:before{content:var(--tw-content);border-radius:3.40282e38px}.before\\:border-4:before{content:var(--tw-content);border-style:var(--tw-border-style);border-width:4px}.before\\:border-primary:before{content:var(--tw-content);border-color:var(--color-primary)}.before\\:bg-primary:before{content:var(--tw-content);background-color:var(--color-primary)}.before\\:bg-white:before{content:var(--tw-content);background-color:var(--color-white)}@media(hover:hover){.hover\\:bg-black:hover{background-color:var(--color-black)}.hover\\:decoration-white\\/80:hover{text-decoration-color:#fffc}@supports (color:color-mix(in lab,red,red)){.hover\\:decoration-white\\/80:hover{-webkit-text-decoration-color:color-mix(in oklab,var(--color-white) 80%,transparent);text-decoration-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}}@media(min-width:40rem){.sm\\:flex-nowrap{flex-wrap:nowrap}}@media(min-width:48rem){.md\\:-mb-60{margin-bottom:calc(var(--spacing) * -60)}.md\\:ml-4{margin-left:calc(var(--spacing) * 4)}.md\\:h-80{height:calc(var(--spacing) * 80)}.md\\:border-l-\\[5px\\]{border-left-style:var(--tw-border-style);border-left-width:5px}.md\\:p-6{padding:calc(var(--spacing) * 6)}.md\\:pr-0{padding-right:calc(var(--spacing) * 0)}.md\\:pl-6{padding-left:calc(var(--spacing) * 6)}.md\\:before\\:block:before{content:var(--tw-content);display:block}}.dark\\:border-slate-700\\/50:where(.dark,.dark *){border-color:#31415880}@supports (color:color-mix(in lab,red,red)){.dark\\:border-slate-700\\/50:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-slate-700) 50%,transparent)}}.dark\\:bg-gray-700:where(.dark,.dark *){background-color:var(--color-gray-700)}.dark\\:bg-slate-800:where(.dark,.dark *){background-color:var(--color-slate-800)}.dark\\:bg-slate-900\\/95:where(.dark,.dark *){background-color:#0f172bf2}@supports (color:color-mix(in lab,red,red)){.dark\\:bg-slate-900\\/95:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-slate-900) 95%,transparent)}}.dark\\:bg-slate-950:where(.dark,.dark *){background-color:var(--color-slate-950)}.dark\\:text-slate-200:where(.dark,.dark *){color:var(--color-slate-200)}.dark\\:text-slate-300:where(.dark,.dark *){color:var(--color-slate-300)}.dark\\:text-slate-400:where(.dark,.dark *){color:var(--color-slate-400)}.dark\\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\\:opacity-90:where(.dark,.dark *){opacity:.9}.dark\\:shadow-2xl:where(.dark,.dark *){--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\\:ring-1:where(.dark,.dark *){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\\:ring-white\\/10:where(.dark,.dark *){--tw-ring-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.dark\\:ring-white\\/10:where(.dark,.dark *){--tw-ring-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.dark\\:inset-ring-white\\/10:where(.dark,.dark *){--tw-inset-ring-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.dark\\:inset-ring-white\\/10:where(.dark,.dark *){--tw-inset-ring-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.dark\\:contrast-125:where(.dark,.dark *){--tw-contrast:contrast(125%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.dark\\:saturate-50:where(.dark,.dark *){--tw-saturate:saturate(50%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.dark\\:before\\:bg-slate-900:where(.dark,.dark *):before{content:var(--tw-content);background-color:var(--color-slate-900)}@media print{.print\\:hidden{display:none}.print\\:rounded-none{border-radius:0}.print\\:bg-transparent{background-color:#0000}.print\\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.print\\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.print\\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.before\\:print\\:\\[print-color-adjust\\:exact\\]:before{content:var(--tw-content)}@media print{.before\\:print\\:\\[print-color-adjust\\:exact\\]:before{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.\\[\\&_a\\]\\:underline a{text-decoration-line:underline}}.dark{--color-primary:oklch(from var(--theme-primary) calc(l*.9) calc(c*.7) h)}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}';async function nn(e){const t=Er.parse(e);return qe(t.meta.lang),t.meta.themeConfig.ui.showLogos&&await Promise.all(t.work.filter(r=>!r.logo).map(async r=>{r.logo=await tn(r.url)})),`<!doctype html>${await Qr({resume:t,css:rn})}`}exports.render=nn;