@font-face{font-display:swap;font-family:Liberation Sans;font-style:normal;font-weight:400;src:url(/fonts/liberation-sans-400.woff2)format("woff2")}@font-face{font-display:swap;font-family:Liberation Sans;font-style:normal;font-weight:700;src:url(/fonts/liberation-sans-700.woff2)format("woff2")}@font-face{font-display:swap;font-family:Liberation Sans;font-style:italic;font-weight:400;src:url(/fonts/liberation-sans-400-italic.woff2)format("woff2")}@font-face{font-display:swap;font-family:liberation serif;font-style:normal;font-weight:700;src:url(/fonts/liberation-serif-700.woff2)format("woff2")}@font-face{font-display:swap;font-family:liberation serif;font-style:italic;font-weight:700;src:url(/fonts/liberation-serif-700-italic.woff2)format("woff2")}@font-face{font-display:swap;font-family:Liberation Mono;font-style:normal;font-weight:400;src:url(/fonts/liberation-mono-400.woff2)format("woff2")}:root{--color-bg:#f7f8f5;--color-surface:#eef1e9;--color-surface-2:#e4e9dc;--color-text:#1a2e1a;--color-muted:#5b6b57;--color-accent:#15803d;--color-accent-strong:#14532d;--color-on-accent:#f3faf4;--color-border:#dce3d6;--color-tag-bg:rgba(21,128,61,.12);--color-tag-text:#14532d;--color-note:var(--color-accent);--color-warning:#a16207;--color-tip:#c2410c;--font-heading:"Liberation Serif",Georgia,"Times New Roman",serif;--font-sans:"Liberation Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--font-mono:"Liberation Mono",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;--max-width:42rem}@media(prefers-color-scheme:dark){:root{--color-bg:#131a11;--color-surface:#1b2418;--color-surface-2:#212c1d;--color-text:#e9f0e6;--color-muted:#a8b8a2;--color-accent:#4ade80;--color-accent-strong:#86efac;--color-on-accent:#0d2210;--color-border:#33422e;--color-tag-bg:rgba(74,222,128,.16);--color-tag-text:#86efac;--color-warning:#facc15;--color-tip:#fb923c}}:root[data-theme=dark]{--color-bg:#131a11;--color-surface:#1b2418;--color-surface-2:#212c1d;--color-text:#e9f0e6;--color-muted:#a8b8a2;--color-accent:#4ade80;--color-accent-strong:#86efac;--color-on-accent:#0d2210;--color-border:#33422e;--color-tag-bg:rgba(74,222,128,.16);--color-tag-text:#86efac;--color-warning:#facc15;--color-tip:#fb923c}:root[data-theme=light]{--color-bg:#f7f8f5;--color-surface:#eef1e9;--color-surface-2:#e4e9dc;--color-text:#1a2e1a;--color-muted:#5b6b57;--color-accent:#15803d;--color-accent-strong:#14532d;--color-on-accent:#f3faf4;--color-border:#dce3d6;--color-tag-bg:rgba(21,128,61,.12);--color-tag-text:#14532d;--color-warning:#a16207;--color-tip:#c2410c}*{box-sizing:border-box}html{color-scheme:light dark}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);line-height:1.6;margin:0}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:700;line-height:1.25;text-wrap:balance}.container{margin:0 auto;max-width:var(--max-width);padding:0 1.25rem}main.container{padding-bottom:3rem;padding-top:1.5rem}.site-header{border-bottom:1px solid var(--color-border)}.site-header .container{align-items:center;display:flex;flex-wrap:wrap;gap:.6rem 1rem;justify-content:space-between;padding-bottom:1rem;padding-top:1rem}.site-header .site-title{color:var(--color-text);font-family:var(--font-heading);font-size:1.1rem;font-weight:700}.site-header__right{align-items:center;display:flex;gap:1.1rem}.site-header nav ul{display:flex;flex-wrap:wrap;gap:1.25rem;list-style:none;margin:0;padding:0}.site-header nav a{color:var(--color-muted);padding-bottom:.3rem;position:relative}.site-header nav a.is-active{color:var(--color-text);font-weight:600}.site-header nav a.is-active:after{background:var(--color-accent);bottom:-1px;content:"";height:2px;left:0;position:absolute;right:0}.lang-switcher{border:1px solid var(--color-border);border-radius:8px;display:inline-flex;overflow:hidden}.lang-switcher__btn{color:var(--color-muted);font-size:.8rem;line-height:1.5;padding:.3rem .7rem}.lang-switcher__btn+.lang-switcher__btn{border-left:1px solid var(--color-border)}.lang-switcher__btn:hover{background:var(--color-surface);color:var(--color-text)}.lang-switcher__btn.is-active{background:var(--color-accent);color:var(--color-on-accent);font-weight:600}.theme-toggle{align-items:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;color:var(--color-muted);cursor:pointer;display:inline-flex;height:2rem;justify-content:center;padding:0;width:2rem}.theme-toggle:hover{border-color:var(--color-accent);color:var(--color-text)}.theme-toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.theme-toggle__icon{height:1.05rem;width:1.05rem}.theme-toggle__icon--sun{display:none}@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=dark] .theme-toggle__icon--moon{display:none}:root[data-theme=dark] .theme-toggle__icon--sun,:root[data-theme=light] .theme-toggle__icon--moon{display:block}:root[data-theme=light] .theme-toggle__icon--sun{display:none}@media(max-width:30rem){.site-header .container{align-items:flex-start;flex-direction:column}.site-header__right{justify-content:space-between;width:100%}}.site-footer{border-top:1px solid var(--color-border);color:var(--color-muted);font-size:.875rem}.site-footer .container{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem 1.25rem;justify-content:space-between;padding-bottom:1.5rem;padding-top:1.5rem}.site-footer .socials{align-items:center;display:flex;gap:.9rem}.site-footer .socials a{color:var(--color-muted);display:inline-flex}.site-footer .socials a:hover{color:var(--color-accent)}.site-footer .links a{color:var(--color-muted)}.site-footer .links a:hover{color:var(--color-text)}.post-list{list-style:none;margin:0;padding:0}.post-list li{border-bottom:1px solid var(--color-border);padding:.9rem 0}.post-list a{color:var(--color-text);font-weight:600}.post-list time{color:var(--color-muted);display:block;font-size:.875rem;margin-top:.15rem}.post-list .tags-list{display:inline-flex;flex-wrap:wrap;gap:.4rem;margin:.4rem 0 0}.post-list__summary{color:var(--color-muted);font-size:.9rem;margin:.4rem 0 0}.progress{background:var(--color-accent);height:3px;left:0;position:fixed;top:0;transition:width .1s linear;width:0;z-index:30}.article-head{padding-top:.5rem}.article-head .title{font-size:2rem;margin:0 0 .9rem}.breadcrumb{color:var(--color-muted);font-size:.8rem;margin:0 0 .9rem}.breadcrumb .chevron{color:var(--color-accent);margin-right:.3em}.breadcrumb a{color:var(--color-muted)}.breadcrumb a:hover{color:var(--color-text)}.meta-row{align-items:center;border-bottom:1px solid var(--color-border);color:var(--color-muted);display:flex;flex-wrap:wrap;font-size:.85rem;gap:.5rem .9rem;margin-bottom:2rem;padding-bottom:1.4rem}.tags-list{display:inline-flex;flex-wrap:wrap;gap:.4rem}.tag-pill{align-items:center;background:var(--color-tag-bg);border-radius:999px;color:var(--color-tag-text);display:inline-flex;font-size:.76rem;font-weight:600;padding:.18rem .65rem}.tag-pill:hover{background:var(--color-accent);color:var(--color-on-accent);text-decoration:none}.pagination{border-top:1px solid var(--color-border);display:grid;gap:.9rem;grid-template-columns:1fr 1fr;margin:2.5rem 0 0;padding-top:1.6rem}.pagination a{border:1px solid var(--color-border);border-radius:8px;color:var(--color-text);display:block;padding:.9rem 1rem}.pagination a:hover{border-color:var(--color-accent);text-decoration:none}.pagination .dir{color:var(--color-muted);display:block;font-size:.72rem;letter-spacing:.04em;margin-bottom:.25rem;text-transform:uppercase}.pagination .ptitle{display:block;font-size:.88rem;font-weight:600}.pagination .next{grid-column:2;text-align:right}@media(max-width:30rem){.pagination{grid-template-columns:1fr}.pagination .next{grid-column:1;text-align:left}}.visually-hidden{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border:0;white-space:nowrap}.hidden{display:none}.newsletter{background:var(--color-surface-2);border-radius:10px;margin:2.5rem 0 0;padding:1.4rem 1.5rem}.newsletter h3{font-size:1.05rem;margin:0 0 .35rem}.newsletter p{color:var(--color-muted);font-size:.86rem;margin:0 0 1rem}.newsletter form{display:flex;flex-wrap:wrap;gap:.6rem}.newsletter input[type=email]{background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text);flex:1 1 12rem;font-family:inherit;font-size:.88rem;padding:.55rem .8rem}.newsletter input[type=email]:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.newsletter button{background:var(--color-accent);border:none;border-radius:6px;color:var(--color-on-accent);cursor:pointer;font-family:inherit;font-size:.88rem;font-weight:600;padding:.55rem 1.1rem}.newsletter button:hover{background:var(--color-accent-strong)}.newsletter button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.newsletter .fine{font-size:.74rem;margin:.6rem 0 0}.rouge.highlight table td{padding:5px}.rouge.highlight table pre{margin:0}.rouge.highlight,.rouge.highlight .w{background-color:#f6f8fa;color:#24292f}.rouge.highlight .k,.rouge.highlight .kd,.rouge.highlight .kn,.rouge.highlight .kp,.rouge.highlight .kr,.rouge.highlight .kt,.rouge.highlight .kv{color:#cf222e}.rouge.highlight .gr{color:#f6f8fa}.rouge.highlight .gd{background-color:#ffebe9;color:#82071e}.rouge.highlight .nb,.rouge.highlight .nc,.rouge.highlight .nn,.rouge.highlight .no{color:#953800}.rouge.highlight .na,.rouge.highlight .nt,.rouge.highlight .sr{color:#116329}.rouge.highlight .gi{background-color:#dafbe1;color:#116329}.rouge.highlight .ges{font-style:italic;font-weight:700}.rouge.highlight .bp,.rouge.highlight .il,.rouge.highlight .kc,.rouge.highlight .l,.rouge.highlight .ld,.rouge.highlight .m,.rouge.highlight .mb,.rouge.highlight .mf,.rouge.highlight .mh,.rouge.highlight .mi,.rouge.highlight .mo,.rouge.highlight .mx,.rouge.highlight .ne,.rouge.highlight .nl,.rouge.highlight .nv,.rouge.highlight .o,.rouge.highlight .ow,.rouge.highlight .py,.rouge.highlight .sb,.rouge.highlight .vc,.rouge.highlight .vg,.rouge.highlight .vi,.rouge.highlight .vm{color:#0550ae}.rouge.highlight .gh,.rouge.highlight .gu{color:#0550ae;font-weight:700}.rouge.highlight .dl,.rouge.highlight .s,.rouge.highlight .s1,.rouge.highlight .s2,.rouge.highlight .sa,.rouge.highlight .sc,.rouge.highlight .sd,.rouge.highlight .se,.rouge.highlight .sh,.rouge.highlight .ss,.rouge.highlight .sx{color:#0a3069}.rouge.highlight .fm,.rouge.highlight .nd,.rouge.highlight .nf{color:#8250df}.rouge.highlight .err{background-color:#82071e;color:#f6f8fa}.rouge.highlight .c,.rouge.highlight .c1,.rouge.highlight .cd,.rouge.highlight .ch,.rouge.highlight .cm,.rouge.highlight .cp,.rouge.highlight .cpf,.rouge.highlight .cs,.rouge.highlight .gl,.rouge.highlight .gt{color:#6e7781}.rouge.highlight .ni,.rouge.highlight .si{color:#24292f}.rouge.highlight .ge{color:#24292f;font-style:italic}.rouge.highlight .gs{color:#24292f;font-weight:700}:root[data-theme=dark] .rouge.highlight table td{padding:5px}:root[data-theme=dark] .rouge.highlight table pre{margin:0}:root[data-theme=dark] .rouge.highlight,:root[data-theme=dark] .rouge.highlight .w{background-color:#161b22;color:#c9d1d9}:root[data-theme=dark] .rouge.highlight .k,:root[data-theme=dark] .rouge.highlight .kd,:root[data-theme=dark] .rouge.highlight .kn,:root[data-theme=dark] .rouge.highlight .kp,:root[data-theme=dark] .rouge.highlight .kr,:root[data-theme=dark] .rouge.highlight .kt,:root[data-theme=dark] .rouge.highlight .kv{color:#ff7b72}:root[data-theme=dark] .rouge.highlight .gr{color:#f0f6fc}:root[data-theme=dark] .rouge.highlight .gd{background-color:#67060c;color:#ffdcd7}:root[data-theme=dark] .rouge.highlight .nb,:root[data-theme=dark] .rouge.highlight .nc,:root[data-theme=dark] .rouge.highlight .nn,:root[data-theme=dark] .rouge.highlight .no{color:#ffa657}:root[data-theme=dark] .rouge.highlight .na,:root[data-theme=dark] .rouge.highlight .nt,:root[data-theme=dark] .rouge.highlight .sr{color:#7ee787}:root[data-theme=dark] .rouge.highlight .gi{background-color:#033a16;color:#aff5b4}:root[data-theme=dark] .rouge.highlight .ges{font-style:italic;font-weight:700}:root[data-theme=dark] .rouge.highlight .bp,:root[data-theme=dark] .rouge.highlight .il,:root[data-theme=dark] .rouge.highlight .kc,:root[data-theme=dark] .rouge.highlight .l,:root[data-theme=dark] .rouge.highlight .ld,:root[data-theme=dark] .rouge.highlight .m,:root[data-theme=dark] .rouge.highlight .mb,:root[data-theme=dark] .rouge.highlight .mf,:root[data-theme=dark] .rouge.highlight .mh,:root[data-theme=dark] .rouge.highlight .mi,:root[data-theme=dark] .rouge.highlight .mo,:root[data-theme=dark] .rouge.highlight .mx,:root[data-theme=dark] .rouge.highlight .ne,:root[data-theme=dark] .rouge.highlight .nl,:root[data-theme=dark] .rouge.highlight .nv,:root[data-theme=dark] .rouge.highlight .o,:root[data-theme=dark] .rouge.highlight .ow,:root[data-theme=dark] .rouge.highlight .py,:root[data-theme=dark] .rouge.highlight .sb,:root[data-theme=dark] .rouge.highlight .vc,:root[data-theme=dark] .rouge.highlight .vg,:root[data-theme=dark] .rouge.highlight .vi,:root[data-theme=dark] .rouge.highlight .vm{color:#79c0ff}:root[data-theme=dark] .rouge.highlight .gh,:root[data-theme=dark] .rouge.highlight .gu{color:#1f6feb;font-weight:700}:root[data-theme=dark] .rouge.highlight .dl,:root[data-theme=dark] .rouge.highlight .s,:root[data-theme=dark] .rouge.highlight .s1,:root[data-theme=dark] .rouge.highlight .s2,:root[data-theme=dark] .rouge.highlight .sa,:root[data-theme=dark] .rouge.highlight .sc,:root[data-theme=dark] .rouge.highlight .sd,:root[data-theme=dark] .rouge.highlight .se,:root[data-theme=dark] .rouge.highlight .sh,:root[data-theme=dark] .rouge.highlight .ss,:root[data-theme=dark] .rouge.highlight .sx{color:#a5d6ff}:root[data-theme=dark] .rouge.highlight .fm,:root[data-theme=dark] .rouge.highlight .nd,:root[data-theme=dark] .rouge.highlight .nf{color:#d2a8ff}:root[data-theme=dark] .rouge.highlight .err{background-color:#8e1519;color:#f0f6fc}:root[data-theme=dark] .rouge.highlight .c,:root[data-theme=dark] .rouge.highlight .c1,:root[data-theme=dark] .rouge.highlight .cd,:root[data-theme=dark] .rouge.highlight .ch,:root[data-theme=dark] .rouge.highlight .cm,:root[data-theme=dark] .rouge.highlight .cp,:root[data-theme=dark] .rouge.highlight .cpf,:root[data-theme=dark] .rouge.highlight .cs,:root[data-theme=dark] .rouge.highlight .gl,:root[data-theme=dark] .rouge.highlight .gt{color:#8b949e}:root[data-theme=dark] .rouge.highlight .ni,:root[data-theme=dark] .rouge.highlight .si{color:#c9d1d9}:root[data-theme=dark] .rouge.highlight .ge{color:#c9d1d9;font-style:italic}:root[data-theme=dark] .rouge.highlight .gs{color:#c9d1d9;font-weight:700}@media(prefers-color-scheme:dark){:root:not([data-theme]) .rouge.highlight table td{padding:5px}:root:not([data-theme]) .rouge.highlight table pre{margin:0}:root:not([data-theme]) .rouge.highlight,:root:not([data-theme]) .rouge.highlight .w{background-color:#161b22;color:#c9d1d9}:root:not([data-theme]) .rouge.highlight .k,:root:not([data-theme]) .rouge.highlight .kd,:root:not([data-theme]) .rouge.highlight .kn,:root:not([data-theme]) .rouge.highlight .kp,:root:not([data-theme]) .rouge.highlight .kr,:root:not([data-theme]) .rouge.highlight .kt,:root:not([data-theme]) .rouge.highlight .kv{color:#ff7b72}:root:not([data-theme]) .rouge.highlight .gr{color:#f0f6fc}:root:not([data-theme]) .rouge.highlight .gd{background-color:#67060c;color:#ffdcd7}:root:not([data-theme]) .rouge.highlight .nb,:root:not([data-theme]) .rouge.highlight .nc,:root:not([data-theme]) .rouge.highlight .nn,:root:not([data-theme]) .rouge.highlight .no{color:#ffa657}:root:not([data-theme]) .rouge.highlight .na,:root:not([data-theme]) .rouge.highlight .nt,:root:not([data-theme]) .rouge.highlight .sr{color:#7ee787}:root:not([data-theme]) .rouge.highlight .gi{background-color:#033a16;color:#aff5b4}:root:not([data-theme]) .rouge.highlight .ges{font-style:italic;font-weight:700}:root:not([data-theme]) .rouge.highlight .bp,:root:not([data-theme]) .rouge.highlight .il,:root:not([data-theme]) .rouge.highlight .kc,:root:not([data-theme]) .rouge.highlight .l,:root:not([data-theme]) .rouge.highlight .ld,:root:not([data-theme]) .rouge.highlight .m,:root:not([data-theme]) .rouge.highlight .mb,:root:not([data-theme]) .rouge.highlight .mf,:root:not([data-theme]) .rouge.highlight .mh,:root:not([data-theme]) .rouge.highlight .mi,:root:not([data-theme]) .rouge.highlight .mo,:root:not([data-theme]) .rouge.highlight .mx,:root:not([data-theme]) .rouge.highlight .ne,:root:not([data-theme]) .rouge.highlight .nl,:root:not([data-theme]) .rouge.highlight .nv,:root:not([data-theme]) .rouge.highlight .o,:root:not([data-theme]) .rouge.highlight .ow,:root:not([data-theme]) .rouge.highlight .py,:root:not([data-theme]) .rouge.highlight .sb,:root:not([data-theme]) .rouge.highlight .vc,:root:not([data-theme]) .rouge.highlight .vg,:root:not([data-theme]) .rouge.highlight .vi,:root:not([data-theme]) .rouge.highlight .vm{color:#79c0ff}:root:not([data-theme]) .rouge.highlight .gh,:root:not([data-theme]) .rouge.highlight .gu{color:#1f6feb;font-weight:700}:root:not([data-theme]) .rouge.highlight .dl,:root:not([data-theme]) .rouge.highlight .s,:root:not([data-theme]) .rouge.highlight .s1,:root:not([data-theme]) .rouge.highlight .s2,:root:not([data-theme]) .rouge.highlight .sa,:root:not([data-theme]) .rouge.highlight .sc,:root:not([data-theme]) .rouge.highlight .sd,:root:not([data-theme]) .rouge.highlight .se,:root:not([data-theme]) .rouge.highlight .sh,:root:not([data-theme]) .rouge.highlight .ss,:root:not([data-theme]) .rouge.highlight .sx{color:#a5d6ff}:root:not([data-theme]) .rouge.highlight .fm,:root:not([data-theme]) .rouge.highlight .nd,:root:not([data-theme]) .rouge.highlight .nf{color:#d2a8ff}:root:not([data-theme]) .rouge.highlight .err{background-color:#8e1519;color:#f0f6fc}:root:not([data-theme]) .rouge.highlight .c,:root:not([data-theme]) .rouge.highlight .c1,:root:not([data-theme]) .rouge.highlight .cd,:root:not([data-theme]) .rouge.highlight .ch,:root:not([data-theme]) .rouge.highlight .cm,:root:not([data-theme]) .rouge.highlight .cp,:root:not([data-theme]) .rouge.highlight .cpf,:root:not([data-theme]) .rouge.highlight .cs,:root:not([data-theme]) .rouge.highlight .gl,:root:not([data-theme]) .rouge.highlight .gt{color:#8b949e}:root:not([data-theme]) .rouge.highlight .ni,:root:not([data-theme]) .rouge.highlight .si{color:#c9d1d9}:root:not([data-theme]) .rouge.highlight .ge{color:#c9d1d9;font-style:italic}:root:not([data-theme]) .rouge.highlight .gs{color:#c9d1d9;font-weight:700}}.content h2,.content h3,.content h4{line-height:1.3}.content .anchor{color:var(--color-muted);margin-left:-1.1em;padding-right:.3em;text-decoration:none;visibility:hidden}.content h2:hover .anchor,.content h3:hover .anchor,.content h4:hover .anchor{visibility:visible}.content code,.content pre{font-family:var(--font-mono)}.content code:not(pre code){background:var(--color-surface);border-radius:4px;font-size:.88em;padding:.12em .4em}.content .listingblock{border:1px solid var(--color-border);border-radius:8px;margin:1.3rem 0;overflow:hidden}.content .listingblock pre{font-size:.85rem;line-height:1.6;margin:0;overflow-x:auto;padding:1rem 1.1rem}.content .listingblock:has(+.colist){border-bottom-left-radius:0;border-bottom-right-radius:0;margin-bottom:0}.content .conum{align-items:center;background:var(--color-accent);border-radius:999px;color:var(--color-on-accent);display:inline-flex;font-size:.78em;font-style:normal;font-weight:700;justify-content:center;line-height:1.5;min-width:1.4em;padding:0 .35em}.content .colist{background:var(--color-bg);border:1px solid var(--color-border);border-radius:0 0 8px 8px;border-top:none;color:var(--color-muted);font-size:.86rem;margin:0 0 1.3rem;padding:.75rem 1.1rem}.content .colist ol{margin:0;padding-left:1.2em}.content .colist li+li{margin-top:.3rem}.content .colist p{margin:0}.content .literalblock pre{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;overflow-x:auto;padding:1rem 1.1rem}.content table{border-collapse:collapse;margin:1.25rem 0;width:100%}.content table td,.content table th{border:1px solid var(--color-border);padding:.5rem .75rem;text-align:left}.content .admonitionblock{--_c:var(--color-note);align-items:flex-start;background:var(--color-surface);border-left:4px solid var(--_c);border-radius:6px;display:flex;gap:.85rem;margin:1.3rem 0;padding:.9rem 1.1rem}.content .admonitionblock.warning{--_c:var(--color-warning)}.content .admonitionblock.tip{--_c:var(--color-tip)}.content .admonitionblock table,.content .admonitionblock tr{display:contents}.content .admonitionblock td{border:none;padding:0}.content .admonitionblock td.content{flex:1;font-size:.92rem}.content .admonitionblock td.content p:last-child{margin-bottom:0}.content .admonitionblock .title{align-items:center;color:var(--_c);display:inline-flex;font-size:.72rem;font-weight:700;gap:.4rem;letter-spacing:.04em;margin-bottom:.3rem;text-transform:uppercase}.content .admonitionblock .title:before{align-items:center;background:var(--_c);border-radius:50%;color:var(--color-on-accent);content:"i";display:inline-flex;font-size:.68rem;font-style:normal;height:1.1rem;justify-content:center;width:1.1rem}.content .admonitionblock.warning .title:before{content:"!"}.content .admonitionblock.tip .title:before{content:"\2713"}.content img{max-width:100%}.hero{align-items:center;-moz-column-gap:3rem;column-gap:3rem;display:grid;grid-template-areas:"tagline  portrait" "headline portrait" "bio      portrait";grid-template-columns:minmax(0,1fr)auto;margin:1.25rem 0 2.5rem}.hero__tagline{color:var(--color-muted);font-size:.9rem;grid-area:tagline;letter-spacing:.02em;margin:0}.hero__headline{font-size:2rem;grid-area:headline;margin:.75rem 0 0}.hero__headline em{color:var(--color-accent-strong);font-style:italic}.hero__portrait{border-radius:22px;box-shadow:0 0 0 1px var(--color-border),0 0 0 6px var(--color-bg),0 0 0 7px var(--color-accent),0 24px 40px -24px rgba(0,0,0,.45);grid-area:portrait;height:240px;-o-object-fit:cover;object-fit:cover;-o-object-position:50% 30%;object-position:50% 30%;width:240px}.hero__bio{color:var(--color-muted);grid-area:bio;margin-top:1rem}.hero__bio p{margin:0}.hero__bio a{color:var(--color-accent)}@media(max-width:45rem){.hero{align-items:start;-moz-column-gap:1.1rem;column-gap:1.1rem;grid-template-areas:"tagline  tagline" "headline headline" "portrait bio";grid-template-columns:auto minmax(0,1fr)}.hero__bio{margin-top:1.2rem}.hero__portrait{border-radius:16px;box-shadow:0 0 0 1px var(--color-border),0 0 0 3px var(--color-bg),0 0 0 4px var(--color-accent),0 12px 24px -16px rgba(0,0,0,.4);height:96px;margin-top:.3rem;width:96px}}.search-box{margin:0 0 2.5rem}.search-box__field{align-items:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;display:flex;gap:.6rem;padding:.65rem 1rem}.search-box__field:focus-within{border-color:var(--color-accent)}.search-box__field svg{color:var(--color-muted);flex-shrink:0;height:1rem;width:1rem}.search-box__field input{background:0 0;border:none;color:var(--color-text);flex:1;font:inherit;outline:none}.search-box__field input::-moz-placeholder{color:var(--color-muted)}.search-box__field input::placeholder{color:var(--color-muted)}.search-box__hint{color:var(--color-muted);font-size:.8rem;margin:.5rem 0 0}.search-box__hint b{color:var(--color-text);font-weight:600}.search-no-results{color:var(--color-muted);padding:.9rem 0}body.searching .featured-project{display:none}.featured-project{background:var(--color-surface-2);border-radius:10px;display:flex;flex-direction:column;gap:1.25rem;margin:0 0 2.5rem;padding:1.5rem}.featured-project__image{border-radius:8px;width:100%}.featured-project__body h2{margin:0 0 .5rem}.featured-project__body p{color:var(--color-muted);margin:0 0 1rem}.featured-project__ctas{display:flex;flex-wrap:wrap;gap:.6rem}@media(min-width:30rem){.featured-project{align-items:center;flex-direction:row}.featured-project__image{width:40%}}.btn{align-items:center;border-radius:6px;display:inline-flex;font-size:.88rem;font-weight:600;padding:.55rem 1.1rem}.btn:hover{text-decoration:none}.btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.btn--primary{background:var(--color-accent);border:none;color:var(--color-on-accent)}.btn--primary:hover{background:var(--color-accent-strong)}.btn--secondary{border:1px solid var(--color-border);color:var(--color-text)}.btn--secondary:hover{border-color:var(--color-accent)}.projects-grid{display:flex;flex-direction:column;gap:1rem;list-style:none;margin:1.5rem 0 0;padding:0}.projects-grid__card a{align-items:stretch;border:1px solid var(--color-border);border-radius:8px;color:var(--color-text);display:flex;height:8rem;overflow:hidden}.projects-grid__card a:hover{border-color:var(--color-accent);text-decoration:none}.projects-grid__cover{display:block;flex-shrink:0;height:100%;-o-object-fit:cover;object-fit:cover;width:10rem}.projects-grid__body{min-width:0;overflow:hidden;padding:1rem 1.1rem}.projects-grid__icon{height:1.75rem;margin-bottom:.4rem;width:1.75rem}.projects-grid__title{display:block;font-weight:600}.projects-grid__subtitle{display:-webkit-box;-webkit-box-orient:vertical;color:var(--color-muted);font-size:.85rem;-webkit-line-clamp:2;margin-top:.2rem;overflow:hidden}@media(max-width:26rem){.projects-grid__cover{width:6rem}}.project-subtitle{color:var(--color-muted);font-size:1.05rem;margin:-.5rem 0 1.25rem}.project-cover{border:1px solid var(--color-border);border-radius:8px;display:block;height:auto;margin:0 0 1.5rem;width:100%}.recent-posts__header{align-items:baseline;display:flex;flex-wrap:wrap;gap:.5rem;justify-content:space-between}.recent-posts__header h2{margin:0}.recent-posts__count{color:var(--color-muted);font-size:.85rem}.archive-link{display:inline-block;font-size:.9rem;margin-top:1.25rem}