:root{--bg:#fafafa;--bg-alt:#ffffff;--fg:#212121;--fg-muted:#5a5a5a;--border:#dcdcdc;--accent:#1565c0;--accent-fg:#ffffff;--code-bg:#f0f0f0;--max-width:50rem;--radius:6px;--font-sans:"Fira Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:"Fira Code", "Fira Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}@media(prefers-color-scheme:dark){:root:not([data-theme]){--bg:#212121;--bg-alt:#2a2a2a;--fg:#dadada;--fg-muted:#9b9b9b;--border:#3a3a3a;--accent:#79b8ff;--accent-fg:#10171e;--code-bg:#2b2b2b}}:root[data-theme=dark]{--bg:#212121;--bg-alt:#2a2a2a;--fg:#dadada;--fg-muted:#9b9b9b;--border:#3a3a3a;--accent:#79b8ff;--accent-fg:#10171e;--code-bg:#2b2b2b}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font-sans);font-size:1.0625rem;line-height:1.7;-webkit-font-smoothing:antialiased;display:flex;flex-direction:column;min-height:100vh}::selection{background:var(--accent);color:var(--accent-fg)}.container{width:100%;max-width:var(--max-width);margin-inline:auto;padding-inline:1.25rem}main.container{flex:1 0 auto;padding-block:2.5rem}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:2px}h1,h2,h3,h4{line-height:1.25;font-weight:600}h1{font-size:1.9rem;margin:0 0 .75rem}h2{font-size:1.35rem;margin:2.5rem 0 1rem}h3{font-size:1.1rem;margin:1.5rem 0 .5rem}p{margin:0 0 1rem}img{max-width:100%;height:auto}code{font-family:var(--font-mono);font-size:.88em;background:var(--code-bg);padding:.15em .4em;border-radius:4px}pre{background:var(--code-bg);padding:1rem;border-radius:var(--radius);overflow-x:auto}pre code{background:0 0;padding:0;font-size:.85rem}hr{border:none;border-top:1px solid var(--border);margin:2.5rem 0}blockquote{margin:1.5rem 0;padding-left:1rem;border-left:3px solid var(--accent);color:var(--fg-muted)}.alert{margin:1.75rem 0;padding:.85rem 1.1rem;border-left:3px solid var(--alert-hue);border-radius:0 var(--radius)var(--radius)0;background:color-mix(in srgb,var(--alert-hue) 9%,var(--bg-alt));color:var(--fg)}.alert>:last-child{margin-bottom:0}.alert__label{display:flex;align-items:center;gap:.4rem;margin-bottom:.35rem;font-weight:600;color:var(--alert-hue)}.alert__label svg{width:1.05em;height:1.05em;flex:none}.alert-note{--alert-hue:#3b82f6}.alert-tip{--alert-hue:#22c55e}.alert-important{--alert-hue:#a855f7}.alert-warning{--alert-hue:#d97706}.alert-caution{--alert-hue:#ef4444}.skip-link{position:absolute;left:-999px}.skip-link:focus{left:1rem;top:1rem;background:var(--bg);padding:.5rem .75rem;border:1px solid var(--border);border-radius:8px;z-index:100}.site-header{background:var(--bg)}.header-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;padding-block:1.25rem}.brand{font-weight:600;color:var(--fg)}.brand:hover{color:var(--accent);text-decoration:none}.site-nav ul{list-style:none;display:flex;align-items:center;gap:1.25rem;margin:0;padding:0}.site-nav a{color:var(--fg-muted);font-size:.95rem}.site-nav a:hover{color:var(--fg);text-decoration:none}.site-nav a[aria-current=page]{color:var(--fg)}.theme-toggle{background:0 0;border:none;color:var(--fg-muted);cursor:pointer;padding:0;display:inline-flex;align-items:center;font-size:1.15rem;line-height:1}.theme-toggle:hover{color:var(--accent)}.theme-toggle .icon{display:none}.theme-toggle .icon-moon{display:block}@media(prefers-color-scheme:dark){:root:not([data-theme]) .theme-toggle .icon-moon{display:none}:root:not([data-theme]) .theme-toggle .icon-sun{display:block}}:root[data-theme=light] .theme-toggle .icon-moon{display:block}:root[data-theme=light] .theme-toggle .icon-sun{display:none}:root[data-theme=dark] .theme-toggle .icon-moon{display:none}:root[data-theme=dark] .theme-toggle .icon-sun{display:block}.site-footer{flex-shrink:0;border-top:1px solid var(--border);color:var(--fg-muted);font-size:.85rem;text-align:center}.footer-inner{padding-block:1.75rem}.site-footer p{margin:0}.site-footer a{color:var(--fg-muted)}.site-footer a:hover{color:var(--accent)}.homepage{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:max(58vh,22rem);padding-block:2rem 1rem}.avatar{width:220px;height:220px;border-radius:50%;object-fit:cover;margin-bottom:1.5rem;border:1px solid var(--border)}.avatar--placeholder{display:grid;place-items:center;background:var(--accent);color:var(--accent-fg);border-color:transparent;font-family:var(--font-mono);font-size:3.75rem;font-weight:600;letter-spacing:.02em}.homepage__name{font-size:2.1rem;margin:0 0 .25rem}.homepage__subtitle{font-size:1.1rem;font-weight:500;color:var(--fg-muted);margin:0 0 1rem}.homepage__bio{max-width:34rem;color:var(--fg)}.homepage__bio p:last-child{margin-bottom:0}.social-links{list-style:none;margin:1.75rem 0 0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:1.15rem}.social-links a{color:var(--fg-muted);font-size:1.55rem;display:inline-flex;transition:color .15s ease,transform .15s ease}.social-links a:hover{color:var(--accent);transform:translateY(-2px);text-decoration:none}.icon{display:block}.home-section{margin-top:3.5rem}.home-section__more{margin-top:1rem;font-size:.95rem}.home-stats{margin-top:3.5rem}.home-stats h2{margin-bottom:1rem}.stat-grid{list-style:none;margin:0;padding:0;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}.stat{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-alt);padding:1.1rem 1.15rem}.stat__value{display:block;font-size:1.9rem;font-weight:600;line-height:1.1;letter-spacing:-.01em}.stat__unit{font-size:.95rem;font-weight:500;color:var(--fg-muted);margin-left:.25rem}.stat__label{display:block;margin-top:.45rem;font-size:.85rem;color:var(--fg-muted)}.btn{display:inline-block;background:var(--accent);color:var(--accent-fg);padding:.55rem 1rem;border-radius:var(--radius);font-size:.95rem;font-weight:500;border:1px solid transparent;cursor:pointer;font-family:inherit}.btn:hover{filter:brightness(1.08);text-decoration:none}.btn--ghost{background:0 0;color:var(--fg);border-color:var(--border)}.btn--sm{padding:.35rem .7rem;font-size:.85rem}.hero{text-align:center;padding-block:3rem}.hero h1{font-size:2.5rem}.hero__tagline{font-size:1.15rem;color:var(--fg-muted);margin-bottom:1.5rem}.hero__actions{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center}.prose{max-width:40rem}.prose ul,.prose ol{padding-left:1.4rem}.prose li{margin-bottom:.35rem}.page-head{margin-bottom:2rem}.page-head__lede{font-size:1.1rem;color:var(--fg-muted)}.crumb{font-size:.9rem;margin-bottom:.5rem}.crumb a{color:var(--fg-muted)}.card-grid{list-style:none;margin:1.5rem 0 0;padding:0;display:grid;gap:1.25rem;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr))}.card{border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;background:var(--bg-alt);transition:border-color .15s ease}.card:hover{border-color:var(--accent)}.card h2,.card h3{margin-top:0}.card h2{font-size:1.1rem}.card__head{display:flex;align-items:center;gap:.55rem;margin-bottom:.4rem}.card__head h2{margin:0}.lang-logo{flex:none;display:inline-flex;line-height:0}.lang-logo svg{width:1.55rem;height:1.55rem;display:block}.page-head__title{display:flex;align-items:center;gap:.6rem}.page-head__title h1{margin:0}.page-head__title .lang-logo svg{width:2rem;height:2rem}.card p{color:var(--fg-muted);font-size:.95rem}.card h2 a,.card h3 a{color:var(--fg)}.card h2 a:hover,.card h3 a:hover{color:var(--accent);text-decoration:none}.card__links{display:flex;gap:1rem;font-size:.9rem;margin-bottom:0}.tags{list-style:none;display:flex;flex-wrap:wrap;gap:.4rem;margin:.5rem 0;padding:0}.tags li{font-size:.75rem;background:var(--bg);border:1px solid var(--border);border-radius:999px;padding:.1rem .55rem;color:var(--fg-muted)}.meta{list-style:none;padding:0;margin:1rem 0;color:var(--fg-muted);font-size:.95rem}.meta li{margin-bottom:.2rem}.post-list{list-style:none;padding:0;margin:1.5rem 0 0}.post-list li{padding:.9rem 0;border-bottom:1px solid var(--border)}.post-list a{font-weight:500;color:var(--fg)}.post-list a:hover{color:var(--accent);text-decoration:none}.post-list span{display:block;color:var(--fg-muted);font-size:.92rem}.log-list{list-style:none;padding:0;margin:2rem 0 0}.log-list__item{display:flex;gap:1.1rem;padding:1.25rem 0;border-bottom:1px solid var(--border)}.log-list__item:first-child{padding-top:0}.log-list__thumb{flex:none;line-height:0}.log-list__thumb img{width:160px;height:110px;object-fit:cover;border-radius:var(--radius);border:1px solid var(--border)}.log-list__body{min-width:0}.log-list__body h2{font-size:1.15rem;margin:0 0 .2rem}.log-list__body h2 a{color:var(--fg)}.log-list__body h2 a:hover{color:var(--accent);text-decoration:none}.log-list__body p{margin:0;color:var(--fg-muted);font-size:.95rem}.log-list__meta{font-size:.85rem;margin-bottom:.35rem!important}.log-entry__meta{color:var(--fg-muted);font-size:.9rem;margin-top:-.25rem}.log-entry__cover{width:100%;border-radius:var(--radius);border:1px solid var(--border);margin:.5rem 0 1.5rem}.log-entry__nav{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.75rem;margin-top:2.5rem;padding-top:1.25rem;border-top:1px solid var(--border);font-size:.9rem}.log-entry__nav-prev{margin-left:auto;text-align:right}.md-figure{margin:1.75rem 0}.md-figure img{width:100%;border-radius:var(--radius);border:1px solid var(--border);display:block}.md-figure figcaption{margin-top:.5rem;font-size:.85rem;color:var(--fg-muted);text-align:center}@media(max-width:34rem){.log-list__item{flex-direction:column;gap:.6rem}.log-list__thumb img{width:100%;height:180px}}.cv-section{margin-top:2.5rem}.cv-entry{margin-bottom:1.5rem}.cv-entry__head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.25rem 1rem;align-items:baseline}.cv-entry__head h3{margin:0}.cv-entry__dates{color:var(--fg-muted);font-size:.9rem;white-space:nowrap}.cv-entry__meta{color:var(--fg-muted);font-size:.9rem;margin:.1rem 0 .4rem}.cv-entry ul{padding-left:1.2rem;margin:.4rem 0 0}.cv-entry li{margin-bottom:.25rem}.cv-skills{display:grid;gap:.6rem;margin:0}.cv-skills>div{display:grid;grid-template-columns:9rem 1fr;gap:1rem}.cv-skills dt{font-weight:600}.cv-skills dd{margin:0;color:var(--fg-muted)}.timeline{list-style:none;margin:2rem 0 0;padding:0}.timeline__item{position:relative;padding:0 0 1.5rem 1.9rem}.timeline__item::before{content:"";position:absolute;left:5px;top:.5rem;bottom:0;width:2px;background:var(--border)}.timeline__item:last-child{padding-bottom:0}.timeline__item:last-child::before{display:none}.timeline__summary{cursor:pointer;list-style:none;padding:.1rem 0}.timeline__summary::-webkit-details-marker{display:none}.timeline__summary::marker{content:""}.timeline__dot{position:absolute;left:0;top:.45rem;width:12px;height:12px;border-radius:50%;box-sizing:border-box;background:var(--bg);border:2px solid var(--border);transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.timeline__entry[open] .timeline__dot,.timeline__summary:hover .timeline__dot{border-color:var(--dot)}.timeline__entry[open] .timeline__dot{background:var(--dot);box-shadow:0 0 0 4px color-mix(in srgb,var(--dot) 22%,transparent)}.timeline__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.1rem .7rem}.timeline__company{font-weight:600;font-size:1.05rem}.timeline__summary:hover .timeline__company{color:var(--accent)}.timeline__dates{color:var(--fg-muted);font-size:.9rem}.timeline__loc{color:var(--fg-muted);font-size:.9rem;flex-basis:100%}.timeline__body{padding:.5rem 0 .25rem;max-width:40rem}.timeline__role{font-weight:600;margin-bottom:.35rem}.timeline__body ul{padding-left:1.2rem;margin:.5rem 0 0}.timeline__body li{margin-bottom:.25rem}@media(max-width:34rem){.cv-skills>div{grid-template-columns:1fr;gap:.1rem}.avatar{width:168px;height:168px}.avatar--placeholder{font-size:2.75rem}.homepage__name{font-size:1.8rem}}@media print{.site-header,.site-footer,.theme-toggle,.social-links,.no-print{display:none!important}body{font-size:11pt;color:#000;background:#fff}main.container{padding:0;max-width:none}a{color:#000;text-decoration:none}.cv-section{margin-top:1.25rem;page-break-inside:avoid}.cv-entry{page-break-inside:avoid}}