@layer reset{*{box-sizing:border-box}body,html{margin:0;padding:0}img{display:block;max-width:100%}:root{color-scheme:light dark}}@layer tokens{:root{--font-family:"Poppins",sans-serif;--mm:5.714px;--page-m:0;--sidebar-w-mm:56;--sidebar-pad-mm:3.9;--content-pad-mm:4;--bg:#fafafa;--text:#1a1a1a;--muted:#555e68;--border:#8e9094;--card:#fff;--accent:#1e40af;--sidebar-bg:#e4e7ed;--sidebar-text:#1a1a1a;--page-max:1200px;--radius:12px;--s:.5rem;--m:1rem;--l:1.5rem;--xl:2.5rem;--fs-body:1rem;--h1:clamp(1.75rem,3vw,2.4rem);--h2:clamp(1.125rem,2.2vw,1.5rem);--h3:clamp(1rem,1.9vw,1.125rem);--avatar:128px;--avatar-ring:color-mix(in oklab,var(--accent) 35%,transparent)}[data-theme=dark]{--bg:#0b0f14;--text:#e6edf3;--muted:#9aa5b1;--border:#293547;--card:#0f1720;--accent:#60a5fa;--sidebar-bg:#101b2a;--sidebar-text:#e6edf3}}@layer base{html{font-size:16px}body{background:var(--bg);color:var(--text);font-family:var(--font-family);font-size:var(--fs-body);line-height:1.6}h1,h2,h3{font-weight:600;line-height:1.2}li,p{font-weight:400;line-height:1.5}.is-hidden{display:none!important}.topbar{backdrop-filter:blur(6px);background:color-mix(in oklab,var(--bg) 82%,transparent);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.topbar__inner{align-items:center;display:flex;gap:8px;margin:0 auto;max-width:min(100%,var(--page-max));padding:10px 16px}.topbar__inner .spacer{flex:1}.topbar .btn,.topbar .lang-link{align-items:center;background:var(--card);border:1px solid var(--border);border-radius:8px;color:var(--text);cursor:pointer;display:inline-flex;height:38px;justify-content:center;line-height:38px;font:inherit;padding:0 .75rem;text-decoration:none}.topbar .btn:hover,.topbar .lang-link:hover{text-decoration:underline}.lang-switch{align-items:center;display:inline-flex;gap:6px}.lang-switch .sep{opacity:.5}.lang-link.is-active{background:color-mix(in oklab,var(--accent) 15%,var(--card));border:2px solid var(--accent);color:var(--accent)}.topbar .icon-btn{background:var(--card);border:1px solid var(--border);border-radius:8px;color:var(--text);cursor:pointer;display:grid;height:38px;place-items:center;width:38px}.viewport{display:grid;padding:24px 16px 48px;place-items:start center}}@media screen and (hover:none) and (pointer:coarse){#printBtn{display:none!important}}@supports (-webkit-touch-callout:none){#printBtn{display:none!important}}[data-ios=true] #printBtn{display:none!important}@layer layout{.page{aspect-ratio:210/297;background:var(--bg);border:1px solid var(--border);border-radius:16px;box-shadow:0 10px 30px rgba(0,0,0,.08);color:var(--text);display:grid;grid-template-columns:calc(var(--sidebar-w-mm)*var(--mm)) 1fr;min-height:100%;overflow:hidden;padding:calc(var(--page-m)*var(--mm));position:relative;width:min(100%,var(--page-max))}}@layer components{.sidebar{background:var(--sidebar-bg);color:var(--sidebar-text);display:flex;flex-direction:column;padding:calc(var(--sidebar-pad-mm)*var(--mm));position:relative}.sidebar:after{background:color-mix(in oklab,var(--accent) 60%,transparent);content:"";height:100%;pointer-events:none;position:absolute;right:-1px;top:0;width:2px}.sidebar__inner{display:grid;gap:8px;justify-items:start;position:relative;text-align:left;z-index:1}.sidebar .section{border:0!important;border-bottom:.35pt solid var(--border)!important;box-shadow:none!important}.avatar{aspect-ratio:1/1;border:2px solid var(--border);border-radius:50%;box-shadow:0 0 0 4px var(--avatar-ring);margin-inline:auto;overflow:hidden;width:var(--avatar)}.avatar img{display:block;height:100%;object-fit:cover;width:100%}.name{font-size:var(--h1);font-weight:800;margin:0}.role{font-weight:600;margin:0}.sidebar-contacts a,.sidebar-contacts time{white-space:nowrap}.contact-list{display:grid;gap:6px;list-style:none;margin:0;padding:0}.contact-item{align-items:center;display:flex;gap:8px}.contact-item.address{align-items:flex-start}.contact-item.address .icon{margin-top:2px}.sidebar address{font-style:normal;line-height:1.4;margin:0}.sidebar-contacts a,.sidebar-contacts a:visited{color:var(--sidebar-text);text-decoration:none}.sidebar-contacts a:focus-visible,.sidebar-contacts a:hover{text-decoration:underline}.sidebar-subtitle{color:var(--muted);font-size:.8125rem;letter-spacing:.08em;margin:12px 0 6px;text-transform:uppercase}.icon{color:currentColor;font-size:1.125rem;line-height:1;text-align:center;width:1.2em}.social-list,.tool-list{display:grid;gap:6px;list-style:none;margin:0;padding:0}.social-list a,.tool-list a{align-items:center;color:inherit;display:inline-flex;gap:8px;text-decoration:none}.social-list a:hover,.tool-list a:hover{text-decoration:underline}}sidebar-languages{.language{align-items:center;display:flex;margin-bottom:var(--s);.flag{border-radius:2px;flex-shrink:0;height:auto;margin-right:var(--s);width:20px}.info{flex:1;span{display:block;font-size:.9rem;margin-bottom:4px}.bar{background:var(--border);border-radius:4px;height:6px;overflow:hidden;div{background:var(--accent);height:100%}}}}}.sidebar-languages .language{align-items:center;display:flex;margin-bottom:var(--s)}.sidebar-languages .info{flex:1}.sidebar-languages .bar{background:var(--border);border-radius:3px;height:6px;margin-top:4px;overflow:hidden;width:100%}.sidebar-languages .bar>div{background:var(--accent);height:100%}.sidebar-languages .flag{border-radius:2px;flex-shrink:0;height:auto;margin-right:var(--s);width:20px}.sidebar-altre-info{margin-bottom:var(--sidebar-section-gap)}.sidebar-altre-info h2{align-items:center;color:var(--sidebar-text);display:flex;font-size:var(--h2);margin-bottom:.5rem}.section-icon{color:var(--accent);font-size:1.1em;margin-right:.5rem}.sidebar-altre-info .info-list{list-style:none;margin:0;padding:0}.sidebar-altre-info .info-list li{color:var(--sidebar-text);font-size:.9rem;line-height:1.4;margin-bottom:.5rem}.sidebar-altre-info .info-list strong{font-weight:600}.pc-specs{color:var(--muted);display:block;font-size:.85em;margin-top:2px}.sidebar-footer{font-size:.9rem;margin-top:auto;padding-top:4px;width:100%}.sidebar-footer .sign-row{align-items:center;border-bottom:1px solid var(--border);box-shadow:inset 0 -1px 0 rgba(0,0,0,.05);display:flex;margin-top:6px;padding-bottom:4px;width:100%}.sidebar-footer .signature img{margin-left:24px;max-height:50px}@layer components{.content{background:var(--bg);flex:1;height:100%;padding:calc(var(--content-pad-mm)*var(--mm));position:relative;z-index:1}.content-wrapper{display:flex;flex-direction:column}.content-subtitle{padding-top:12px}.section{box-shadow:inset 0 -1px 0 color-mix(in oklab,var(--border) 100%,transparent);padding-block:4px 8px;width:100%}.section h2{align-items:center;display:flex;font-size:var(--h2);font-weight:700;gap:8px;margin:0 0 8px}.summary{color:var(--text)}.tags,p.summary{margin:0}.tags{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0}.tags li{background:color-mix(in oklab,var(--accent) 12%,transparent);border:1px solid var(--border);border-radius:999px;font-size:.875rem;padding:6px 10px}.xp{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:14px}.xp+.xp{margin-top:10px}.xp__head{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between}.xp__role{font-size:var(--h3);font-weight:700;margin:0}.xp__meta{color:var(--muted)}.xp__list{margin:6px 0 0 16px}.xp__stack{color:var(--muted);font-size:.875rem;margin:6px 0 0}.two-col{display:grid;gap:16px;grid-template-columns:1fr 1fr}}.edu-timeline{display:grid;gap:8px;list-style:none;margin:0;padding:0}.edu-timeline .edu-item{background:var(--card);border:1px solid var(--border);border-radius:12px;break-inside:avoid;padding-left:18px;padding-block:12px;padding-right:12px;position:relative}.edu-timeline .edu-item:before{background:color-mix(in oklab,var(--accent) 70%,transparent);border-radius:2px;bottom:0;content:"";left:8px;position:absolute;top:0;width:3px}.edu-timeline .edu-item:after{background:var(--bg);border-radius:50%;box-shadow:0 0 0 3px var(--accent);content:"";height:12px;left:3px;position:absolute;top:14px;width:12px}.edu-head{align-items:baseline;display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between}.edu-title{align-items:center;display:inline-flex;font-weight:700;gap:8px;padding-left:16px}.edu-meta,.edu-school{color:var(--muted);font-size:.95rem}.edu-school{margin-top:4px}.edu-logo{background:color-mix(in srgb,var(--card) 80%,#000 20%);border-radius:4px;height:34px;padding:4px;vertical-align:middle;width:auto}[data-theme=dark] .edu-logo{background:color-mix(in srgb,var(--card) 30%,#fff 70%)}.edu-timeline .edu-item:last-child:before{bottom:8px}.xp-timeline{display:grid;gap:8px;list-style:none;margin:0;padding:0}.xp-timeline .xp-item{background:var(--card);border:1px solid var(--border);border-radius:12px;break-inside:avoid;padding-left:18px;padding-block:12px;padding-right:12px;position:relative}.xp-timeline .xp-item:before{background:color-mix(in oklab,var(--accent) 70%,transparent);border-radius:2px;bottom:0;content:"";left:8px;position:absolute;top:0;width:3px}.xp-timeline .xp-item:after{background:var(--bg);border-radius:50%;box-shadow:0 0 0 3px var(--accent);content:"";height:12px;left:3px;position:absolute;top:14px;width:12px}.xp-head{align-items:baseline;display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between}.xp-title{align-items:center;display:inline-flex;font-weight:700;gap:8px;padding-left:16px}.xp-company,.xp-meta{color:var(--muted);font-size:.95rem}.xp-company{margin-top:4px}.xp-desc{font-size:.95rem;line-height:1.5;margin:6px 0 0}.xp-logo{background:var(--card);border-radius:6px;display:inline-block;height:20px;padding:2px 4px;vertical-align:middle;width:auto}.xp-timeline .xp-item:last-child:before{bottom:8px}.privacy{color:var(--muted);display:flex;font-size:.775rem;justify-content:flex-end}.footer{align-items:center;display:flex;flex-direction:row;justify-content:space-between;margin-bottom:8px;margin-top:auto;padding-left:14px;padding-right:14px}.content-skills{display:grid;gap:8px 20px;grid-template-columns:repeat(2,1fr)}.content-skills .content-subtitle{grid-column:1/-1;margin-bottom:10px}.skill-block{align-items:start;background:var(--card);border:1px solid var(--border);border-radius:12px;display:grid;gap:10px;padding:12px}.skill-title{align-items:center;font-size:var(--h3)}.skill-tags,.skill-title{display:flex;gap:8px;margin:0}.skill-tags{align-self:start;flex-wrap:wrap;list-style:none;padding:0}.skill-tags li{background:color-mix(in oklab,var(--accent) 12%,transparent);border:1px solid var(--border);border-radius:999px;font-size:.9rem;line-height:1;padding:6px 10px}.skill-levels{display:grid;gap:6px}.skill-row{align-items:center;display:grid;gap:10px;grid-template-columns:120px 1fr}.skill-row span{color:var(--muted);font-size:.95rem}.skill-row .bar{background:var(--border);border-radius:999px;height:8px;overflow:hidden}.skill-row .bar>div{background:var(--accent);border-radius:999px;height:100%}@layer utilities{.social-list .icon,.tool-list .icon{transition:color .15s ease}@media screen{:root{--gh:#181717;--li:#0a66c2;--x:#000;--ig:#e4405f;--fb:#1877f2;--rd:#ff4500;--trello:#0079bf;--figma:#f24e1e;--canva:#00c4cc;--so:#f48024;--openai:#10a37f;--vscode:#007acc}.social-list a:focus-visible .fa-github,.social-list a:hover .fa-github{color:var(--gh)}.social-list a:focus-visible .fa-linkedin,.social-list a:hover .fa-linkedin{color:var(--li)}.social-list a:focus-visible .fa-x-twitter,.social-list a:hover .fa-x-twitter{color:var(--x)}.social-list a:focus-visible .fa-instagram,.social-list a:hover .fa-instagram{color:var(--ig)}.social-list a:focus-visible .fa-facebook,.social-list a:hover .fa-facebook{color:var(--fb)}.social-list a:focus-visible .fa-reddit-alien,.social-list a:hover .fa-reddit-alien{color:var(--rd)}.tool-list a:focus-visible .fa-trello,.tool-list a:hover .fa-trello{color:var(--trello)}.tool-list a:focus-visible .fa-figma,.tool-list a:hover .fa-figma{color:var(--figma)}.tool-list a:focus-visible .fa-palette,.tool-list a:hover .fa-palette{color:var(--canva)}.tool-list a:focus-visible .fa-stack-overflow,.tool-list a:hover .fa-stack-overflow{color:var(--so)}.tool-list a:focus-visible .fa-openai,.tool-list a:focus-visible .fa-robot,.tool-list a:hover .fa-openai,.tool-list a:hover .fa-robot{color:var(--openai)}.tool-list a:focus-visible .fa-code,.tool-list a:hover .fa-code{color:var(--vscode)}}}@layer responsive{@media (min-width:1200px){.page{aspect-ratio:210/297;border-radius:16px;overflow:hidden;width:min(100%,var(--page-max))}.viewport{display:grid;padding:24px 16px 48px;place-items:start center}}@media (max-width:1199px){.viewport{display:block;padding:0}.page{aspect-ratio:auto;border-radius:0;height:auto;max-width:100%;min-height:100dvh;overflow:visible;width:100%}}@media screen and (max-width:900px){.content-skills{grid-template-columns:1fr!important}.footer{align-items:flex-start!important;flex-direction:column!important}}@media (max-width:720px){.page{grid-template-columns:1fr}.sidebar{padding-bottom:16px}.sidebar:after{display:none}.content{padding-top:12px}.sidebar__inner{gap:8px}.sidebar-subtitle{margin:8px 0 4px}.edu-timeline .edu-item,.xp-timeline .xp-item{padding:10px}}}@layer components{.pf-toolbar{align-items:start;display:grid;gap:12px;grid-template-columns:1fr}.pf-search{background:var(--card);border:1px solid var(--border);border-radius:10px;color:var(--text);font:inherit;padding:10px 12px;width:100%}.pf-filters{display:flex;flex-wrap:wrap;gap:8px}.pf-chip{background:color-mix(in oklab,var(--accent) 10%,transparent);border:1px solid var(--border);border-radius:999px;color:var(--text);cursor:pointer;font-size:.9rem;padding:6px 10px;user-select:none}.pf-chip[aria-pressed=true]{background:color-mix(in oklab,var(--accent) 25%,transparent);border-color:color-mix(in oklab,var(--accent) 50%,var(--border))}.pf-sort{align-items:center;color:var(--muted);display:inline-flex;font-size:.9rem;gap:8px}.pf-sort select{background:var(--card);border:1px solid var(--border);border-radius:8px;color:var(--text);font:inherit;padding:6px 10px}.projects-grid{display:grid;gap:14px;grid-template-columns:repeat(3,1fr)}@media (max-width:1100px){.projects-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:700px){.projects-grid{grid-template-columns:1fr}}.project-card{background:var(--card);border:1px solid var(--border);border-radius:12px;display:grid;gap:10px;overflow:clip}.project-thumb{aspect-ratio:16/9;background:#0001;object-fit:cover;width:100%}.project-body{display:grid;gap:8px;padding:10px 12px}.project-title{align-items:center;display:flex;font-size:1rem;font-weight:700;gap:8px;margin:0}.project-desc{color:var(--muted);font-size:.95rem;margin:0}.project-tags{align-self:start;display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}.project-tags li{background:color-mix(in oklab,var(--accent) 12%,transparent);border:1px solid var(--border);border-radius:999px;font-size:.9rem;line-height:1;padding:6px 10px}.project-cta{display:flex;gap:8px;margin-top:2px}.project-cta a{align-items:center;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);display:inline-flex;font-size:.9rem;gap:6px;height:38px;padding:6px 10px;text-decoration:none}.project-cta a:hover{text-decoration:underline}.pf-empty{color:var(--muted);margin-top:6px}}.pf-tools{align-items:center;color:var(--muted);display:flex;gap:8px}#pf-count{font-size:.9rem}#pf-clear{background:transparent}@layer print{@page{size:A4;margin:0}@media print{html{font-size:9px!important}body{line-height:1.45;-webkit-print-color-adjust:exact;print-color-adjust:exact}body,html{background:#fff}:root{--mm:1mm;--sidebar-w-mm:60;--sidebar-pad-mm:3.5;--content-pad-mm:4.5;--avatar:22mm;--bg:#fafafa;--text:#1a1a1a;--muted:#555e68;--border:#9aa0a6;--card:#fff;--accent:#1e40af;--sidebar-bg:#e4e7ed;--sidebar-text:#1a1a1a;--h1:1.9rem;--h2:1.2rem;--h3:1.05rem}.topbar{display:none!important}.page,.viewport{box-shadow:none!important;padding:0!important}.page{aspect-ratio:auto;background:var(--bg)!important;border:.75pt solid var(--border);border-radius:16px;grid-template-columns:calc(var(--sidebar-w-mm)*var(--mm)) 1fr;margin:0!important;min-height:297mm!important;overflow:hidden;width:210mm!important}.section h2{margin:0}.sidebar__inner{gap:4px}.sidebar-subtitle{margin:4px 0!important}.sidebar{background:var(--sidebar-bg);padding:calc(var(--sidebar-pad-mm)*var(--mm))!important}.content{padding:calc(var(--content-pad-mm)*var(--mm))!important}.content .section{border:0!important;border-bottom:none!important;box-shadow:none!important;padding-block:0!important}.content .section:last-child{border-bottom:0!important}.content{padding-bottom:0!important}.content-subtitle{padding-top:6px!important}.sidebar .section{border:0!important;border-bottom:.35pt solid var(--border)!important;box-shadow:none!important;padding-block:4px 6px!important}.edu-list,.xp-list{row-gap:8px}.edu-item,.xp-item{break-inside:avoid;padding:8px;page-break-inside:avoid}.edu-head,.xp-head{margin-bottom:4px}.edu-timeline .edu-item:before,.xp-timeline .xp-item:before{width:2px}.edu-timeline .edu-item:after,.xp-timeline .xp-item:after{height:10px;left:4px;top:12px;width:10px}.content-skills{gap:12px 10px;padding-bottom:0!important}.skill-block{break-inside:avoid;gap:4px;padding:8px;page-break-inside:avoid}.skill-title{font-size:1.05rem}.skill-tags{gap:6px}.skill-tags li{font-size:.85rem;padding:4px 8px}.skill-levels{gap:4px}.skill-row{gap:6px!important;grid-template-columns:60px 1fr!important}.skill-row span{font-size:.85rem}.skill-row .bar{height:6px}.icon{font-size:.95rem}.footer{break-inside:avoid;margin-top:6mm;page-break-inside:avoid}.footer .privacy{font-size:.85rem;margin-top:2mm}.social-list .icon,.tool-list .icon{color:currentColor}img,svg{height:auto;max-width:100%}.social-list a:after,.tool-list a:after{content:" " attr(data-print);font-size:.9em}.social-list a span,.tool-list a span{display:none}}}@media print and (max-device-width:820px){@supports (-webkit-touch-callout:none){:root{--ios-m:10mm}@page{size:A4;margin:var(--ios-m)}html{font-size:8.8px!important}.page{aspect-ratio:auto;background:var(--bg)!important;border:.75pt solid var(--border);border-radius:16px;box-shadow:none!important;height:calc(297mm - var(--ios-m)*2)!important;margin:0 auto!important;min-height:auto!important;overflow:clip;padding:0!important;width:calc(210mm - var(--ios-m)*2)!important}.content{padding-bottom:0!important}.footer{margin-bottom:0!important;margin-top:4mm}.sidebar__inner{gap:4px}}}