*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f7f6f3;--surface:#fff;--text:#1a1a1a;--muted:#6b6b6b;--accent:#c8392b;--border:#e5e3df;--nav-w:260px;--serif:"DM Serif Display",Georgia,serif;--sans:"DM Sans",sans-serif;--mono:"JetBrains Mono",monospace}html{scroll-behavior:smooth;scroll-padding-top:85px}body{color:var(--text);display:flex;font-family:var(--sans);min-height:100vh;padding-top:83px}.m-topbar{align-items:center;background-color:#00308d;display:flex;gap:10px;left:0;padding:6px 40px;position:fixed;right:0;top:0;z-index:100}.m-topbar-logo{height:60px;margin-bottom:6px;width:60px}.m-topbar-label{white-space:nowrap}.m-topbar-expand{border-right:1px solid #295b7f;padding-right:12px;text-align:center}.m-topbar-arrow{color:#fff;font-family:var(--mono);font-size:.8rem;line-height:1.2;vertical-align:bottom}.m-topbar-nav{display:flex;font-family:var(--mono);gap:20px;list-style:none}#project-expand,.m-topbar-nav a{align-items:center;border-radius:6px;color:#fff;display:flex;font-size:.85rem;font-weight:400;gap:10px;letter-spacing:.01em;padding:9px 12px;text-decoration:none;transition:all .15s}.m-topbar-nav a.active,.m-topbar-nav a:hover{background:var(--bg);background:rgba(125,190,255,.18);color:#cfe6ff}.m-topbar-nav a.active{font-weight:500}.m-topbar-panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s ease}.m-topbar-panel-inner{display:flex;gap:24px;min-height:0;opacity:0;overflow:hidden;padding:0 40px;transition:opacity .25s ease,padding .35s ease}.m-topbar.is-open .m-topbar-panel{box-shadow:0 16px 32px rgba(0,0,0,.08);grid-template-rows:1fr}.m-topbar.is-open .m-topbar-panel-inner{opacity:1;padding:8px 40px 12px}.m-topbar-panel-col{flex:1 1 240px;max-width:none}.m-topbar-panel-col h3{color:#fff;font-family:var(--serif);font-size:1.2rem;margin:0 0 8px}.m-topbar-panel-col p{color:#bababa;font-size:.85rem;line-height:1.6;margin:0 0 12px}.m-topbar-panel-link{color:#f7e900;font-size:.8rem;text-decoration:none}.m-topbar-panel-link:hover{color:#000}.m-topbar-panel-card{background:#fff;border:1px solid #e5e5e5;border-radius:6px;color:#1a1a1a;display:flex;flex-direction:column;gap:4px;padding:16px;text-decoration:none;transition:border-color .15s;width:220px}.m-topbar-panel-card:hover{border-color:#c0392b}.m-topbar-panel-card span{color:#888;font-size:.78rem}.m-topbar-side-logo{height:24px;width:auto}.m-topbar-side-logo:hover{background-color:#0b004d}.nav-icon{flex-shrink:0;height:16px;opacity:.5;width:16px}.nav a.active .nav-icon,.nav a:hover .nav-icon{opacity:1}.m-topbar-side{align-items:center;flex-direction:column;margin-left:auto}.m-topbar-side,.social-links{display:flex;gap:12px}.social-links a{color:#fff;font-family:var(--mono);font-size:.6rem;letter-spacing:.04em;text-decoration:none;text-transform:uppercase;transition:color .15s}.social-links a:hover{color:var(--accent)}.availability,.email{align-items:center;color:#fff;display:flex;font-size:.75rem;gap:8px}.availability{line-height:1}.availability-dot{animation:pulse 2s ease-in-out infinite;background:#2ecc71;border-radius:50%;flex:none;flex-shrink:0;height:7px;width:7px}.m-topbar-cv{align-items:center;display:flex;flex-direction:column;gap:4px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.main{background:#fff;border-left:1px solid grey;border-right:1px solid grey;flex:1;margin:0 auto;max-width:900px;padding:40px}.section{animation:fadeUp .5s ease forwards;margin-bottom:96px;opacity:0;transform:translateY(20px)}.section:first-child{animation-delay:.05s}.section:nth-child(2){animation-delay:.15s}.section:nth-child(3){animation-delay:.25s}.section:nth-child(4){animation-delay:.35s}.section:nth-child(5){animation-delay:.45s}@keyframes fadeUp{to{opacity:1;transform:translateY(0)}}.section-label{align-items:center;color:var(--muted);display:flex;font-size:.7rem;gap:12px;letter-spacing:.12em;margin-bottom:24px;text-transform:uppercase}.section-label:after{background:var(--border);content:"";flex:1;height:1px}.main-title{font-family:var(--serif);font-size:clamp(2.5rem,5vw,3.75rem);letter-spacing:-.02em;line-height:1.1;margin-bottom:24px}.main-title em{color:var(--muted);font-style:italic}.main-text{color:#000;font-size:1.05rem;font-weight:300;line-height:1.75;margin-bottom:36px}.introduction{align-items:center;display:flex;gap:40px}.photo-intro{border-radius:12px;flex-shrink:0;margin-bottom:12px;width:220px}.photo-intro,.photo-volley{height:400px;object-fit:cover}.photo-volley{width:600px}#competences{max-height:calc(100vh - 180px);opacity:0;overflow-y:auto;pointer-events:none;position:fixed;right:24px;top:150px;transform:translateX(20px);transition:opacity .25s ease,transform .25s ease,visibility .25s;visibility:hidden;width:230px;z-index:10}#competences.is-visible{opacity:1;pointer-events:auto;transform:translateX(0);visibility:visible}.skills-grid{background:var(--border);border:1px solid var(--border);border-radius:10px;display:grid;gap:1px;grid-auto-rows:11vh;grid-template-columns:1fr;margin:0 auto 12px;overflow:hidden;text-align:center}.skill-card{align-items:center;background:var(--surface);display:flex;flex-direction:column;height:100%;justify-content:center;padding:0;transition:background .15s}.skill-card:hover,.skill-icon{background:var(--bg)}.skill-icon{border-radius:8px;display:flex;height:80%;max-width:80%;object-fit:contain;width:auto}.skill-name{font-size:.9rem;font-weight:500;margin-bottom:4px}.skill-card{border:none;color:inherit;cursor:pointer;font:inherit;text-align:center}.skill-card.is-active{background:var(--bg);box-shadow:inset 0 -3px 0 #c0392b}.skill-card:focus-visible{outline:2px solid #c0392b;outline-offset:-2px}.skill-description{min-height:110px}.skill-description-title{font-family:var(--serif);margin:0 0 8px}.skill-description-area{align-items:center;display:flex;gap:40px;min-height:160px}.skill-description-body{flex:1;min-width:0}.skill-description-image{flex-shrink:0;height:400px;object-fit:contain;width:400px}@media (max-width:768px){.skill-description-area{align-items:flex-start;flex-direction:column}html{scroll-padding-top:0}}.timeline{display:flex;flex-direction:column;gap:0}.timeline-item{border-bottom:1px solid var(--border);display:grid;gap:24px;grid-template-columns:140px 1fr;padding:28px 0}.timeline-item:last-child{border-bottom:none}.timeline-date{color:var(--muted);font-size:.78rem;letter-spacing:.02em;padding-top:3px}.timeline-company{color:var(--accent);font-size:.78rem;font-weight:500;letter-spacing:.06em;margin-bottom:4px;text-transform:uppercase}.timeline-role{font-size:1rem;font-weight:500;margin-bottom:8px}.timeline-desc{color:var(--muted);font-size:.875rem;line-height:1.65}.timeline-project-description{color:#000;font-size:.875rem;line-height:1.65;padding:10px}.timeline-content{flex:1}.timeline-header{margin-bottom:12px}.timeline-team{color:#888;font-size:.82rem;font-style:italic}.timeline-project,.timeline-team{margin-bottom:16px}.timeline-project-title{color:#c0392b;font-size:.78rem;font-weight:600;letter-spacing:.06em;margin-bottom:8px;text-transform:uppercase}.timeline-list{display:flex;flex-direction:column;gap:6px;margin:0;padding-left:18px}.timeline-list li{color:#444;font-size:.88rem;line-height:1.6}.timeline-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}.timeline-tag{background:#f5f5f5;border:1px solid #e0e0e0;border-radius:2px;color:#666;font-size:.72rem;letter-spacing:.04em;padding:3px 10px}.projects-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.project-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;color:inherit;display:block;padding:28px;text-decoration:none;transition:all .2s}.project-card:hover{border-color:var(--text);box-shadow:0 8px 24px rgba(0,0,0,.07);transform:translateY(-2px)}.project-tag{color:var(--accent);display:inline-block;font-size:.7rem;font-weight:500;letter-spacing:.08em;margin-bottom:12px;text-transform:uppercase}.project-title{font-family:var(--serif);font-size:1.2rem;line-height:1.3;margin-bottom:10px}.project-desc{color:var(--muted);font-size:.835rem;line-height:1.6;margin-bottom:20px}.project-stack{display:flex;flex-wrap:wrap;gap:6px}.stack-badge{background:var(--bg);border:1px solid var(--border);border-radius:20px;color:var(--muted);font-size:.7rem;padding:3px 9px}.contact-block{align-items:center;background:var(--text);border-radius:12px;color:#fff;display:flex;gap:24px;justify-content:space-between;padding:48px}.contact-title{font-family:var(--serif);font-size:2rem;line-height:1.2;margin-bottom:8px}.contact-sub{font-size:.9rem;opacity:.5}.mobile-nav{display:none}@media (max-width:768px){html{overflow-x:clip}body{display:block;padding-top:0}.main{border-left:none;border-right:none;max-width:100%;min-width:0;padding:24px 16px;width:100%}.introduction{align-items:flex-start;flex-direction:column;gap:24px}.photo-intro{aspect-ratio:3/4;max-width:280px}.photo-intro,.photo-volley,.skill-description-image{height:auto;width:100%}.main-title{overflow-wrap:anywhere}.m-topbar{display:none}.timeline-item{gap:8px;grid-template-columns:minmax(0,1fr)}.timeline-list li{overflow-wrap:anywhere}.projects-grid{grid-template-columns:minmax(0,1fr)}#competences{max-height:none;opacity:1;overflow:visible;pointer-events:auto;position:static;transform:none;visibility:visible;width:auto}.skills-grid{grid-auto-rows:72px;grid-template-columns:repeat(4,minmax(0,1fr))}.mobile-nav{background:#00308d;border-top:1px solid #e5e5e5;bottom:0!important;justify-content:space-around;left:0!important;overflow:hidden!important;padding:8px 0 16px;position:fixed!important;right:0!important;width:100%!important;z-index:9999!important}.mobile-nav,.mobile-nav-item{align-items:center;display:flex}.mobile-nav-item{color:#fff;flex:1;flex-direction:column;font-size:.55rem;gap:4px;letter-spacing:.04em;min-width:0;padding:2px 4px;text-decoration:none;transition:color .15s}.mobile-nav-item span{max-width:100%;text-overflow:ellipsis;white-space:nowrap}.mobile-nav-item.active,.mobile-nav-item:hover{color:#c0392b}.mobile-nav-item svg{height:18px;width:18px}body{padding-bottom:70px}}@media (max-width:1100px){.m-topbar-label{font-size:.55rem}.m-topbar-section{align-content:center;display:flex;flex-direction:column}.m-topbar-panel-description{display:none}.m-topbar-nav .nav-icon{height:26px;width:26px}.m-topbar-nav a{justify-content:center;padding:10px 14px}.availability,.m-topbar-side .email{display:none}.m-topbar-side-logo{height:24px;width:24px}}.tech-bg{--tech-opacity:0.12;--tech-size:10vw;--tech-gap:6vw;align-content:center;display:grid;gap:var(--tech-gap);grid-auto-rows:var(--tech-size);grid-template-columns:repeat(auto-fill,var(--tech-size));inset:0;justify-content:center;overflow:hidden;padding-top:83px;pointer-events:none;position:fixed;user-select:none;z-index:-1}.tech-bg img{height:var(--tech-size);object-fit:contain;opacity:var(--tech-opacity);width:var(--tech-size)}.tech-bg img:nth-child(2n){transform:translateY(24px)}@media (max-width:768px){.tech-bg{display:none}}.site-footer{background:#003087;color:#fff;font-family:JetBrains Mono,monospace;font-size:.8rem;margin-top:80px}.site-footer-inner{display:flex;flex-wrap:wrap;gap:32px;justify-content:space-between;margin:0 auto;max-width:1100px;padding:40px 24px 28px}.site-footer-brand{display:flex;flex-direction:column;gap:6px}.site-footer-brand span{color:hsla(0,0%,100%,.7)}.site-footer-links,.site-footer-nav{display:flex;flex-direction:column;gap:8px}.site-footer a{color:hsla(0,0%,100%,.85);text-decoration:none;transition:color .15s}.site-footer a:focus-visible,.site-footer a:hover{color:#fff;text-decoration:underline}.site-footer-bottom{border-top:1px solid hsla(0,0%,100%,.15);color:hsla(0,0%,100%,.6);display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;margin:0 auto;max-width:1100px;padding:16px 24px}@media (max-width:768px){.site-footer-bottom{flex-direction:column}}.legal{background:#fff;border:1px solid #e5e5e5;border-radius:12px;color:#333;font-size:.95rem;line-height:1.75;margin:60px auto 80px;max-width:760px;padding:48px 56px}.legal h1{border-bottom:1px solid #e5e5e5;font-size:2.2rem;line-height:1.2;margin:0 0 8px;padding-bottom:20px}.legal h1,.legal h2{color:#1a1a1a;font-family:var(--serif)}.legal h2{font-size:1.15rem;margin:36px 0 8px}.legal h2:before{background:#c0392b;content:"";display:inline-block;height:2px;margin-right:10px;vertical-align:middle;width:18px}.legal p{margin:0 0 12px}.legal a{border-bottom:1px solid rgba(192,57,43,.3);color:#c0392b;text-decoration:none;transition:border-color .15s}.legal a:focus-visible,.legal a:hover{border-bottom-color:#c0392b}@media (max-width:768px){.legal{margin:24px 16px 100px;padding:28px 22px}.legal h1{font-size:1.7rem}}body.project-lol-tracker{background-attachment:fixed;background-image:url(/build/images/background-lol.1734403d.jpg);background-position:50%;background-repeat:no-repeat;background-size:cover}.project-page{min-width:0;overflow-wrap:anywhere}.project-page .section{margin-bottom:72px}.project-page .section-label{margin-bottom:24px}.project-page p{color:#333;font-size:1rem;line-height:1.75;margin-bottom:14px;max-width:68ch}.project-page ul{display:flex;flex-direction:column;gap:12px;list-style:none;margin:0 0 20px;padding:0}.project-page li{color:#333;line-height:1.65;max-width:68ch;padding-left:24px;position:relative}.project-page li:before{background:var(--accent);content:"";height:2px;left:0;position:absolute;top:.8em;width:12px}.project-page .tech-group{color:var(--muted);font-family:var(--mono);font-size:.75rem;font-weight:500;letter-spacing:.1em;margin:28px 0 12px;text-transform:uppercase}.project-page .tech-group:first-of-type{margin-top:0}.project-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.project-page img{border-radius:10px;height:auto;max-width:100%}@media (max-width:768px){.project-page .section{margin-bottom:48px}}.project-section{margin-bottom:20px}.skill-section{min-height:600px}body.project-developer-portal{background-image:url(/build/images/homeserve.8467be5d.jpg)}