@font-face{font-family:Source Code Pro;font-style:normal;font-weight:200 900;font-display:optional;src:url(/assets/source-code-pro-latin-ext-wght-normal-0UZNSh4u.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Source Code Pro;font-style:normal;font-weight:200 900;font-display:optional;src:url(/assets/source-code-pro-latin-wght-normal-BP8Zz55n.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{font-family:Source Code Pro,ui-monospace,SFMono-Regular,Menlo,Consolas,DejaVu Sans Mono,monospace;font-synthesis:none;text-rendering:optimizeLegibility;--background: #dad6cf;--surface: #e3e0da;--border: #c5c0b7;--text: #282521;--muted: #59544d;--accent: #284f7d;--accent-hover: #1e3d63;--accent-soft: rgba(40, 79, 125, .45);--accent-contrast: #e3e0da;color:var(--text);background:var(--background)}html[data-theme=dark]{--background: #1f1e1c;--surface: #292725;--border: #3a3733;--text: #dad6cf;--muted: #a29c92;--accent: #93b3d9;--accent-hover: #afc8e6;--accent-soft: rgba(147, 179, 217, .45);--accent-contrast: #1f1e1c}@media(prefers-color-scheme:dark){html:not([data-theme]){--background: #1f1e1c;--surface: #292725;--border: #3a3733;--text: #dad6cf;--muted: #a29c92;--accent: #93b3d9;--accent-hover: #afc8e6;--accent-soft: rgba(147, 179, 217, .45);--accent-contrast: #1f1e1c}}*{box-sizing:border-box}html{min-width:320px;scrollbar-gutter:stable}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{margin:0;min-width:320px;min-height:100vh;background:var(--background);color:var(--text);transition:background-color .18s ease,color .18s ease}body,button,input,a{font:inherit}a{color:inherit}button,summary{cursor:pointer}button{color:inherit}code,pre{font-family:inherit}code{padding:.08em .35em;border-radius:4px;background:var(--surface);font-size:.92em}::selection{background:var(--accent);color:var(--accent-contrast)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}section[id]{scroll-margin-top:24px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;z-index:20;top:12px;left:12px;padding:10px 12px;color:var(--accent-contrast);background:var(--accent);transform:translateY(-160%);transition:transform .16s ease}.skip-link:focus{transform:translateY(0)}.site-shell{min-height:100vh;background:var(--background)}.section-wrap{width:min(1120px,calc(100% - 48px));margin:0 auto}.rich a,.link{color:var(--text);text-decoration:underline;text-decoration-color:var(--accent-soft);text-decoration-thickness:1px;text-underline-offset:4px;transition:color .15s ease,text-decoration-color .15s ease}.rich a:hover,.link:hover{color:var(--accent);text-decoration-color:var(--accent)}.quiet-link{color:var(--muted);font-size:.85rem;text-decoration:none;transition:color .15s ease}.quiet-link:hover{color:var(--accent)}.button{display:inline-flex;min-height:44px;align-items:center;justify-content:center;padding:10px 16px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text);font-size:.9rem;font-weight:500;text-decoration:none;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.button--primary{background:var(--accent);color:var(--accent-contrast)}.button--primary:hover{background:var(--accent-hover)}.button--ghost{border-color:var(--border)}.button--ghost:hover{border-color:var(--accent);color:var(--accent)}.button--quiet{color:var(--muted)}.button--quiet:hover{color:var(--accent)}.button--small{min-height:38px;padding:7px 12px;font-size:.8rem;font-weight:400}.site-header{border-bottom:1px solid var(--border)}.site-header__inner{display:flex;min-height:72px;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px}.brand{color:var(--text);font-size:1.15rem;font-weight:700;text-decoration:none;white-space:nowrap;transition:color .15s ease}.brand:hover{color:var(--accent)}.site-nav{display:flex;flex-wrap:wrap;gap:8px 32px;font-size:.88rem}.site-nav a{position:relative;color:var(--muted);text-decoration:none;transition:color .15s ease}.site-nav a:hover{color:var(--accent)}.site-nav a[aria-current=page]{color:var(--text)}.site-nav a[aria-current=page]:after{position:absolute;right:0;bottom:-8px;left:0;height:2px;border-radius:1px;background:var(--accent);content:""}.site-footer{border-top:1px solid var(--border)}.site-footer__inner{display:flex;min-height:100px;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 24px;padding:24px 0}.site-footer__controls{display:flex;gap:8px}.site-footer__links{display:flex;flex-wrap:wrap;gap:8px 24px;margin:0;color:var(--muted);font-size:.8rem}.site-footer__links a{color:var(--muted);text-decoration:none;transition:color .15s ease}.site-footer__links a:hover{color:var(--accent)}.menu{position:relative}.control-button{display:inline-flex;min-height:38px;align-items:center;gap:7px;padding:7px 10px;border:1px solid var(--border);border-radius:6px;color:var(--muted);font-size:.8rem;list-style:none;transition:border-color .15s ease,color .15s ease}.control-button::-webkit-details-marker{display:none}.control-button:hover,.menu[open] .control-button{border-color:var(--accent);color:var(--accent)}.theme-symbol{font-size:1rem;line-height:1}.menu__panel{position:absolute;z-index:11;bottom:calc(100% + 8px);left:0;display:grid;min-width:170px;gap:2px;padding:6px;border:1px solid var(--border);border-radius:6px;background:var(--surface);box-shadow:0 6px 18px #0000001f}.menu__option{display:flex;width:100%;align-items:center;gap:8px;padding:8px 9px;border:0;border-radius:4px;background:transparent;color:var(--muted);font-size:.8rem;text-align:left}.menu__option:hover,.menu__option[aria-checked=true]{background:var(--background);color:var(--text)}.intro{display:flex;flex-wrap:wrap;align-items:center;gap:32px 56px;padding:104px 0}.avatar{display:grid;width:160px;height:160px;flex:0 0 auto;place-items:center;overflow:hidden;border:1px solid var(--border);border-radius:30px;background:var(--surface);color:var(--muted);font-size:56px;font-weight:600;object-fit:cover}.intro__main{min-width:0;flex:1 1 440px}.hero__title{margin:0;font-size:clamp(2.4rem,5.2vw,4rem);font-weight:600;letter-spacing:-.05em;line-height:1}.hero__line{position:relative;display:inline-block}.hero__text{display:block}.hero__line:after{position:absolute;top:.06em;left:100%;width:.08em;height:.86em;background:var(--accent);content:"";opacity:0}.hero__line--1{--type-steps: 3;--type-duration: .24s;--type-delay: .15s;--type-end: .39s}.hero__line--2{--type-steps: 10;--type-duration: .78s;--type-delay: .54s;--type-end: 1.32s}.hero__text{animation:type-reveal var(--type-duration) steps(var(--type-steps),end) var(--type-delay) backwards}.hero__line--1:after{animation:caret-move var(--type-duration) steps(var(--type-steps),end) var(--type-delay) forwards,caret-off 1ms linear var(--type-end) forwards}.hero__line--2:after{animation:caret-move var(--type-duration) steps(var(--type-steps),end) var(--type-delay) forwards,caret-blink .7s step-end var(--type-end) 3,caret-off 1ms linear calc(var(--type-end) + 2.1s) forwards}.intro__text{max-width:36em;margin:32px 0 0;font-size:1.15rem;line-height:1.6}.intro__text+.intro__text{margin-top:12px}.intro__text--muted{color:var(--muted)}.split-band{border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.split{display:flex}.split__half{display:flex;min-width:0;flex:1 1 0;flex-direction:column;padding:56px 0 48px}.split__half--left{padding-right:56px}.split__half--right{padding-left:56px}.split__divider{flex:0 0 1px;align-self:stretch;background:var(--border)}.split__head,.split__foot{display:flex;min-height:40px;align-items:center;justify-content:space-between;gap:12px}.split__foot{margin-top:auto;padding-top:28px}.split__label{margin:0;font-size:.95rem;font-weight:600}.split__meta{display:flex;flex-wrap:wrap;gap:4px 20px;margin:0;color:var(--muted);font-size:.85rem}.split__title{margin:8px 0 0;font-size:1.45rem;font-weight:600;letter-spacing:-.03em;line-height:1.25}.split__title--post{margin-top:36px}.split__title a{text-decoration:none;transition:color .15s ease}.split__title a:hover{color:var(--accent)}.split__text{margin:18px 0 0;line-height:1.75}.split__text+.split__text{margin-top:14px}.split__more{display:inline-block;margin-top:18px;font-size:.92rem}.slider{display:flex;flex:1;flex-direction:column}.slider__controls{display:flex;align-items:center;gap:8px}.slider__count{margin-right:6px;color:var(--muted);font-size:.85rem}.icon-button{display:inline-flex;width:40px;height:40px;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:6px;background:transparent;color:var(--text);font-size:.9rem;transition:border-color .15s ease,color .15s ease}.icon-button:hover{border-color:var(--accent);color:var(--accent)}.slider__viewport{overflow:hidden;margin-top:28px}.slider__track{display:flex;transition:transform .5s ease}.slider__slide{min-width:0;flex:0 0 100%;padding-right:4px}.slider__context{margin:0;color:var(--muted);font-size:.85rem}.slider__link{display:inline-block;margin-top:18px;font-size:.92rem}.slider__dots{display:flex;gap:2px;margin-left:-11px}.slider__dot{display:inline-flex;width:32px;height:32px;align-items:center;justify-content:center;padding:0;border:0;background:transparent}.slider__dot span{display:block;width:9px;height:9px;border-radius:50%;background:var(--border);transition:background-color .15s ease,transform .15s ease}.slider__dot:hover span{background:var(--muted)}.slider__dot[aria-current=true] span{background:var(--accent);transform:scale(1.15)}.slider__pause{min-height:40px;padding:0 10px;border:0;background:transparent;color:var(--muted);font-size:.82rem;transition:color .15s ease}.slider__pause:hover{color:var(--accent)}html:not(.js) .slider__controls,html:not(.js) .slider__foot{display:none}html:not(.js) .slider__track{display:block;transform:none!important}html:not(.js) .slider__slide+.slider__slide{margin-top:36px}@media(prefers-reduced-motion:reduce){.slider__track{transition:none}}.tools{padding:80px 0 88px}.section-title{margin:0;font-size:1.45rem;font-weight:600;letter-spacing:-.02em;line-height:1.25}.tools__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px 72px;margin:44px 0 0;padding:0;list-style:none}.tool{display:grid;grid-template-columns:14px minmax(0,1fr);gap:0 14px}.tool__mark{width:8px;height:8px;margin-top:.5em;border-radius:2px;background:var(--accent)}.tool__name{margin:0;font-size:1.05rem;font-weight:600;line-height:1.4}.tool__text{margin:8px 0 0;color:var(--muted);font-size:.95rem;line-height:1.7}.tool__link{display:inline-block;margin-top:10px;font-size:.88rem}.tools__all{margin:40px 0 0}.call-band{border-top:1px solid var(--border);background:var(--surface)}.call{display:flex;flex-wrap:wrap;gap:40px 88px;padding:80px 0 88px}.call__main{min-width:0;flex:1 1 420px}.call__text{max-width:36em;margin:18px 0 0;font-size:1.02rem;line-height:1.7}.call__text--muted{color:var(--muted)}.call__actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px 24px;margin-top:28px}.call__mail{color:var(--muted);font-size:.92rem}.call__side{min-width:0;flex:1 1 360px;padding-top:6px}.prompt__lead{margin:0;color:var(--muted);font-size:.95rem;line-height:1.6}.prompt__text{margin:12px 0 0;padding:14px 16px;border:1px solid var(--border);border-radius:6px;background:var(--surface);font-size:.98rem}.call .prompt__text{background:var(--background)}.prompt__mark{color:var(--accent)}.prompt__chat{display:none}html[data-chat] .prompt__chat{display:inline-flex}.prompt__actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}.rich .prompt a.button{color:var(--text);text-decoration:none}.rich .prompt a.button:hover{color:var(--accent)}.item-list{margin:0;padding:0;list-style:none;line-height:1.7}.item-list li{display:grid;gap:4px}.item-list li+li{margin-top:18px}.item-list__title{font-weight:600}.item-list li span{color:var(--muted)}.item-list li span:only-child{color:var(--text)}.steps{margin:0;padding:0;counter-reset:step;list-style:none;line-height:1.75}.steps li{position:relative;padding-left:2.4em;counter-increment:step}.steps li+li{margin-top:16px}.steps li:before{position:absolute;left:0;color:var(--accent);content:counter(step);font-weight:600}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:.95rem;line-height:1.6}.table th,.table td{padding:12px 14px;border:1px solid var(--border);text-align:left;vertical-align:top}.table thead th{background:var(--surface);font-weight:600}.table tbody th{width:14%;font-weight:600}.table td{color:var(--muted)}@media(max-width:720px){.table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.table,.table tbody,.table tr,.table th,.table td{display:block;width:auto}.table tbody th{width:auto}.table tbody tr+tr{margin-top:14px}.table td:before{display:block;color:var(--text);content:attr(data-label);font-weight:600}}.note{color:var(--muted);font-size:.92rem;line-height:1.7}.term{position:relative;display:inline-block}.term__word{padding:0;border:0;background:none;color:inherit;cursor:help;text-decoration:underline dotted;text-decoration-color:var(--accent);text-decoration-thickness:1.5px;text-underline-offset:4px;white-space:nowrap}.term__tip{position:absolute;z-index:20;top:calc(100% + 6px);left:var(--term-shift, 0);width:min(20rem,calc(100vw - 32px));padding:10px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface);box-shadow:0 6px 20px #00000024;color:var(--text);font-size:.88rem;line-height:1.55;visibility:hidden;opacity:0;pointer-events:none}.term__tip strong{display:block;margin-bottom:2px;color:var(--accent);font-weight:600}.term[data-open=true] .term__tip,.term__word:focus-visible+.term__tip{visibility:visible;opacity:1}@media(hover:hover){.term__word:hover+.term__tip{visibility:visible;opacity:1}}@media(prefers-reduced-motion:no-preference){.term__tip{transition:opacity .12s ease,visibility .12s}}.term__note{display:none}.article__main--notes .term__note{position:absolute;display:block;width:var(--note-width);padding-left:12px;border-left:2px solid var(--border);color:var(--muted);font-size:.8rem;line-height:1.5;transition:border-color .15s ease,color .15s ease}.article__main--notes .term__note[data-hidden=true]{display:none}.article__main--notes .term__note strong{color:var(--text);font-weight:600}.article__main--notes .term:hover .term__note,.article__main--notes .term[data-open=true] .term__note,.article__main--notes .term__word:focus-visible~.term__note{border-left-color:var(--accent);color:var(--text)}@media(max-width:720px){.term__tip{position:fixed;inset:auto 16px 16px;width:auto}}.code-block{overflow-x:auto;margin:0;padding:14px 16px;border:1px solid var(--border);border-radius:6px;background:var(--surface);font-size:.88rem;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}.code-block code{padding:0;background:none;font-size:inherit}.example{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 10px 10px 16px;border:1px solid var(--border);border-radius:6px;background:var(--surface)}.example__text{margin:0;font-size:.95rem;line-height:1.5}.figure{margin:0}.figure img{display:block;max-width:100%;height:auto;border:1px solid var(--border);border-radius:8px}.figure__zoom{display:block;cursor:zoom-in}.lightbox{max-width:96vw;max-height:96vh;padding:0;border:0;background:transparent;overflow:visible}.lightbox::backdrop{background:#000000d1}.lightbox img{display:block;max-width:96vw;max-height:96vh;object-fit:contain;border-radius:8px;cursor:zoom-out}.toc__label{margin:0 0 12px;font-size:.85rem;font-weight:600}.toc{margin:0;padding:0;list-style:none;font-size:.85rem;line-height:1.5}.toc a{display:block;padding:6px 0 6px 14px;border-left:2px solid var(--border);color:var(--muted);text-decoration:none;transition:border-color .15s ease,color .15s ease}.toc a:hover{color:var(--accent)}.toc a[aria-current=true]{border-left-color:var(--accent);color:var(--text)}.doc{padding:80px 0 104px}.doc>*{max-width:720px}.doc__title,.article__title{margin:0;font-size:2.3rem;font-weight:600;letter-spacing:-.045em;line-height:1.12;overflow-wrap:break-word}.doc__intro{margin:20px 0 0;font-size:1.05rem;line-height:1.7}.doc__meta{margin:16px 0 0;color:var(--muted);font-size:.82rem}.doc__toc{margin-top:40px}.doc__section{margin-top:56px}.doc__section h2,.prose h2{margin:0;font-size:1.2rem;font-weight:600;letter-spacing:-.02em;line-height:1.3}.doc__body{margin-top:16px;line-height:1.75}.doc__body>*{margin:0}.doc__body>*+*{margin-top:16px}.list-page{padding:72px 0 104px}.list-page>*{max-width:880px}.search__input{width:100%;max-width:560px;min-height:48px;padding:12px 16px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font-size:.95rem;transition:border-color .15s ease}.search__input::placeholder{color:var(--muted)}.search__input:hover,.search__input:focus{border-color:var(--accent)}.search__input:focus-visible{outline-offset:1px}html:not(.js) .search{display:none}.list-page__intro{max-width:38em;margin:16px 0 0;color:var(--muted);font-size:.95rem;line-height:1.65}.post-index{margin-top:48px}.post-index__year+.post-index__year{margin-top:48px}.post-index__year-label{margin:0 0 14px;color:var(--muted);font-size:.85rem}.post-index__list{margin:0;padding:0;list-style:none}.post-index__item{display:grid;grid-template-columns:150px minmax(0,1fr);gap:6px 40px;padding:32px 0;border-top:1px solid var(--border)}.post-index__date{padding-top:.3em;color:var(--muted);font-size:.85rem}.post-index__title{margin:0;font-size:1.2rem;font-weight:600;letter-spacing:-.02em;line-height:1.35}.post-index__title a{text-decoration:none;transition:color .15s ease}.post-index__title a:hover{color:var(--accent)}.post-index__excerpt{max-width:40em;margin:10px 0 0;font-size:.97rem;line-height:1.7}.post-index__meta{display:flex;flex-wrap:wrap;gap:4px 18px;margin:8px 0 0;color:var(--muted);font-size:.82rem}.post-index__empty{margin:0 0 24px;color:var(--muted);font-size:.95rem}.post-index__more{padding:32px 0 0 190px;border-top:1px solid var(--border)}.js .is-later:not(.is-shown){display:none}html:not(.js) .post-index__more{display:none}.article{display:grid;grid-template-columns:200px minmax(0,680px);gap:0 56px;padding:80px 0 104px}.article__side{color:var(--muted);font-size:.85rem;line-height:1.5}.article__side-inner{position:sticky;top:24px}.article__back{display:inline-block;margin-bottom:36px;color:var(--muted);text-decoration:none;transition:color .15s ease}.article__back:hover{color:var(--accent)}.article__back--mobile,.article__date--mobile,.toc-mobile{display:none}.article__side .article__date{display:flex;flex-direction:column;gap:2px;margin:0}.article__main{min-width:0}.article__meta{display:flex;flex-wrap:wrap;gap:4px 18px;margin:16px 0 0;color:var(--muted);font-size:.88rem}.article__notice{margin:24px 0 0;color:var(--muted);font-size:.92rem}.article__lede{margin-top:24px}.article__lede p{margin:0;font-size:1.12rem;line-height:1.7}.article__lede p+p{margin-top:1em}.prose>section{margin-top:52px}.prose section>*{margin:0}.prose section>*+*{margin-top:16px}.prose p,.prose .item-list,.prose .steps{line-height:1.8}.prose .item-list li{position:relative;display:block;padding-left:1.5em}.prose .item-list li+li{margin-top:10px}.prose .item-list li:before{position:absolute;left:0;color:var(--accent);content:"–"}.prose .item-list li span{color:var(--text)}.prose .item-list__title:after{content:":"}.prose .item-list__title+span:before{content:" "}.prose .steps li:before{font-size:1.05rem}.prose .example+.example{margin-top:10px}.article__end{margin-top:72px;padding-top:28px;border-top:1px solid var(--border)}.next-guide{display:block;text-decoration:none}.next-guide small{display:block;color:var(--muted);font-size:.8rem}.next-guide b{display:inline-block;margin-top:4px;font-size:1.05rem;font-weight:600;transition:color .15s ease}.next-guide:hover b{color:var(--accent)}.next-guide span{display:block;margin-top:4px;color:var(--muted);font-size:.92rem;line-height:1.6}.article__closing{margin:0;color:var(--muted);font-size:.92rem;line-height:1.7}.next-guide+.article__closing{margin-top:32px}.article__nav{display:flex;flex-wrap:wrap;justify-content:space-between;gap:24px 40px;margin-top:48px}.article__nav a{display:block;max-width:300px;color:var(--text);font-size:.95rem;line-height:1.45;text-decoration:none;transition:color .15s ease}.article__nav a:hover{color:var(--accent)}.article__nav small{display:block;margin-bottom:6px;color:var(--muted);font-size:.8rem}.article__nav-next{text-align:right}@keyframes type-reveal{0%{clip-path:inset(-.3em 100% -.3em -.1em)}to{clip-path:inset(-.3em 0 -.3em -.1em)}}@keyframes caret-move{0%{left:0;opacity:1}to{left:100%;opacity:1}}@keyframes caret-blink{0%,49%{opacity:1}50%,to{opacity:0}}@keyframes caret-off{to{opacity:0}}@media(max-width:720px){.section-wrap{width:calc(100% - 32px)}.site-header__inner{min-height:60px;padding:10px 0}.site-nav{gap:6px 18px;font-size:.82rem}.site-footer__inner{flex-direction:column;align-items:flex-start}.intro{flex-direction:column;align-items:flex-start;gap:24px;padding:44px 0 56px}.avatar{width:112px;height:112px;border-radius:21px;font-size:40px}.hero__title{font-size:2.4rem}.intro__text{margin-top:24px;font-size:1.05rem}.split{flex-direction:column}.split__half{flex:0 0 auto;padding:44px 0 40px}.split__half--left{padding-right:0}.split__half--right{padding-left:0}.split__divider{width:100%;height:1px}.split__title{font-size:1.25rem}.slider__dot{width:40px;height:40px}.slider__dots{margin-left:-15px}.tools{padding:48px 0 56px}.tools__grid{grid-template-columns:minmax(0,1fr);gap:32px;margin-top:32px}.call{gap:36px;padding:48px 0 56px}.call__actions{flex-direction:column;align-items:stretch}.call__mail{align-self:flex-start}.prompt__actions .button{flex:1 1 140px}.doc,.article{padding:36px 0 72px}.doc__title,.article__title{font-size:1.8rem}.list-page{padding:36px 0 72px}.post-index__item{grid-template-columns:minmax(0,1fr);padding:26px 0}.post-index__date{padding-top:0}.post-index__title{font-size:1.1rem}.post-index__more{padding-left:0}.article{grid-template-columns:minmax(0,1fr)}.article__side{display:none}.article__back--mobile{display:inline-block;margin-bottom:20px;font-size:.85rem}.article__date--mobile{display:flex;flex-direction:row;flex-wrap:wrap;gap:4px 18px;margin-top:16px;color:var(--muted);font-size:.85rem}.toc-mobile{display:block;margin-top:28px;padding:12px 14px;border:1px solid var(--border);border-radius:6px}.toc-mobile summary{font-size:.88rem;font-weight:600}.toc-mobile .toc{margin-top:10px}.article__lede p{font-size:1.04rem}.prose>section{margin-top:44px}.example{flex-direction:column;align-items:stretch}.article__nav{flex-direction:column}.article__nav-next{text-align:left}}@media(max-width:440px){.control-button__label{display:none}.control-button{min-width:38px;justify-content:center}}.chat-launcher{position:fixed;z-index:12;right:20px;bottom:20px;min-width:42px;min-height:42px;padding:9px 14px;border:1px solid var(--accent-soft);border-radius:6px;background:var(--surface);color:var(--text);font-size:.875rem;box-shadow:0 2px 8px #0000001a;transition:border-color .15s ease,color .15s ease}.chat-launcher:hover,.chat-launcher[aria-expanded=true]{border-color:var(--accent);color:var(--accent)}.chat-launcher__caret{color:var(--accent)}@media(prefers-reduced-motion:no-preference){.chat-launcher__caret{animation:caret-blink 1s step-end infinite}}.site-footer{padding-bottom:64px}.chat{position:fixed;z-index:12;inset:auto 20px 72px auto;width:min(460px,calc(100vw - 40px));height:min(620px,calc(100dvh - 100px));max-width:none;max-height:none;margin:0;padding:0;border:1px solid var(--accent-soft);border-radius:8px;background:var(--surface);color:var(--text);box-shadow:0 14px 40px #00000038,0 2px 6px #00000014;font-size:.9rem}html[data-theme=dark] .chat{box-shadow:0 18px 56px #000000b3,0 2px 8px #00000080}.chat:after{content:"";position:absolute;right:18px;bottom:-7px;width:12px;height:12px;border-right:1px solid var(--accent-soft);border-bottom:1px solid var(--accent-soft);background:var(--surface);transform:rotate(45deg)}.chat[open]{display:flex;flex-direction:column}@media(prefers-reduced-motion:no-preference){.chat[open]{animation:chat-pop .14s ease-out}}@keyframes chat-pop{0%{opacity:0;transform:translateY(6px)}}.chat__bar{flex:none;border-bottom:1px solid var(--border)}.chat__bar-inner{display:flex;min-height:48px;align-items:center;justify-content:space-between;gap:8px;padding:0 8px 0 14px}.chat__title{margin:0;white-space:nowrap}.chat__title .brand{font-size:1rem}.chat__title .brand:hover{color:var(--text)}.chat__role{color:var(--muted);font-size:.8rem}.chat__actions{display:flex;align-items:center;gap:4px}.chat__actions .button{white-space:nowrap}.chat__close{min-width:34px;min-height:34px;justify-content:center;border-color:transparent;background:transparent}.chat__log{flex:1;overflow-y:auto;overscroll-behavior:contain}.chat__column{padding:0 14px}.chat__log .chat__column{padding-top:16px;padding-bottom:16px}.chat__empty{color:var(--muted);line-height:1.6}.chat__empty p{margin:0 0 12px}.chat__examples{display:grid;gap:6px;margin:0;padding:0;list-style:none}.chat__example{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:6px;background:var(--background);color:var(--text);font-size:.8rem;text-align:left;transition:border-color .15s ease,color .15s ease}.chat__example:hover{border-color:var(--accent);color:var(--accent)}.chat__message+.chat__message{margin-top:16px}.chat__who{margin:0 0 2px;color:var(--muted);font-size:.7rem;text-transform:lowercase}.chat__message--assistant .chat__who{color:var(--accent)}.chat__text{margin:0;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}.chat__message--user .chat__text{padding-left:10px;border-left:2px solid var(--border);color:var(--muted)}.chat__cursor{color:var(--accent)}.chat__mark{padding:.05em .3em;border-radius:4px;background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent);font-weight:600;white-space:nowrap}@media(prefers-reduced-motion:no-preference){.chat__cursor{animation:chat-blink 1s steps(1) infinite}}@keyframes chat-blink{50%{opacity:0}}.chat__slots{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 0;padding:0;list-style:none}.chat__slot{padding:6px 10px;border:1px solid var(--accent-soft);border-radius:6px;background:var(--background);color:var(--text);font-size:.8rem;transition:border-color .15s ease,color .15s ease}.chat__slot:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.chat__slot:disabled{opacity:.6;cursor:default}.chat__picker{margin-top:10px}.chat__topics{display:grid;gap:6px;margin:10px 0 0;padding:0;list-style:none}.chat__example--quiet{border-style:dashed;color:var(--muted)}.chat__picker-day{margin:0;color:var(--muted);font-size:.8rem}.chat__picker .chat__slots{margin-top:6px}.chat-card{display:grid;gap:8px;margin-top:10px;padding:12px;border:1px solid var(--border);border-left:2px solid var(--accent);border-radius:6px;background:var(--background)}.chat-card--replaced{opacity:.55}.chat-card__title{margin:0;font-weight:600}.chat-card__when{margin:0}.chat-card__when>span,.chat-card__field>span{display:block;color:var(--muted);font-size:.7rem;text-transform:lowercase}.chat-card__field{display:grid;gap:2px}.chat-card__field input,.chat-card__field textarea{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:4px;background:var(--surface);color:var(--text);font:inherit;font-size:1rem;resize:vertical}.chat-card__field--needed>span{color:var(--accent);font-weight:600}.chat-card__field--needed input{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-soft)}.chat-card__field input::placeholder{color:var(--muted);opacity:.8}.chat-card__field input:read-only,.chat-card__field textarea:read-only{border-color:transparent;background:transparent;padding-left:0;resize:none}.chat-card__field input:focus-visible,.chat-card__field textarea:focus-visible{outline:2px solid var(--accent);outline-offset:0}.chat-card__link{padding:0;border:0;background:none;color:var(--accent);font-size:inherit;text-decoration:underline;text-decoration-color:var(--accent-soft);text-underline-offset:3px}.chat-card__actions{display:flex}.chat-card__hint{display:block;margin:0;color:var(--muted);font-size:.75rem}.chat-card__result{margin:0;line-height:1.55}.chat-card__result .chat-card__hint{margin-top:4px}.chat-card__error{margin:0;color:var(--text);font-size:.8rem}.chat__error{margin:16px 0 0;color:var(--muted);font-size:.8rem}.chat__form{flex:none;padding:10px 0;border-top:1px solid var(--border)}.chat__input{display:flex;align-items:flex-end;gap:6px}.chat__input textarea{flex:1;min-height:40px;max-height:140px;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--background);color:var(--text);font:inherit;font-size:1rem;resize:none}.chat__input textarea:focus-visible{outline:2px solid var(--accent);outline-offset:0}.chat__input .button:disabled{opacity:.5;cursor:default}.chat__note{margin:6px 0 0;color:var(--muted);font-size:.7rem;line-height:1.45}.chat__note .quiet-link{font-size:inherit;text-decoration:underline;text-decoration-color:var(--border)}@media(max-width:440px){.chat-launcher{right:12px;bottom:12px}.chat{inset:auto 12px 64px;width:auto;height:min(540px,calc(100dvh - 80px))}.chat:after{right:14px}.chat__role{display:none}}
