:root{--red:#ef4641;--grey:#b4b4c4;--white:#f6f7f8;--navy:#0a0a1e;--bg:var(--navy);--bg-alt:#12122a;--border:#262640;--accent:var(--red);--text:var(--white);--text-muted:var(--grey);--font-body:"Exo 2", system-ui, sans-serif;--font-mono:ui-monospace, "JetBrains Mono", monospace;--maxw:46rem;--header-h:5.5rem}*{box-sizing:border-box}html{color-scheme:dark;scroll-padding-top:calc(var(--header-h) + .5rem)}@keyframes showit{0%{opacity:0}to{opacity:1}}body{touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:var(--navy);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;padding:0 1.25rem;font-weight:400;line-height:1.7;animation:.4s ease-out showit}main,header,footer{max-width:var(--maxw);margin:0 auto}a{color:var(--text);border-bottom:1px dashed;padding-bottom:1px;text-decoration:none;transition:color .3s ease-in-out,border-color .3s ease-in-out}a:hover{color:var(--red)}a:focus-visible,button:focus-visible,main:focus-visible{outline:2px solid var(--red);outline-offset:3px;border-radius:2px}.skip-link{z-index:100;background:var(--red);color:var(--navy);border:none;border-radius:0 0 4px 4px;padding:.5rem 1rem;font-weight:700;position:absolute;top:-100%;left:1rem}.skip-link:focus{top:0}h1 a,h2 a,h3 a{border-bottom:none}h1 a:hover,h2 a:hover,h3 a:hover{color:var(--red)}h1,h2,h3{text-wrap:balance;font-weight:400;line-height:1.25}[id]{scroll-margin-top:calc(var(--header-h) + .5rem)}h1{margin:2.5rem 0 1rem;font-size:2rem}h2{color:var(--red);margin:2rem 0 .75rem;font-size:1.4rem}h3{margin:1.5rem 0 .5rem;font-size:1.1rem}p{margin:.75rem 0}code,pre{font-family:var(--font-mono);font-size:.9em}pre{background:var(--bg-alt);border:1px solid var(--border);border-radius:8px;padding:1rem;overflow-x:auto}:not(pre)>code{background:var(--bg-alt);border-radius:4px;padding:.1rem .35rem}.site-header{z-index:10;background:var(--bg);background:color-mix(in srgb, var(--bg) 88%, transparent);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1.5rem;padding:1.75rem 0 1.25rem;transition:padding .25s;display:flex;position:sticky;top:0}.site-header.is-scrolled{padding:.55rem 0}@supports (backdrop-filter:blur(6px)){.site-header{backdrop-filter:blur(6px)}}.brand{color:var(--text);border-bottom:none;font-size:1.05rem;font-weight:400;display:inline-block}.brand span{color:var(--red);letter-spacing:2px;margin-top:-2px;font-size:.6em;display:block}.brand:hover{color:var(--text)}nav.stats-nav{flex-wrap:wrap;align-items:center;gap:1rem;font-size:.95rem;display:flex}nav.stats-nav a.lang-switch{border:1px solid var(--grey);letter-spacing:1px;font-family:var(--font-mono);border-radius:3px;padding:2px 7px;font-size:.85em}nav.stats-nav a{color:var(--text-muted);border-bottom:1px dashed;padding:2px 8px}nav.stats-nav a:hover,nav.stats-nav a[aria-current=page]{background:var(--red);border-color:var(--red);color:var(--navy)}.hero-vcenter{text-align:center;z-index:1;flex-direction:column;justify-content:center;min-height:62vh;display:flex;position:relative}.hero-vcenter h1{margin:0 0 .9rem;font-size:2.6rem;font-weight:400}.hero-vcenter .tagline{color:var(--text-muted);max-width:34rem;margin:0 auto;font-size:1.1rem}.hero-vcenter .trajectory{color:var(--red);font-family:var(--font-mono);margin-top:1.2rem;font-size:.85rem}.hero-menu{flex-wrap:wrap;justify-content:center;gap:.6rem;margin-top:2.2rem;display:flex}.hero-menu a{border:2px solid var(--grey);width:160px;color:var(--text-muted);border-radius:4px;padding:12px 0}.hero-menu a:hover{border-color:var(--red);color:var(--red)}.scroll-down{color:var(--grey);letter-spacing:2px;text-transform:uppercase;margin:3rem auto 1rem;font-size:.8rem;transition:opacity .4s ease-in-out;display:block;position:relative}.scroll-down.hidden{opacity:0}.scroll-down:after{content:"↓";text-align:center;color:var(--red);display:block}#dot-bg{z-index:-1;pointer-events:none;position:fixed;inset:0}.site-footer{color:var(--grey);text-align:center;margin:4rem auto 2rem;padding-top:1rem;font-size:.85rem}.site-footer .footer-line{flex-wrap:wrap;justify-content:center;gap:.15rem .6rem;margin:0;display:flex}.project-list{gap:1rem;margin:1.5rem 0;padding:0;display:grid}.project-card{background:var(--bg-alt);border:1px solid var(--border);border-radius:10px;padding:1.1rem 1.25rem}.project-card h3{margin:0 0 .25rem}.project-card .meta{color:var(--grey);font-family:var(--font-mono);margin:0 0 .5rem;font-size:.8rem}.project-card a.read-more{color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;margin-top:.4rem;font-size:.85rem;display:inline-block}.project-card a.read-more:after{content:" →";transition:transform .3s ease-in-out;display:inline-block}.project-card a.read-more:hover:after{transform:translate(8px)}.post-list{margin:1.5rem 0;padding:0;list-style:none}.post-list li{padding:.9rem 0}.post-list li+li{border-top:1px solid var(--border)}.post-list{overflow-wrap:anywhere}.post-list h3{margin:0}.post-list .date{color:var(--grey);font-family:var(--font-mono);font-size:.8rem;display:block}.tag{border-bottom:1px dashed var(--grey);color:var(--grey);margin-right:.3rem;padding:0 .3rem;font-size:.75rem;display:inline-block}.muted{color:var(--grey)}.cv-pdf-btn{border:2px solid var(--red);color:var(--red);border-radius:4px;padding:9px 20px;font-size:.9rem;display:inline-block}.cv-pdf-btn:hover{background:var(--red);color:var(--navy)}.cv-skills{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;margin:1.5rem 0;display:grid}.cv-block{background:var(--bg-alt);border:1px solid var(--border);border-radius:10px;padding:.9rem 1rem}.cv-block h3{margin:0 0 .35rem;font-size:.95rem}.cv-block p{color:var(--grey);margin:0;font-size:.88rem}.cv-quick-links{background:var(--bg-alt);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;gap:.5rem 1.25rem;margin:0 0 1.5rem;padding:.7rem 1rem;display:flex}.cv-quick-links a{color:var(--grey);font-size:.9rem}.cv-quick-links a:hover,.cv-quick-links a:focus-visible{color:var(--white)}.timeline{gap:1.25rem;margin:1.25rem 0;display:grid}.timeline-entry{border-left:2px solid var(--border);padding:.1rem 0 .1rem 1.1rem}.timeline-entry .period{color:var(--red);font-family:var(--font-mono);margin:0;font-size:.8rem}.timeline-entry h3{margin:.2rem 0 .35rem}.timeline-entry p:last-child{margin-bottom:0}.trajectory-timeline ol{justify-content:center;gap:0;max-width:42rem;margin:2.5rem auto;padding:0;list-style:none;display:flex}.traj-node{flex:1;display:flex;position:relative}.traj-link{text-align:center;width:100%;color:inherit;border-bottom:none;flex-direction:column;flex:1;align-items:center;padding:0 1rem;display:flex}.traj-link:hover{color:inherit}.traj-link:hover .traj-title,.traj-link:focus-visible .traj-title{color:var(--red)}.traj-link:before{content:attr(data-tip);background:var(--red);color:var(--navy);white-space:nowrap;font-family:var(--font-mono);letter-spacing:1px;text-transform:uppercase;opacity:0;pointer-events:none;z-index:10;border-radius:4px;padding:3px 9px;font-size:.68rem;transition:opacity .2s ease-in-out;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}.traj-link:hover:before,.traj-link:focus-visible:before{opacity:1}@media (hover:none){.traj-link:before{display:none}}.traj-phase{color:var(--red);font-family:var(--font-mono);letter-spacing:2px;text-transform:uppercase;font-size:.7rem}.traj-node:has(>.traj-link[aria-current]) .traj-phase{color:var(--red)}.contact-form{margin:1.5rem 0 1rem}.contact-field{flex-direction:column;gap:.35rem;margin:1rem 0;display:flex}.contact-form label{font-size:.95rem}.contact-form input,.contact-form textarea{font:inherit;color:var(--text);background:var(--bg-alt);border:1px solid var(--border);box-sizing:border-box;border-radius:8px;width:100%;padding:.6rem .75rem}.contact-form input:focus-visible,.contact-form textarea:focus-visible{outline:2px solid var(--red);outline-offset:3px;border-color:var(--red)}.contact-form textarea{resize:vertical;min-height:10rem}.contact-honeypot{display:none}.contact-actions{margin:1.25rem 0 .5rem}.contact-form button{font:inherit;cursor:pointer;color:var(--navy);background:var(--red);border:1px solid var(--red);border-radius:8px;padding:.6rem 1.25rem;font-weight:700;transition:background .3s ease-in-out,color .3s ease-in-out}.contact-form button:hover:not(:disabled){background:var(--text);border-color:var(--text)}.contact-form button:disabled{opacity:.7;cursor:progress}.contact-status{min-height:1.7em;margin:.5rem 0;font-weight:700}.contact-status[data-state=ok]{color:var(--white)}.contact-status[data-state=err]{color:var(--red)}.traj-dot{border:2px solid var(--grey);background:var(--navy);border-radius:50%;width:10px;height:10px;margin-bottom:.6rem}.traj-node.is-present:has(>.traj-link[aria-current]) .traj-dot{background:var(--red);border-color:var(--red);animation:2.4s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.85}}.traj-node:has(>.traj-link[aria-current]) .traj-dot{background:var(--red);border-color:var(--red)}.traj-title{margin-top:.15rem;font-size:.95rem;font-weight:700}.traj-text{color:var(--text-muted);max-width:13rem;margin-top:.2rem;font-size:.8rem}.ai-label{color:var(--text-muted);align-items:center;gap:.45rem;margin:1.2rem 0;font-size:.85rem;display:flex}.ai-label-icon{flex-shrink:0;display:inline-flex}.ai-label-icon svg{width:1.35rem;height:auto}.ai-label-more,.ai-label-more,.ai-label-jump{color:var(--grey);font-size:.85rem}@media (width<=640px){.trajectory-timeline ol{flex-direction:column;align-items:center;gap:1.1rem}.traj-node:not(:last-child):after{display:none}.traj-node{flex-direction:column}.traj-link{text-align:left;flex-flow:wrap;align-items:flex-start;gap:.75rem;padding:0}.traj-dot{flex-shrink:0;margin-top:4px;margin-bottom:0}.traj-text{flex:auto;min-width:0;max-width:none}}@media (prefers-reduced-motion:reduce){.traj-node:has(>.traj-link[aria-current]) .traj-dot,.traj-node.is-present:has(>.traj-link[aria-current]) .traj-dot,body{animation:none}*{transition:none!important}}@media (width<=480px){.site-header{flex-direction:column;align-items:flex-start;gap:.5rem}nav.stats-nav{justify-content:flex-start;gap:.3rem .5rem}nav.stats-nav a{padding:8px 10px}nav.stats-nav a.lang-switch{padding:6px 9px}}@media (prefers-reduced-motion:no-preference){:target{outline:3px solid #0000;animation:1.2s ease-out target-flash}}@keyframes target-flash{0%,25%{outline-color:var(--red)}to{outline-color:#0000}}@media (prefers-reduced-motion:reduce){:target{outline:3px solid var(--red)}}
