.page-header[data-astro-cid-guvttfii]{font-size:3em;line-height:100%;font-family:var(--header-font);font-weight:700;margin:4rem 0 1rem}@media print{.page-header[data-astro-cid-guvttfii]{display:none}}.page-header[data-astro-cid-guvttfii] span[data-astro-cid-guvttfii]{color:var(--primary-color);font-size:1.6em}.callout{padding:24px;margin:32px 0;border-radius:8px;border-left:4px solid;background-color:var(--bg-1)}.callout-title{font-weight:600;margin-bottom:8px;display:flex;align-items:center;gap:8px}.callout-content p{margin:0}.callout-info{border-color:var(--text-1)}.callout-info .callout-title{color:var(--text-1)}.callout-warning{border-color:#ff9e64}.callout-warning .callout-title{color:#ff9e64}.callout-danger{border-color:#ff757f}.callout-danger .callout-title{color:#ff757f}.callout-success{border-color:#c3e88d}.callout-success .callout-title{color:#c3e88d}.callout-tip{border-color:#82aaff}.callout-tip .callout-title{color:#82aaff}.cards{gap:25px}.card{min-height:100px;background:var(--bg-1);border:1px solid var(--border-color);border-radius:8px;overflow:hidden;padding:24px;display:flex;flex-direction:column;break-inside:avoid;margin-bottom:24px}.card-preview{position:relative;width:100%;padding-top:66.67%;overflow:hidden}.card-preview img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}.card-title{margin:16px 0 8px}.card-link{font-family:var(--header-font);font-weight:700;font-size:1.5rem;margin:24px 0}.card-link a{border-bottom:none}.card-link:hover{background-color:unset;color:unset}.card-button{display:flex;justify-content:center;align-items:center;border-radius:8px;background-color:var(--bg-2);min-width:50px;min-height:3rem;margin-top:auto}.card-button svg{fill:var(--text-1)}@media(min-width:640px){.card{flex-direction:column}.card-button{width:100%;height:30px;margin-left:0}}code{background-color:var(--bg-1);border-radius:8px;font-family:var(--code-font);padding:.1em .2em;border:1px solid var(--border-color)}pre{background-color:var(--bg-1);border-radius:8px;font-family:var(--code-font)}pre::-webkit-scrollbar{width:16px}pre::-webkit-scrollbar-track{background-color:var(--bg-1)}pre::-webkit-scrollbar-thumb{background-color:var(--primary-color);margin:24px}pre{line-height:1.4;overflow-x:auto;padding:24px;position:relative;margin:0}pre mark{background-color:var(--hightlight-color)!important;padding:0;border-radius:0}pre code{background-color:transparent!important;color:var(--text-color);font-size:100%;padding:0;border:none}pre code table{margin:0;border-collapse:collapse;font-family:var(--code-font)}pre code table mark{display:block;color:unset;padding:0;background-color:var(--hightlight-color)!important;filter:brightness(1.2)}pre code td,pre code th,pre code tr{padding:0;border:none}pre code tbody td:first-child{text-align:center;user-select:none;min-width:60px;border-right:none}pre code tbody tr:nth-child(2n),pre code thead tr{background-color:unset}.code-container{border:1px solid var(--border-color);border-radius:8px;overflow:hidden;margin-bottom:24px}.code-footer{display:flex;justify-content:space-between;align-items:center;background:var(--bg-3);padding:8px 24px;border-top:1px solid var(--border-color)}.code-label{font-size:12px;color:var(--text-0)}.clipboard-button{background:var(--primary-color);color:var(--text-0);border:none;padding:.4em .8em;border-radius:4px;cursor:pointer;font-size:12px}.clipboard-button:hover{background:var(--primary-color-hover)}.cv-header{margin-bottom:2rem}.cv-header-content{display:flex;justify-content:space-between;align-items:center;gap:2rem}@media print{.cv-header-content{align-items:flex-start!important;text-align:left!important}}@media(max-width:768px){.cv-header-content{flex-direction:row;align-items:center;text-align:center}}.cv-header-info{flex:1}.cv-header-info h1{font-size:2.25rem;font-weight:700;margin-bottom:.5rem}@media print{.cv-header-info h1{color:#000!important}}.cv-header-info h2{font-size:1.5rem;color:var(--text-1);margin-bottom:1rem}@media print{.cv-header-info h2{color:#000!important}}.cv-header-info p{color:var(--text-1);margin-top:1rem}@media print{.cv-header-info p{color:#000!important}}.cv-header .cv-header-photo{flex-shrink:0}.cv-header .cv-header-photo img{width:200px;height:200px;border-radius:50%;object-fit:cover;object-position:30% 0%;overflow:hidden}.cv-projects{position:relative}.cv-projects:before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--theme-color)}.cv-projects-subtitle{display:flex;align-items:center;gap:1rem;margin:.5rem 0}.cv-projects-subtitle h4{margin:0;font-size:1.1rem;color:var(--text-1)}@media print{.cv-projects-subtitle h4{color:#000}}.cv-projects-item{position:relative;padding-left:2rem;margin-bottom:2rem}.cv-projects-item:before{content:"";position:absolute;left:-.5rem;top:.5rem;width:1rem;height:1rem;border-radius:50%;background:var(--theme-color)}.cv-contact{display:grid;gap:1rem}@media screen and (min-width:768px),print{.cv-contact{grid-template-columns:repeat(2,1fr)}}.cv-contact-item{display:flex;align-items:center;gap:1rem}.cv-contact-icon{font-size:1.5rem}.cv-contact-info{display:flex;flex-direction:column}.cv-contact-label{font-size:.875rem;color:var(--primary-color)}@media print{.cv-contact-label{color:#000!important}}.cv-contact-value{color:var(--text-0);text-decoration:none}@media print{.cv-contact-value{color:#000!important}}.cv-contact-value:hover{text-decoration:underline}.cv-skills{display:grid;gap:2rem}@media print{.cv-skills{gap:1rem;page-break-inside:avoid}}.cv-skills-category{margin-bottom:1rem}.cv-skills-category h3{margin-bottom:.5rem;color:var(--text-0)}@media print{.cv-skills-category h3{color:#000}}@media print{.cv-skills-category{margin-bottom:0;page-break-inside:avoid}}@media print{.cv .tags{display:flex;flex-wrap:wrap;margin:0}}@media print{.cv .tag{background:none;border:1px solid black;padding:.25rem .5rem;font-size:.9rem}}.cv-timeline{position:relative}.cv-timeline:before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--theme-color)}.cv-timeline-subtitle{display:flex;align-items:center;gap:1rem;margin:.5rem 0}.cv-timeline-subtitle h4{margin:0;font-size:1.1rem;color:var(--text-1)}@media print{.cv-timeline-subtitle h4{color:#000}}.cv-timeline-subtitle .cv-timeline-date{color:var(--text-1);font-size:.9rem;white-space:nowrap}@media print{.cv-timeline-subtitle .cv-timeline-date{color:#000}}.cv-timeline-item{position:relative;padding-left:2rem;margin-bottom:2rem}.cv-timeline-item:before{content:"";position:absolute;left:-.5rem;top:.5rem;width:1rem;height:1rem;border-radius:50%;background:var(--theme-color)}@font-face{font-family:Jetbrains Mono;font-style:normal;font-weight:400;src:url(/fonts/jetbrains-mono.ttf),local("ttf");font-display:swap}@font-face{font-family:Jetbrains Mono;font-style:normal;font-weight:700;src:url(/fonts/jetbrains-mono-bold.ttf),local("ttf");font-display:swap}@font-face{font-family:Rubik;font-style:normal;font-weight:400;src:url(/fonts/rubik.ttf),local("ttf");font-display:swap}@font-face{font-family:Rubik;font-style:normal;font-weight:700;src:url(/fonts/rubik-bold.ttf),local("ttf");font-display:swap}header{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;max-width:1400px;margin:30px auto;padding:0 24px}header .main{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;font-size:1.5rem;margin-bottom:5px}@media(max-width:650px){header{flex-direction:column;align-items:center}}@media print{header{display:none!important}}.socials a{border-bottom:unset}nav a{margin:5px}nav a:hover{background-color:var(--bg-2);color:var(--text-1)}h1,h2,h3,h4,h5,h6{font-family:var(--header-font);font-weight:700;line-height:1.2;margin:32px 0 16px;color:var(--text-1)}@media print{h1,h2,h3,h4,h5,h6{color:#000}}h1{font-size:2.4rem;border-bottom:2px solid var(--border-color);padding-bottom:8px;letter-spacing:-.02em}@media print{h1{font-size:2rem}}h2{font-size:1.9rem;border-left:4px solid var(--border-color);padding-left:16px;letter-spacing:-.01em}@media print{h2{font-size:1.6rem}}h3{font-size:1.5rem;color:var(--text-0);letter-spacing:0;margin-top:24px}@media print{h3{font-size:1.3rem}}h4{font-size:1.25rem;font-weight:600;color:var(--text-0);margin-top:24px}@media print{h4{font-size:1.1rem}}h5{font-size:1.1rem;font-weight:600;text-transform:uppercase;color:var(--text-1);letter-spacing:.04em}@media print{h5{font-size:1rem}}h6{font-size:1rem;font-weight:400;color:var(--text-1);text-transform:uppercase;letter-spacing:.06em;opacity:.85}@media print{h6{font-size:.9rem}}hr{border-color:var(--text-1)}div.image{box-sizing:border-box;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;margin:0 auto}div.image img{box-sizing:border-box;max-width:100%;max-height:600px;width:auto;height:auto;padding:0;margin:0 auto;display:block}div.image hr{width:80%;margin:24px auto}div.image p{text-align:center;font-family:var(--header-font);margin:16px auto}a{border-bottom:3px solid var(--border-color);color:inherit;text-decoration:none;position:relative;z-index:1;transition:all .15s ease}@media print{a{border:none}}.tags{display:flex;flex-wrap:wrap;align-items:center}.tag{background-color:var(--bg-2);border-radius:8px;padding:8px;margin-right:16px;margin-bottom:8px;display:inline-flex;align-items:center;justify-content:center;min-height:24px;border-bottom:unset;white-space:normal;word-break:break-word}.tag.tag-icon{width:24px;height:24px}.tag svg{fill:var(--text-1)}@media print{.tag{background:none!important}}.pagination{display:flex;flex-direction:row;justify-content:center;gap:20px}.pagination-button{background-color:var(--bg-2);border-radius:8px;padding:8px;margin-right:16px;margin-bottom:8px;display:inline-flex;align-items:center;justify-content:center;min-height:24px;border-bottom:unset;white-space:normal;word-break:break-word;background-color:unset;border:2px solid var(--bg-1)}.pagination-button.active{border:unset;background-color:var(--bg-1);color:var(--text-1)}.pagination-ellipsis{display:flex;align-items:center;justify-content:center;min-width:40px;height:40px;font-size:1rem;color:var(--text-2)}h1.toc-heading{font-family:var(--header-font);line-height:100%;margin:24px 0 16px;font-size:1.6rem;color:var(--text-1)}ul.toc-list{list-style:none;padding:0}ul.toc-list a{border:none}ul.toc-list a.active{background-color:var(--bg-2);padding:5px;border-radius:8px;color:var(--text-1);display:inline}ul.toc-sublist{margin-left:16px}:root{--text-0: #c8d3f5;--text-1: rgb(178.4230769231, 193.7384615385, 241.0769230769);--bg-0: #222436;--bg-1: rgb(43.8522727273, 46.4318181818, 69.6477272727);--bg-2: rgb(63.5568181818, 67.2954545455, 100.9431818182);--bg-3: rgb(53.7045454545, 56.8636363636, 85.2954545455);--bg-selection: #2d3f76;--text-selection: rgb(178.4230769231, 193.7384615385, 241.0769230769);--border-color: var(--bg-2);--primary-color: #444a73;--primary-color-hover: rgb(97.5819672131, 105.7950819672, 161.9180327869);--hover-color: #828bb8}:root .social>img{filter:invert(1)}:root{--text-font: "Jetbrains Mono";--header-font: "Rubik";--code-font: "Jetbrains Mono";--border-radius: 4px}:root::-webkit-scrollbar{width:13px}:root::-webkit-scrollbar-track{background-color:var(--bg-1)}:root::-webkit-scrollbar-thumb{background-color:var(--primary-color);margin:20px}html{background-color:var(--bg-0);color:var(--text-0);font-family:var(--text-font);line-height:1.6em}@media(min-width:640px){html{font-size:16.5px}}@media(min-width:720px){html{font-size:17px}}@media(min-width:1200px){html{font-size:18px}}@media print{html{color:#000;background-color:#fff;font-size:.9rem;margin:10px}}::selection{background-color:var(--bg-selection);color:var(--text-selection)}::-moz-selection{background-color:var(--bg-selection);color:var(--text-selection)}@media print{@page{@top-left{content:""}@top-center{content:""}@top-right{content:""}margin:0}}.content{max-width:1400px;margin:0 auto;padding:0 24px;word-wrap:break-word}.post-layout{display:flex;flex-direction:column;max-width:100%;margin:0 auto;padding:0 1.5rem;gap:1.5rem}@media(min-width:1200px){.post-layout{flex-direction:row;max-width:1200px;gap:2rem}}.post-layout .content{flex:1 1 auto;max-width:100%;word-wrap:break-word;padding:0 .5rem}@media(min-width:1200px){.post-layout .content{max-width:900px}}.post-layout aside{display:none}@media(min-width:1200px){.post-layout aside{display:block;flex:0 0 280px;position:sticky;top:1.5rem;align-self:flex-start;max-height:calc(100vh - 3rem);overflow-y:auto;padding-left:1rem}}
