:root{--font-heading: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--radius: 8px;--measure: 46rem;--blog-measure: 72rem;--blog-reading-measure: 52rem;--space-1: 0.5rem;--space-2: 1rem;--space-3: 2rem;--space-4: 4rem;--blue-100: #b9ffe1;--blue-200: #8affd1;--blue-700: #171717;--blue-900: #0d2a22;--cyan-100: #b8fff7;--cyan-200: #8de9e0;--cyan-700: #123a3a;--cyan-900: #0b2929;--purple-100: #e5d7ff;--purple-200: #c9a8ff;--purple-700: #30243d;--purple-900: #21182c;--green-100: #c8ffd5;--green-200: #a8f5bd;--green-700: #193b2b;--green-900: #10291e;--orange-100: #ffe4b8;--orange-200: #ffd08a;--orange-700: #3d2b1b;--orange-900: #2b1e13;--slate-200: #dedede;--slate-700: #303030;--slate-800: #222222;--bg: #f4f5f1;--bg-soft: #ffffff;--border: #c5ded3;--text: #171717;--text-muted: #53635b;--text-faint: #5f8f7c;--section-heading: #171717;--accent: #087a52;--accent-hover: #045436;--tag-bg: #d9fff0;--tag-text: #075c40}[data-theme=dark]{--bg: #171717;--bg-soft: #222222;--border: #3c3c3c;--text: #f0f0f0;--text-muted: #bdbdbd;--text-faint: #777777;--section-heading: #21f1a8;--accent: #21f1a8;--accent-hover: #8affd1;--tag-bg: #18352c;--tag-text: #8affd1}*,*::before,*::after{box-sizing:border-box}html{color-scheme:light}html[data-theme=dark]{color-scheme:dark}body{margin:0;background:var(--bg);color:var(--text);transition:background .15s ease,color .15s ease;-webkit-font-smoothing:antialiased}.wrap{max-width:var(--measure);margin:0 auto;padding:var(--space-3) var(--space-2) var(--space-4)}.blog-context .wrap{max-width:var(--blog-measure)}.home-context .wrap,.about-context .wrap{max-width:var(--blog-measure)}.cv-context .wrap{max-width:var(--blog-measure)}.cv-context main{max-width:var(--measure);margin:0 auto}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:2px;transition:color .15s ease}a:hover{color:var(--accent-hover);text-decoration-thickness:2px}hr{border:0;border-top:1px solid var(--border);margin:var(--space-3) 0}@media(max-width: 480px){.wrap{padding:var(--space-2) var(--space-2) var(--space-3)}}body{font-family:var(--font-body);font-size:17px;line-height:1.65}h1,h2,h3,h4{font-family:var(--font-heading);color:var(--text);line-height:1.25}h1{font-size:2rem;font-weight:700;letter-spacing:-0.035em;margin:0 0 var(--space-1)}h2{font-family:var(--font-mono);font-size:.82rem;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--section-heading);border-bottom:1px solid var(--border);padding-bottom:var(--space-1);margin:var(--space-3) 0 var(--space-2)}.post .e-content h1,.post .e-content h2,.post .e-content h3,.post .e-content h4{font-family:var(--font-heading);color:var(--section-heading);text-transform:none;letter-spacing:-0.02em;border:0}.post .e-content h1{margin:var(--space-4) 0 var(--space-2);font-size:1.65rem}.post .e-content h2{margin:var(--space-4) 0 var(--space-2);padding:0;font-size:1.35rem;font-weight:600}.post .e-content h3{margin:var(--space-3) 0 var(--space-1);font-size:1.1rem}.post .e-content h4{margin:var(--space-2) 0 var(--space-1);font-size:1rem}h3{font-size:1.05rem;font-weight:600;letter-spacing:-0.01em;margin:var(--space-2) 0 .2rem}p{margin:0 0 var(--space-2)}ul{padding-left:1.2rem;margin:0 0 var(--space-2)}li{margin-bottom:.35rem}.meta,time,.mono{font-family:var(--font-mono);font-size:.76rem;color:var(--text-faint)}.post .e-content strong{font-weight:600}code{font-family:var(--font-mono);font-size:.8em;background:var(--bg-soft);padding:.15em .4em;border-radius:var(--radius)}pre{max-width:100%;margin:var(--space-2) 0 var(--space-3);padding:1rem 1.25rem;overflow-x:auto;background:var(--bg-soft);border:1px solid var(--border);font-family:var(--font-mono);font-size:.82rem;line-height:1.6}pre code{display:block;padding:0;background:rgba(0,0,0,0);border-radius:0;font-size:inherit;white-space:pre}@media(max-width: 480px){body{font-size:16px}}.site-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}.site-header nav{display:flex;align-items:center;gap:var(--space-2)}.site-header nav a{color:var(--text-muted);text-decoration:none;font-family:var(--font-body);font-size:.9rem;font-weight:500}.site-header nav a:hover{color:var(--accent)}.header-actions{display:flex;align-items:center;gap:var(--space-1)}.site-header nav .site-name{color:var(--section-heading);font-weight:700;font-size:1rem;letter-spacing:-0.02em}.site-header nav .site-name:hover{color:var(--accent-hover)}.site-footer{margin-top:var(--space-4);padding-top:var(--space-2);border-top:1px solid var(--border);font-family:var(--font-mono);font-size:.75rem;color:var(--text-faint);display:flex;justify-content:space-between;flex-wrap:wrap;gap:.5rem}.site-footer a{color:var(--text-faint)}.site-footer a:hover{color:var(--accent)}.tag-list{margin:var(--space-1) 0 var(--space-2)}.tag{display:inline-block;font-family:var(--font-mono);font-size:.75rem;background:var(--tag-bg);color:var(--tag-text);border-radius:var(--radius);padding:.15rem .5rem;margin:0 .3rem .3rem 0;text-decoration:none}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:3.25rem;height:1.75rem;padding:0;background:var(--bg-soft);border:1px solid var(--border);border-radius:999px;color:var(--text-muted);cursor:pointer}.theme-toggle:hover{color:var(--accent);border-color:var(--accent)}.theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.theme-toggle-track{position:relative;display:block;width:100%;height:100%}.theme-toggle-icon{position:absolute;top:50%;z-index:1;display:grid;width:1rem;height:1rem;place-items:center;transform:translateY(-50%);transition:opacity .2s ease,transform .25s ease}.theme-toggle-icon svg{width:.85rem;height:.85rem;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7}.theme-toggle-sun{left:.3rem}.theme-toggle-moon{right:.3rem}.theme-toggle-thumb{position:absolute;top:.2rem;left:.2rem;z-index:2;width:1.2rem;height:1.2rem;background:var(--text-muted);border-radius:50%;transition:transform .25s ease,background .2s ease}html[data-theme=dark] .theme-toggle-thumb{transform:translateX(1.5rem)}html[data-theme=dark] .theme-toggle-sun{opacity:.45;transform:translateY(-50%) rotate(-30deg)}html:not([data-theme=dark]) .theme-toggle-moon{opacity:.45;transform:translateY(-50%) rotate(30deg)}@media(prefers-reduced-motion: reduce){.theme-toggle-icon,.theme-toggle-thumb{transition:none}}.download-btn{background:none;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);font-family:var(--font-mono);font-size:.75rem;padding:.25rem .6rem;cursor:pointer;text-decoration:none}.download-btn:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}.hero p.tagline{font-family:var(--font-body);font-size:1rem;font-weight:500;color:var(--text-muted);margin-top:-0.3rem}.contact-line{font-family:var(--font-body);font-size:.9rem;color:var(--text-muted);margin:var(--space-1) 0 var(--space-3)}.contact-line a{color:var(--text-muted)}.contact-line a:hover{color:var(--accent)}.post-cover{display:block;width:100%;max-height:34rem;margin:0 0 var(--space-3);object-fit:cover}.post-header{max-width:var(--blog-reading-measure);margin-bottom:var(--space-3)}.post-kicker{margin:0 0 var(--space-2);color:var(--accent);font-family:var(--font-mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}.post-header h1{max-width:48rem;font-size:clamp(2.2rem,5vw,4.25rem);line-height:1.05}.post-meta{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-1) var(--space-2);margin:var(--space-2) 0;color:var(--text-faint);font-family:var(--font-mono);font-size:.76rem}.post-meta strong{color:var(--text-muted);font-weight:500}.post .e-content>p>img,.post .e-content>img{display:block;width:100%;height:auto;margin:var(--space-3) 0;background:var(--bg-soft)}@media(max-width: 480px){.post-cover{max-height:14rem}.post-header h1{font-size:2.25rem}}.entry{margin-bottom:var(--space-3)}.entry-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:.3rem 1rem}.entry-head h3{margin:0}.entry>.entry-head:first-child{margin-top:var(--space-2)}.entry-company{font-size:1.3rem;margin-bottom:0}.entry-sub{font-family:var(--font-mono);font-size:.8rem;color:var(--text-faint);margin:0 0 .4rem}.role{margin-top:var(--space-2)}@page{size:A4;margin:16mm}.print-body{font-size:15.5px;--bg: #f4f5f1}.print-wrap{max-width:100%;padding:0}.print-wrap h2{margin-top:1.5rem;font-size:.85rem;break-after:avoid;page-break-after:avoid}.print-wrap .entry{margin-bottom:1.1rem}.print-wrap .hero p.tagline{margin-top:-0.2rem}.entry{break-inside:avoid;page-break-inside:avoid}.experience-entry{break-inside:auto;page-break-inside:auto}.entry-company{break-after:avoid;page-break-after:avoid}.role{break-inside:avoid;page-break-inside:avoid}.print-footer{margin-top:2rem;padding-top:.6rem;border-top:1px solid var(--border);font-family:var(--font-mono);font-size:.7rem;color:var(--text-faint)}.print-wrap a{text-decoration:none}.highlight{background:#272822;color:#f8f8f2}.highlight pre{background:#272822;border-color:#49483e}.highlight .c,.highlight .ch,.highlight .cm,.highlight .cp,.highlight .cpf,.highlight .c1,.highlight .cs{color:#75715e}.highlight .err{color:#f8f8f2;background:#f92672}.highlight .k,.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:#f92672}.highlight .n,.highlight .na,.highlight .nb,.highlight .nc,.highlight .nd,.highlight .ne,.highlight .nf,.highlight .ni,.highlight .nl,.highlight .nn,.highlight .nt,.highlight .nv{color:#a6e22e}.highlight .o,.highlight .ow{color:#f92672}.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#ae81ff}.highlight .s,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .s1,.highlight .s2,.highlight .sh,.highlight .sr,.highlight .ss{color:#e6db74}.highlight .dl,.highlight .se{color:#e6db74}.highlight .p{color:#f8f8f2}.highlight .gd{color:#f92672}.highlight .gi{color:#a6e22e}.highlight .ge{font-style:italic}.highlight .gs{font-weight:bold}.highlight .gu{color:#75715e}/*# sourceMappingURL=print.css.map */