*{box-sizing:border-box}a{color:inherit;text-decoration:none}body,html{padding:0;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}body{overflow-x:hidden}.utterances{max-width:100%!important}.static-tweet blockquote{margin:0;-webkit-margin-before:0;margin-block-start:0;-webkit-margin-after:0;margin-block-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0;margin-inline-end:0}.static-tweet-emoji{height:1.2em!important;width:1.2em!important}code[class*=language-],pre[class*=language-]{color:black;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-]{position:relative;margin:.5em 0;overflow:visible;padding:1px}pre[class*=language-]>code{position:relative;z-index:1;border-left:10px solid #358ccb;box-shadow:-1px 0 0 0 #358ccb,0 0 0 1px #dfdfdf;background-color:#fdfdfd;background-image:linear-gradient(transparent 50%,rgba(69,142,209,.04) 0);background-size:3em 3em;background-origin:content-box;background-attachment:local}code[class*=language-]{max-height:inherit;height:inherit;padding:0 1em;display:block;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background-color:#fdfdfd;box-sizing:border-box;margin-bottom:1em}:not(pre)>code[class*=language-]{position:relative;padding:.2em;border-radius:.3em;color:#c92c2c;border:1px solid rgba(0,0,0,.1);display:inline;white-space:normal}pre[class*=language-]:after,pre[class*=language-]:before{content:"";display:block;position:absolute;bottom:.75em;left:.18em;width:40%;height:20%;max-height:13em;box-shadow:0 13px 8px #979797;transform:rotate(-2deg)}pre[class*=language-]:after{right:.75em;left:auto;transform:rotate(2deg)}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7D8B99}.token.punctuation{color:#5F6364}.token.boolean,.token.constant,.token.deleted,.token.function-name,.token.number,.token.property,.token.symbol,.token.tag{color:#c92c2c}.token.attr-name,.token.builtin,.token.char,.token.function,.token.inserted,.token.selector,.token.string{color:#2f9c0a}.token.entity,.token.operator,.token.url,.token.variable{color:#a67f59;background:rgba(255,255,255,.5)}.token.atrule,.token.attr-value,.token.class-name,.token.keyword{color:#1990b8}.token.important,.token.regex{color:#e90}.language-css .token.string,.style .token.string{color:#a67f59;background:rgba(255,255,255,.5)}.token.important{font-weight:400}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.namespace{opacity:.7}@media screen and (max-width:767px){pre[class*=language-]:after,pre[class*=language-]:before{bottom:14px;box-shadow:none}}pre[class*=language-].line-numbers.line-numbers{padding-left:0}pre[class*=language-].line-numbers.line-numbers code{padding-left:3.8em}pre[class*=language-].line-numbers.line-numbers .line-numbers-rows{left:0}pre[class*=language-][data-line]{padding-top:0;padding-bottom:0;padding-left:0}pre[data-line] code{position:relative;padding-left:4em}pre .line-highlight{margin-top:0}pre.notion-code[class*=language-]:after,pre.notion-code[class*=language-]:before{content:none;display:none}.notion-code{background-color:rgba(249,250,251,1);border:1px solid rgba(229,231,235,1);border-radius:.375rem;padding:1.5em!important}.dark-mode .notion-code{background-color:rgba(17,24,39,1);border-color:rgba(55,65,81,1)}.notion code{color:rgba(31,41,55,1);border:0!important;box-shadow:none!important;background:none!important;padding:0!important}.dark-mode .notion code{color:rgba(229,231,235,1)}.dark-mode .notion .notion-inline-code{background:rgb(71,76,80)!important;color:#d7fdc4;padding:.2em .4em!important}.light-mode .notion .notion-inline-code{color:#000000;background:rgba(55,53,47,.1)!important;padding:.2em .4em!important}.token.cdata,.token.doctype,.token.prolog{color:rgba(55,65,81,1)}.token.comment{color:#5b9b4c}.dark-mode .token.cdata,.dark-mode .token.doctype,.dark-mode .token.prolog{color:rgba(209,213,219,1)}.token.punctuation{color:rgba(55,65,81,1)}.dark-mode .token.punctuation{color:rgba(209,213,219,1)}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:rgba(16,185,129,1)}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:rgba(139,92,246,1)}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:rgba(245,158,11,1)}.token.atrule,.token.attr-value,.token.keyword{color:rgba(59,130,246,1)}.token.class-name,.token.function{color:rgba(236,72,153,1)}.token.important,.token.regex,.token.variable{color:rgba(245,158,11,1)}code[class*=language-],pre[class*=language-]{color:rgba(31,41,55,1)}.dark-mode code[class*=language-],.dark-mode pre[class*=language-]{color:rgba(249,250,251,1)}pre::-webkit-scrollbar{display:none}pre{-ms-overflow-style:none;scrollbar-width:none}.token.entity,.token.operator,.token.url,.token.variable{background:none}pre[class*=language-]>code{border-left:0!important;box-shadow:none!important;background:none!important}.blog-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}.blog-code{position:relative;width:100%;min-width:0}.blog-code .notion-code-copy{display:none}.blog-copy{position:absolute;z-index:2;top:14px;right:12px;display:flex;align-items:center;gap:7px;min-height:32px;padding:4px 10px;border:1px solid #d8dfd5;border-radius:7px;background:#f8fcf5;color:#355a35;cursor:pointer;font:inherit;font-size:12px}.blog-copy>span{display:inline-block;font-size:16px}.copy-error{display:block;padding:48px 12px 0;color:#a03f32;font-size:13px}.dark-mode .blog-copy{background:#263326;color:#c2e4b7;border-color:#52624a}.dark-mode .copy-error{color:#ffb2a7}.reading-track{position:fixed;z-index:300;inset:0 0 auto;height:3px;pointer-events:none}.reading-track>div{width:100%;height:100%;transform:scaleX(0);transform-origin:left;background:linear-gradient(90deg,#6a975d,#bd88bd)}.back-to-top{position:fixed;z-index:90;bottom:max(24px,env(safe-area-inset-bottom));right:24px;width:44px;height:44px;border:1px solid #d8dfd5;border-radius:50%;background:#f8fcf5;color:#355a35;box-shadow:0 4px 18px #20351912;font-size:24px;cursor:pointer}.back-to-top span{display:inline-block}.dark-mode .back-to-top{background:#263326;color:#c2e4b7;border-color:#52624a}.article-end{width:100%;display:flex;justify-content:center;align-items:center;gap:10px;margin:48px 0 24px;padding:24px 12px;border-top:1px solid var(--fg-color-1);color:#66715f;text-align:center;font-size:14px}.article-end-mark{display:inline-block;font-size:24px;color:#6a975d}.dark-mode .article-end-mark{color:#a9ce9b}.notion-bookmark-link:after{content:"↗";display:inline-block;margin-left:auto;padding-left:8px}.blog-search-trigger{display:flex;align-items:center;gap:8px;min-height:44px;padding:8px 12px;border:0;border-radius:8px;font:inherit;background:transparent;color:inherit;cursor:pointer}.blog-search-trigger:hover{background:var(--bg-color-1)}.blog-search-dialog{width:min(600px,calc(100% - 24px));--dialog-gap:clamp(12px,6dvh,80px);--dialog-top-gap:max(var(--dialog-gap),env(safe-area-inset-top));--dialog-bottom-gap:max(var(--dialog-gap),env(safe-area-inset-bottom));max-height:min(720px,calc(var(--dialog-viewport-height, 100dvh) - var(--dialog-top-gap) - var(--dialog-bottom-gap)));overflow-y:auto;scroll-padding-block:16px;padding:0;margin:calc(var(--dialog-viewport-offset, 0px) + var(--dialog-top-gap)) auto 0;border:1px solid #d9e2d4;border-radius:18px;color:#334032;background:#fcfdfb;box-shadow:0 24px 80px #13210d30}.blog-search-dialog::-webkit-backdrop{background:#111c1666;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.blog-search-dialog::backdrop{background:#111c1666;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.blog-search-content{padding:24px}.blog-search-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.blog-search-heading h2{font-size:19px;line-height:1.4;margin:0}.blog-search-dialog button{min-height:44px;padding:8px 12px;border:1px solid #d9e2d4;border-radius:8px;background:transparent;color:inherit;font:inherit;cursor:pointer}.blog-search-heading button{min-width:44px;font-size:24px}.blog-search-field{display:flex;gap:8px;align-items:center;margin-top:20px;border:1px solid #adbfa3;padding:4px;border-radius:10px}.blog-search-field:focus-within{outline:2px solid #6a975d;outline-offset:2px}.blog-search-field input{min-width:0;width:100%;border:0;padding:10px;outline:0;background:transparent;color:inherit;font:inherit}.blog-search-hint,.blog-search-status{font-size:14px;color:#5d6f58}.blog-search-status:not(:empty){padding-top:16px}.blog-search-empty{padding:24px 0 12px;text-align:center}.blog-search-empty svg{color:#759663}.blog-search-empty h3{margin:12px 0 8px;font-size:18px}.blog-search-empty p{font-size:14px}.blog-search-results{list-style:none;margin:16px 0 0;padding:0}.blog-search-results a{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:48px;padding:12px;border-radius:8px}.blog-search-results a:hover{background:#edf3e8}.dark-mode .blog-search-dialog{background:#242b24;color:#e3ecde;border-color:#52624a}.dark-mode .blog-search-dialog button{border-color:#52624a}.dark-mode .blog-search-results a:hover{background:#354130}.dark-mode .blog-search-hint,.dark-mode .blog-search-status{color:#b5c4ac}.back-to-top:focus-visible,.blog-copy:focus-visible,.blog-search-dialog button:focus-visible,.blog-search-results a:focus-visible,.blog-search-trigger:focus-visible{outline:2px solid #749e64;outline-offset:3px}@media (max-width:480px){.blog-search-dialog{--dialog-gap:16px}.blog-search-content{padding:16px}.blog-copy{min-height:44px;top:9px}.back-to-top{right:16px;bottom:16px}}@media (prefers-reduced-motion:no-preference){.copy-success{animation:delight-pop .32s ease-out}.back-to-top{animation:delight-arrive .18s ease-out both}.back-to-top span,.notion-bookmark-link:after{transition:transform .18s ease}.article-end-reached .article-end-mark{animation:delight-pop .55s ease-out}.blog-search-dialog[open]{animation:delight-arrive .2s ease-out}.blog-search-results li{animation:delight-arrive .24s ease-out var(--result-delay,0s) both}.blog-search-empty svg{animation:delight-arrive .32s ease-out both}.blog-image-ready{animation:image-reveal .42s ease-out}}@media (prefers-reduced-motion:no-preference) and (hover:hover) and (pointer:fine){.back-to-top:hover span{transform:translateY(-3px)}.notion-bookmark:hover .notion-bookmark-link:after{transform:translate(2px,-2px)}}@media (prefers-reduced-motion:reduce){.lazy-image-preview,.lazy-image-real,.lazy-image-real.medium-zoom-image{transition:none!important;animation:none!important}}@keyframes delight-pop{0%{transform:scale(.7)}60%{transform:scale(1.2)}to{transform:scale(1)}}@keyframes delight-arrive{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@keyframes image-reveal{0%{opacity:0}to{opacity:1}}.blog-search-dialog{background:rgba(250,253,247,.88);border-color:rgba(255,255,255,.8);backdrop-filter:blur(24px) saturate(140%);-webkit-backdrop-filter:blur(24px) saturate(140%);box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 24px 80px rgba(25,45,22,.24)}.blog-search-dialog::-webkit-backdrop{background:rgba(23,35,29,.28);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.blog-search-dialog::backdrop{background:rgba(23,35,29,.28);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.blog-search-field{background:rgba(255,255,255,.52);border-color:rgba(104,135,91,.32);box-shadow:inset 0 1px 3px rgba(36,63,30,.04)}.blog-search-results a:hover{background:rgba(222,236,210,.6)}.dark-mode .blog-search-dialog{background:rgba(30,40,32,.91);border-color:rgba(213,236,203,.22);box-shadow:inset 0 1px 0 rgba(239,255,229,.12),0 24px 80px rgba(0,0,0,.4)}.dark-mode .blog-search-field{background:rgba(8,17,10,.28);border-color:rgba(186,212,173,.32)}.dark-mode .blog-search-results a:hover{background:rgba(115,147,94,.2)}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.blog-search-dialog{background:#f8fcf5}.dark-mode .blog-search-dialog{background:#242b24}}@media (prefers-reduced-transparency:reduce){.blog-search-dialog{background:#f8fcf5;-webkit-backdrop-filter:none;backdrop-filter:none}.dark-mode .blog-search-dialog{background:#242b24}.blog-search-dialog::-webkit-backdrop{-webkit-backdrop-filter:none;backdrop-filter:none;background:#111c1688}.blog-search-dialog::backdrop{-webkit-backdrop-filter:none;backdrop-filter:none;background:#111c1688}}.blog-search-field input::-webkit-search-cancel-button{-webkit-appearance:none}.dark-mode .article-end{color:#b5c4ac}.blog-header-actions{display:flex;align-items:center;flex-shrink:0;gap:4px}.reading-control-trigger{min-width:44px;min-height:44px;border:0;border-radius:8px;color:inherit;background:transparent;font:inherit;font-weight:600;cursor:pointer}.reading-control-trigger:hover{background:var(--blog-panel)}.notion-page-content-inner{font-size:var(--reading-font-size,16px);line-height:var(--reading-line-height,1.65)}.notion-page-content-inner .notion-callout-text{line-height:inherit}.notion-page-content-inner .notion-code{font-size:.875em}.reading-dialog fieldset{margin:24px 0 0;padding:0;border:0}.reading-dialog legend{font-weight:600;margin-bottom:10px}.reading-options{display:flex;gap:8px;flex-wrap:wrap}.reading-options button[aria-pressed=true]{background:var(--blog-focus);color:var(--blog-surface);border-color:var(--blog-focus);box-shadow:inset 0 0 0 1px currentColor}.reading-preview{padding:16px;margin:24px 0 16px;background:var(--blog-panel);border-radius:10px}.reading-dialog-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.shortcut-list{margin:24px 0}.shortcut-list>div{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px;padding:12px 0;border-bottom:1px solid var(--blog-control-border)}.shortcut-list dd{margin:0}kbd{border:1px solid var(--blog-control-border);border-radius:4px;padding:2px 5px;font-size:12px}.reading-resume,kbd{background:var(--blog-panel)}.reading-resume{display:flex;flex-wrap:wrap;align-items:center;gap:10px;width:100%;padding:14px 16px;margin:12px 0 20px;border:1px solid var(--blog-control-border);border-radius:12px;font-size:14px}.reading-resume>span{flex:1 1 180px}.footnote-preview button,.reading-resume button{min-height:44px;padding:8px 12px;border:1px solid var(--blog-control-border);border-radius:8px;background:var(--blog-surface);color:var(--blog-text);cursor:pointer;font:inherit}.footnote-preview button:hover,.reading-resume button:hover{background:var(--blog-panel)}.related-articles{width:100%;margin:8px 0 32px}.related-articles h2{font-size:22px;margin-bottom:8px}.related-articles p{color:var(--blog-muted);font-size:14px;margin-bottom:16px}.related-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px;gap:12px}.related-grid a{display:flex;flex-direction:column;justify-content:space-between;gap:20px;padding:18px;min-height:132px;border:1px solid var(--blog-control-border);border-radius:12px;color:var(--blog-text);background:var(--blog-panel);font-size:15px;line-height:1.5;overflow-wrap:anywhere}.related-grid a>span:last-child{align-self:flex-end}.related-grid a:hover{border-color:var(--blog-focus);text-decoration:underline;text-underline-offset:3px}.footnote-preview{position:fixed;z-index:500;width:min(340px,calc(100vw - 32px));max-height:min(244px,calc(100dvh - 32px));overflow:auto;padding:16px;background:var(--blog-surface);color:var(--blog-text);border:1px solid var(--blog-control-border);border-radius:12px;box-shadow:0 12px 36px #14201826;font-size:14px;line-height:1.6}.footnote-preview-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.footnote-preview p{margin:12px 0}.footnote-preview :is(button,a):focus-visible,.footnote-preview:focus-visible,.reading-control-trigger:focus-visible{outline:3px solid var(--blog-focus);outline-offset:3px}@media (max-width:600px){.related-grid{grid-template-columns:1fr}.related-grid a{min-height:96px}.shortcut-list>div{grid-template-columns:1fr;gap:8px}}@media (max-width:400px){.blog-header-actions{gap:0}.blog-search-trigger{padding-inline:6px}}@media (prefers-reduced-motion:no-preference){.related-grid a{transition:transform .18s ease}.footnote-preview{animation:delight-arrive .16s ease-out}}@media (prefers-reduced-motion:no-preference) and (hover:hover) and (pointer:fine){.related-grid a:hover{transform:translateY(-2px)}}.article-share{width:100%;text-align:center;margin:0 0 40px}.article-share>p{margin:0 0 12px;color:var(--blog-muted);font-size:14px}.article-share-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:10px}.article-share-actions :is(a,button){display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;min-width:44px;padding:10px 16px;border:1px solid var(--blog-control-border);border-radius:10px;background:var(--blog-panel);color:var(--blog-text);font:inherit;font-size:14px;line-height:1.4;cursor:pointer}.article-share-actions :is(a,button):hover{border-color:var(--blog-focus);text-decoration:underline;text-underline-offset:3px}.share-copy-fallback{margin:16px auto 0;max-width:480px;font-size:14px}.share-copy-fallback label{display:block;margin-bottom:8px}.share-copy-fallback input{width:100%;min-height:44px;padding:10px;border:1px solid var(--blog-control-border);border-radius:8px;background:var(--blog-surface);color:var(--blog-text);font:inherit}.article-end-transition{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:0;gap:0}.article-end-share,.article-end-thanks{grid-area:1/1;width:100%;align-self:center}.article-end-thanks{display:flex;align-items:center;justify-content:center;gap:10px}.article-end-share{visibility:hidden;opacity:0;pointer-events:none}.article-end-share .article-share{margin:0}.article-end-sharing .article-end-thanks{visibility:hidden;opacity:0;pointer-events:none}.article-end-sharing .article-end-share{visibility:visible;opacity:1;pointer-events:auto}@media (prefers-reduced-motion:no-preference){.article-end-thanks{transition:opacity .26s ease,transform .26s ease,visibility .26s}.article-end-share{transform:translateY(8px);transition:opacity .32s ease .1s,transform .32s ease .1s}.article-end-sharing .article-end-thanks{transform:translateY(-8px)}.article-end-sharing .article-end-share{transform:translateY(0)}}:root{--notion-font:ui-sans-serif,system-ui,apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";--fg-color-0:rgba(55,53,47,0.09);--fg-color-1:rgba(55,53,47,0.16);--blog-text:#242c27;--blog-muted:#526052;--blog-surface:#fbfcf8;--blog-panel:#f0f4ec;--blog-control-border:#74816c;--blog-focus:#285d46;--fg-color:var(--blog-text);--fg-color-2:var(--blog-muted);--fg-color-3:var(--blog-muted);--fg-color-7:var(--blog-muted);--bg-color:var(--blog-surface);--bg-color-1:var(--blog-panel);--notion-gray:#526052;--notion-red:#9d252c;--notion-pink:#95295e;--notion-blue:#17547e;--notion-purple:#66358c;--notion-teal:#1e6351;--notion-yellow:#705000;--notion-orange:#8a3f15;--notion-brown:#70452e;--code-neutral:#354334;--code-comment:#486343;--code-green:#176749;--code-purple:#6737a1;--code-amber:#845000;--code-blue:#235aa3;--code-pink:#a32d6b}.dark-mode{color-scheme:dark;--fg-color-0:var(--fg-color);--fg-color-1:var(--fg-color);--bg-color-1:rgb(63,68,71);--blog-text:#eef3eb;--blog-muted:#c2cdbb;--blog-surface:#2f3437;--blog-panel:#3b4440;--blog-control-border:#a5b49d;--blog-focus:#b5dfa2;--fg-color:var(--blog-text);--fg-color-2:var(--blog-muted);--fg-color-3:var(--blog-muted);--fg-color-7:var(--blog-muted);--notion-gray:#c2cdbb;--notion-red:#ffc2c2;--notion-pink:#ffb7da;--notion-blue:#acd9ff;--notion-purple:#e0c8ff;--notion-teal:#a9e6cf;--notion-yellow:#f7df9c;--notion-orange:#ffcd9f;--notion-brown:#e9c4ac;--code-neutral:#d5dfcf;--code-comment:#a6c69b;--code-green:#8ee2b9;--code-purple:#cbb2ff;--code-amber:#ffd08a;--code-blue:#a8ceff;--code-pink:#ffafd6}body{background:var(--blog-surface);color:var(--blog-text)}body:not(.dark-mode){color-scheme:light}.notion-header{background:rgba(251,252,248,.96);border-bottom:1px solid #dce3d6}.dark-mode .notion-header{background:rgba(47,52,55,.96);border-bottom-color:#59635a}.notion-page{color:var(--blog-text)}.notion-title{letter-spacing:-.025em;text-wrap:balance}.notion-h1,.notion-h2,.notion-h3{scroll-margin-top:76px}.notion-link{border:0;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;color:var(--notion-blue)}.notion-link:hover{border:0;text-decoration-thickness:2px}.notion-asset-caption,.notion-bookmark-description,.notion-bookmark-link,.notion-collection-column-title{color:var(--blog-muted);opacity:1}.notion-quote{background:var(--blog-panel);border-left:3px solid var(--blog-control-border)}.notion-bookmark{background:var(--blog-surface);border:1px solid #a0ac98;border-radius:12px}.notion-bookmark:hover{border-color:var(--blog-focus);border-image:none}.notion-collection-card:hover .notion-collection-card-cover{filter:none}.notion-gallery-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr))}.back-to-top:focus-visible,.blog-copy:focus-visible,.blog-search-dialog :is(a,button):focus-visible,.blog-search-trigger:focus-visible,.notion :is(a,button,summary,input,select,[tabindex]):focus-visible{outline:3px solid var(--blog-focus);outline-offset:3px}.blog-search-field:focus-within{outline:3px solid var(--blog-focus)}.back-to-top,.blog-copy,.blog-search-dialog button,.blog-search-field,.dark-mode .back-to-top,.dark-mode .blog-copy,.dark-mode .blog-search-dialog button,.dark-mode .blog-search-field{border-color:var(--blog-control-border)}.blog-search-heading button{border:0}.blog-search-field input::placeholder{color:var(--blog-muted);opacity:1}.blog-search-dialog{background:rgba(250,253,247,.96);color:#242c27}.dark-mode .blog-search-dialog{background:rgba(30,40,32,.97);color:#eef3eb}.blog-search-hint,.blog-search-status{color:#485744}.dark-mode .blog-search-hint,.dark-mode .blog-search-status{color:#c2cdbb}.blog-search-dialog{overscroll-behavior:contain}.blog-search-dialog button:hover,.blog-search-results a:hover{background:#e1ecd9;color:#242c27}.dark-mode .blog-search-dialog button:hover,.dark-mode .blog-search-results a:hover{background:#3a4b32;color:#eef3eb}.back-to-top:hover,.blog-copy:hover{background:#e1ecd9;color:#24452b}.dark-mode .back-to-top:hover,.dark-mode .blog-copy:hover{background:#3a4b32;color:#eef3eb}.reading-track>div{background:linear-gradient(90deg,#416a37,#845184)}.dark-mode .reading-track>div{background:linear-gradient(90deg,#add399,#dfb3df)}.notion :is(.notion-red_background,.notion-pink_background,.notion-blue_background,.notion-purple_background,.notion-teal_background,.notion-yellow_background,.notion-orange_background,.notion-brown_background,.notion-gray_background){background-image:none;color:var(--blog-text);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none}.notion .notion-red_background{background-color:var(--notion-red_background)}.notion .notion-pink_background{background-color:var(--notion-pink_background)}.notion .notion-blue_background{background-color:var(--notion-blue_background)}.notion .notion-purple_background{background-color:var(--notion-purple_background)}.notion .notion-teal_background{background-color:var(--notion-teal_background)}.notion .notion-yellow_background{background-color:var(--notion-yellow_background)}.notion .notion-orange_background{background-color:var(--notion-orange_background)}.notion .notion-brown_background{background-color:var(--notion-brown_background)}.notion .notion-gray_background{background-color:var(--notion-gray_background)}.notion .token{color:var(--code-neutral)}.notion .token:is(.comment,.prolog,.doctype,.cdata){color:var(--code-comment)}.notion .token:is(.boolean,.constant,.deleted,.number,.property,.symbol,.tag){color:var(--code-green)}.notion .token:is(.attr-name,.builtin,.char,.inserted,.selector,.string){color:var(--code-purple)}.notion .token:is(.entity,.operator,.url,.important,.regex,.variable){color:var(--code-amber)}.notion .token:is(.atrule,.attr-value,.keyword){color:var(--code-blue)}.notion .token:is(.class-name,.function){color:var(--code-pink)}.notion pre.notion-code{background:#f2f5ef;border-color:#b5c0ad}.dark-mode .notion pre.notion-code{background:#111827;border-color:#718169}.notion pre,.notion pre>code{scrollbar-width:thin;scrollbar-color:var(--blog-control-border) transparent}.notion pre::-webkit-scrollbar,.notion pre>code::-webkit-scrollbar{display:block;height:8px}.notion pre::-webkit-scrollbar-thumb,.notion pre>code::-webkit-scrollbar-thumb{background:var(--blog-control-border);border-radius:4px}.notion-link{transition:none}@media (prefers-reduced-transparency:reduce){.blog-search-dialog{background:#fafdf7}.dark-mode .blog-search-dialog{background:#1e2820}}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.blog-search-dialog{background:#fafdf7}.dark-mode .blog-search-dialog{background:#1e2820}}.blog-code,.notion-list,.notion-page-content,.notion-page-content-inner,.notion-text-children{min-width:0;max-width:100%}.notion-list{width:100%}.blog-code pre.notion-code{max-width:100%;overflow-x:auto}.blog-code pre.notion-code>code{width:max-content;min-width:100%;max-width:none;overflow:visible}.related-grid a .related-arrow{display:inline-block}.related-grid a:focus-visible{border-color:var(--blog-focus)}.notion-header.blog-header{overflow:visible}.notion-header.blog-header .breadcrumbs{overflow-x:auto;min-width:0}.article-tools{position:relative;display:flex;align-items:center}.article-tools-trigger{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:8px 12px;border:1px solid transparent;border-radius:10px;background:transparent;color:inherit;font:inherit;cursor:pointer}.article-tools-trigger,.blog-header .blog-search-trigger{min-width:44px;justify-content:center;flex-shrink:0}.article-tools-trigger svg,.blog-search-trigger svg{flex-shrink:0}.article-tools-trigger[aria-expanded=true]{border-color:var(--blog-control-border);background:var(--blog-panel)}.article-tools-panel{position:absolute;z-index:210;top:calc(100% + 8px);right:0;width:min(320px,calc(100vw - 24px));padding:16px;border:1px solid var(--blog-control-border);border-radius:16px;background:color-mix(in srgb,var(--blog-surface) 88%,transparent);backdrop-filter:blur(18px) saturate(150%);-webkit-backdrop-filter:blur(18px) saturate(150%);box-shadow:inset 0 1px 0 rgba(255,255,255,.55),0 18px 44px rgba(20,35,20,.22);color:var(--blog-text);text-align:left}.article-tools-panel[hidden]{display:none}.article-tools-row{display:flex;align-items:center;gap:10px;padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid var(--blog-control-border)}.article-tools-row-label{font-size:14px;color:var(--blog-muted)}.article-tools-panel .article-share{margin:0;text-align:left}.article-share-compact>p{margin-bottom:10px;font-size:13px}.article-share-compact .article-share-actions{justify-content:flex-start;gap:8px}.article-share-compact .article-share-actions :is(a,button){padding:8px 12px;font-size:13px}.article-share-compact .share-copy-fallback{margin-left:0}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.article-tools-panel{background:var(--blog-surface)}}@media (prefers-reduced-transparency:reduce){.article-tools-panel{background:var(--blog-surface);backdrop-filter:none;-webkit-backdrop-filter:none}}@media (max-width:520px){.article-tools-trigger>span:last-child{position:absolute;width:1px;height:1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}.article-tools{position:static}.article-tools-panel{right:8px;width:min(320px,calc(100vw - 40px))}}.article-toc{width:100%;margin:4px 0 20px;border:1px solid var(--blog-control-border);border-radius:12px;background:var(--blog-panel);font-size:14px}.article-toc>summary{display:flex;align-items:center;gap:8px;min-height:48px;padding:12px 16px;border-radius:12px;cursor:pointer;list-style:none;font-weight:600}.article-toc>summary::-webkit-details-marker{display:none}.article-toc-count{min-width:22px;padding:1px 7px;border-radius:999px;background:var(--blog-surface);color:var(--blog-muted);font-size:12px;font-weight:400;text-align:center}.article-toc-chevron{margin-left:auto;line-height:1}.article-toc nav{padding:0 16px 12px}.article-toc ol{margin:0;padding:0;list-style:none}.article-toc li{padding-left:var(--toc-indent,0)}.article-toc a{display:block;min-height:40px;padding:10px 8px;border-radius:8px;color:var(--blog-text);text-decoration:none;overflow-wrap:anywhere}.article-toc a:hover{background:var(--blog-surface);text-decoration:underline;text-underline-offset:3px}.article-toc a:focus-visible,.article-toc>summary:focus-visible{outline:3px solid var(--blog-focus);outline-offset:2px}@media (min-width:1300px) and (min-height:300px){.notion-page-content-has-aside .article-toc{display:none}}@media (prefers-reduced-motion:no-preference){.notion-title{animation:details-title-fade .46s cubic-bezier(.22,.61,.36,1) both}}@keyframes details-title-fade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.notion-header.blog-header{background:transparent;border-bottom-color:transparent}.notion-header.blog-header .notion-nav-header{position:relative;width:min(1100px,calc(100% - 16px));margin:0 auto;padding:0 12px;border:1px solid transparent;border-radius:0;background:color-mix(in srgb,var(--blog-surface) 96%,transparent);backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px)}.notion-header.blog-header.blog-header-compact .notion-nav-header{top:6px;height:calc(100% - 12px);width:min(960px,calc(100% - 24px));padding:0 8px;border-color:var(--blog-control-border);border-radius:999px;background:color-mix(in srgb,var(--blog-surface) 86%,transparent);box-shadow:0 10px 28px rgba(20,35,20,.16)}.notion-header.blog-header.blog-header-compact .article-tools-trigger>span:last-child,.notion-header.blog-header.blog-header-compact .blog-search-trigger>span{position:absolute;width:1px;height:1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.notion-header.blog-header .notion-nav-header{background:var(--blog-surface)}}@media (prefers-reduced-transparency:reduce){.notion-header.blog-header .notion-nav-header{background:var(--blog-surface);backdrop-filter:none;-webkit-backdrop-filter:none}}@media (max-width:400px){.notion-header.blog-header.blog-header-compact .notion-nav-header{width:calc(100% - 12px);padding:0 6px}}.blog-fill-button{position:relative;isolation:isolate;overflow:hidden}.blog-fill-button:before{content:"";position:absolute;z-index:-1;inset:0;background:var(--blog-focus);transform:scaleX(0);transform-origin:left center}.blog-fill-button:is(:hover,:focus-visible):before{transform:scaleX(1)}.blog-fill-button:is(:hover,:focus-visible){color:var(--blog-surface);border-color:var(--blog-focus)}.article-share-compact .blog-fill-button:is(:hover,:focus-visible){text-decoration:none}.article-toc[open] .article-toc-chevron{transform:rotate(180deg)}@media (prefers-reduced-motion:no-preference){.article-toc-chevron,.blog-fill-button:before,.related-grid a .related-arrow{transition:transform .22s cubic-bezier(.22,.61,.36,1)}.blog-fill-button{transition:color .2s ease,border-color .2s ease}.related-grid a:is(:hover,:focus-visible) .related-arrow{transform:translate(3px,-3px)}.article-toc[open]>nav{animation:details-fade-in .2s ease-out both}.article-tools-panel{transform-origin:top right}.article-tools-panel-open{animation:details-popover-in .22s cubic-bezier(.22,.61,.36,1) both}.notion-header.blog-header .notion-nav-header{transition:width .26s cubic-bezier(.22,.61,.36,1),top .26s cubic-bezier(.22,.61,.36,1),height .26s cubic-bezier(.22,.61,.36,1),border-radius .26s ease,background-color .26s ease,box-shadow .26s ease}}@media (prefers-reduced-motion:reduce){.article-toc[open]>nav,.article-tools-panel-open,.notion-title{animation:none}.article-toc-chevron,.blog-fill-button,.blog-fill-button:before,.notion-header.blog-header .notion-nav-header,.related-grid a .related-arrow{transition:none}.blog-fill-button:before{transform:scaleX(0)}.blog-fill-button:is(:hover,:focus-visible):before{transform:scaleX(1)}}@keyframes details-fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes details-popover-in{0%{opacity:0;transform:scale(.96) translateY(-6px)}to{opacity:1;transform:scale(1) translateY(0)}}.notion-lite .article-toc,.notion-lite .article-tools{display:none}.local-reader>a[href="#main"]{z-index:100}.local-reader :is(button,input):focus-visible{outline:3px solid var(--blog-focus);outline-offset:3px}.local-reader .lr-arrow{display:inline-block;margin-left:.35em}.local-reader a:is(:hover,:focus-visible) .lr-arrow{transform:translateX(3px)}.local-reader .lr-header{position:-webkit-sticky;position:sticky;top:0;z-index:60}.local-reader .lr-bar{position:relative;box-sizing:border-box;display:flex;align-items:center;gap:8px;height:54px;width:100%;margin:0 auto;padding:0 16px}.local-reader .lr-bar-compact{padding:0 12px;box-shadow:0 1px 2px rgba(0,0,0,.08)}.local-reader .lr-brand{display:inline-flex;align-items:center;gap:8px;min-width:0;flex-shrink:0;color:var(--blog-text);text-decoration:none}.local-reader .lr-brand-mark{font-size:18px;line-height:1}.local-reader .lr-brand-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.local-reader .lr-brand:is(:hover,:focus-visible){color:var(--blog-focus)}.local-reader .lr-crumb-sep{flex-shrink:0;color:var(--blog-muted)}.local-reader .lr-crumb{display:inline-flex;align-items:center;gap:6px;min-width:0;flex:0 1 auto;font-size:15px}.local-reader .lr-crumb-icon{flex-shrink:0;width:18px;height:18px;font-size:16px;line-height:1;object-fit:contain}.local-reader .lr-crumb-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.local-reader .lr-header-actions{display:flex;align-items:center;flex-shrink:0;margin-left:auto}.local-reader .article-tools-trigger,.local-reader .reading-control-trigger{min-width:44px;min-height:44px;border-radius:8px;color:inherit;cursor:pointer}.local-reader .reading-control-trigger{border:1px solid transparent;background:transparent;font:inherit}@media only screen and (max-width:600px){.local-reader .lr-brand-name{display:none}}.local-reader .article-tools-panel{border-radius:8px;border-color:var(--blog-control-border);background:var(--blog-surface);backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:0 4px 12px rgba(0,0,0,.12)}@media (max-width:520px){.local-reader .article-tools-panel{right:4px;width:min(320px,calc(100vw - 40px))}}.local-reader .article-toc{display:block;margin:0 0 2rem;border:0;border-top:1px solid color-mix(in srgb,var(--blog-control-border) 38%,var(--blog-surface));border-bottom:1px solid color-mix(in srgb,var(--blog-control-border) 38%,var(--blog-surface));border-radius:0;background:transparent}.local-reader .article-toc>summary{min-height:44px;padding:10px 2px;border-radius:0;font-size:14px;font-weight:600;color:var(--blog-muted)}.local-reader .article-toc-count{background:var(--blog-panel)}.local-reader .article-toc nav{padding:0 2px 10px}.local-reader .article-toc a{min-height:36px;padding:7px 6px;border-radius:4px}.local-reader .article-toc a:hover{background:var(--blog-panel)}.article-toc a[aria-current=location]{font-weight:600;box-shadow:inset 2px 0 0 var(--blog-focus)}.local-reader .article-toc a[aria-current=location]{background:var(--blog-panel)}.article-outline-rail{display:none}@media (min-width:1280px){.local-reader .article-toc{display:none}.local-reader .article-outline-rail{position:fixed;top:54px;right:0;bottom:0;z-index:50;display:flex;align-items:center;justify-content:flex-end;width:56px;pointer-events:none}.local-reader .article-outline-rail[data-open=true]{width:296px}.local-reader .article-outline-rail-toggle{pointer-events:auto;box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:56px;height:min(calc(var(--outline-count) * 6px + 24px),calc(100vh - 110px));min-height:44px;max-height:100%;padding:12px 8px;border:0;background:transparent;color:inherit;cursor:pointer}.local-reader .article-outline-rail[data-open=true] .article-outline-rail-toggle{opacity:0}.local-reader .article-outline-ticks{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:0;width:100%;height:100%;max-height:100%;overflow:hidden}.local-reader .article-outline-tick{flex:1 1;display:flex;align-items:center;justify-content:flex-end;width:100%;min-height:0;max-height:6px}.local-reader .article-outline-tick:before{content:"";display:block;width:12px;height:2px;border-radius:1px;background:var(--blog-control-border)}.local-reader .article-outline-tick[data-outline-active=true]:before{width:26px;height:3px;background:var(--blog-focus)}.local-reader .article-outline-rail-toggle:hover .article-outline-tick:before{background:var(--blog-muted)}.local-reader .article-outline-rail-toggle:hover .article-outline-tick[data-outline-active=true]:before{background:var(--blog-focus)}.local-reader .article-outline-panel{pointer-events:auto;position:absolute;top:50%;right:16px;transform:translateY(-50%);box-sizing:border-box;width:264px;max-height:min(70vh,calc(100vh - 120px));overflow-y:auto;overscroll-behavior:contain;padding:10px 8px 12px;border:1px solid var(--blog-control-border);border-radius:8px;background:var(--blog-surface);box-shadow:0 4px 12px rgba(0,0,0,.12);font-size:14px}.local-reader .article-outline-panel[hidden]{display:none}.local-reader .article-outline-panel-heading{position:-webkit-sticky;position:sticky;top:-10px;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:8px;margin:-10px -8px 6px;padding:4px 8px;background:var(--blog-surface);border-bottom:1px solid var(--blog-control-border)}.local-reader .article-outline-close{flex-shrink:0;width:44px;height:44px;border:0;border-radius:4px;background:transparent;color:var(--blog-muted);font:inherit;font-size:22px;cursor:pointer}.local-reader .article-outline-close:hover{background:var(--blog-panel);color:var(--blog-text)}.local-reader .article-outline-panel-title{margin:0;padding:0 6px;color:var(--blog-muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.local-reader .article-outline-panel ol{margin:0;padding:0;list-style:none}.local-reader .article-outline-panel li{padding-left:var(--toc-indent,0)}.local-reader .article-outline-panel a{display:block;padding:6px;border-radius:4px;border-left:2px solid transparent;color:var(--blog-muted);line-height:1.35;text-decoration:none;overflow-wrap:anywhere}.local-reader .article-outline-panel a:hover{background:var(--blog-panel);color:var(--blog-text)}.local-reader .article-outline-panel a:focus-visible{outline:3px solid var(--blog-focus);outline-offset:2px}.local-reader .article-outline-panel a[aria-current=location]{border-left-color:var(--blog-focus);background:var(--blog-panel);color:var(--blog-text);font-weight:600}}@media (prefers-reduced-motion:no-preference){.local-reader .lr-title{animation:lr-title-fade .2s ease-out both}}@keyframes lr-title-fade{0%{opacity:0}to{opacity:1}}.local-reader .blog-fill-button:before{background:color-mix(in srgb,var(--blog-focus) 12%,transparent)}.local-reader .blog-fill-button:is(:hover,:focus-visible){color:var(--blog-text);border-color:var(--blog-control-border)}.local-reader .lr-article{font-size:var(--reading-font-size,16px);line-height:var(--reading-line-height,1.65)}.local-reader .lr-article :is(h1,h2,h3,h4,h5,h6){scroll-margin-top:76px}.local-reader .lr-article :is(h1,h2,h3,h4,h5,h6):focus-visible{outline:3px solid var(--blog-focus);outline-offset:4px}.local-reader .reading-dialog{border-color:var(--blog-control-border);background:var(--blog-surface);color:var(--blog-text)}@media (prefers-reduced-motion:no-preference){.local-reader .lr-arrow{transition:transform .16s ease-out}.local-reader .lr-bar{transition:padding .16s ease,box-shadow .16s ease}.local-reader .article-tools-panel-open{animation:lr-popover-fade .16s ease-out both}.local-reader .article-outline-tick:before{transition:width .14s ease-out,background-color .14s ease-out}}@keyframes lr-popover-fade{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.local-reader .article-tools-panel-open,.local-reader .lr-title{animation:none}.local-reader .article-outline-tick:before,.local-reader .lr-arrow,.local-reader .lr-bar{transition:none}}.local-reader .lr-search-trigger{min-width:44px;min-height:44px;justify-content:center;border:1px solid transparent;border-radius:8px}.local-reader .lr-search-trigger:hover{background:var(--blog-panel)}.local-reader .lr-search-label{white-space:nowrap}@media only screen and (max-width:600px){.local-reader .lr-search-label{display:none}}.local-reader .reading-track{z-index:120}.local-reader .reading-resume{border-radius:8px}.local-reader .article-end{margin:40px 0 8px;padding:18px 12px 0;border-top:1px solid color-mix(in srgb,var(--blog-control-border) 38%,var(--blog-surface));color:var(--blog-muted)}.local-reader .article-end-mark{font-size:18px}.local-reader .related-articles{margin:24px 0 8px}.local-reader .related-grid a{border-radius:8px;min-height:108px}.local-reader :is(.blog-search-dialog,.reading-dialog){border:1px solid var(--blog-control-border);border-radius:8px;background:var(--blog-surface);color:var(--blog-text);backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:0 8px 24px rgba(0,0,0,.14)}.local-reader :is(.blog-search-dialog,.reading-dialog)::-webkit-backdrop{background:rgba(23,35,29,.32);backdrop-filter:none;-webkit-backdrop-filter:none}.local-reader :is(.blog-search-dialog,.reading-dialog)::backdrop{background:rgba(23,35,29,.32);backdrop-filter:none;-webkit-backdrop-filter:none}.local-reader .blog-search-field{border-radius:8px;border-color:var(--blog-control-border);background:var(--blog-surface)}.local-reader .blog-search-field input:focus-visible{outline:none}.local-reader .blog-search-dialog button,.local-reader .blog-search-results a{border-radius:8px;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none}@keyframes styles_spinner__Q1B56{to{transform:rotate(1turn)}}.styles_container__2FWVt{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;justify-content:center;align-items:center;padding:2vmin;font-size:16px;line-height:1.5;color:rgb(55,53,47);caret-color:rgb(55,53,47);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Apple Color Emoji,Arial,sans-serif,Segoe UI Emoji,Segoe UI Symbol}.styles_loadingIcon__XCgsC{animation:styles_spinner__Q1B56 .6s linear infinite;display:block;width:24px;height:24px;color:rgba(55,53,47,.4)}.styles_unavailable__Yzi_j{background:#fff;text-align:center;padding:24px}.styles_unavailable__Yzi_j button{min-height:44px;padding:10px 20px;border:1px solid;border-radius:8px;background:transparent;color:inherit;font:inherit;cursor:pointer}.styles_unavailable__Yzi_j button:disabled{opacity:.6;cursor:wait}.dark-mode .styles_unavailable__Yzi_j{background:#191919;color:#ebebeb}.styles_main___3do2{display:flex;flex-direction:column;justify-content:center;align-items:center}.styles_errorImage__ZWt2q{max-width:100%;width:640px}.styles_footer__KQBKx{width:100%;max-width:1100px;margin:auto auto 0;padding:15px 35px;display:flex;flex-direction:row;justify-content:space-between;align-items:center}.styles_copyright__dHVlH{font-size:80%;padding:.5em}.styles_settings___z6Uj,.styles_social__YTzq0{-webkit-user-select:none;-moz-user-select:none;user-select:none}.styles_settings___z6Uj a,.styles_settings___z6Uj button,.styles_social__YTzq0 a{cursor:pointer;font-size:2em;display:inline-flex;padding:.25em;margin-right:1vw;transition:color .25s ease-out}.styles_settings___z6Uj a:last-of-type,.styles_settings___z6Uj button:last-of-type,.styles_social__YTzq0 a:last-of-type{margin-right:0}.styles_settings___z6Uj a:hover,.styles_settings___z6Uj button:hover,.styles_social__YTzq0 a:hover{transition:color 50ms ease-out}.styles_toggleDarkMode__trGAS:hover{color:#2795e9}.styles_toggleDarkMode__trGAS{align-items:center;justify-content:center;min-width:44px;min-height:44px;border:0;border-radius:50%;background:transparent;color:inherit;font:inherit}.styles_toggleDarkMode__trGAS:focus-visible{outline:2px solid #a7805b;outline-offset:3px}.styles_themeIcon__GMZAJ{display:inline-flex}@media (prefers-reduced-motion:no-preference){.styles_settings___z6Uj .styles_toggleDarkMode__trGAS{transition:transform .16s ease,color .16s ease}.styles_toggleDarkMode__trGAS:active{transform:scale(.92)}.styles_social__YTzq0 a{transition:color .25s ease-out,transform .2s cubic-bezier(.22,.61,.36,1)}.styles_social__YTzq0 a:focus-visible,.styles_social__YTzq0 a:hover{transform:translateY(-3px)}.styles_themeIcon__GMZAJ{animation:styles_theme-arrive__KZgxl .32s cubic-bezier(.2,.8,.2,1) both}}@media (prefers-reduced-motion:reduce){.styles_settings___z6Uj .styles_toggleDarkMode__trGAS,.styles_social__YTzq0 a{transition:none;transform:none}}@keyframes styles_theme-arrive__KZgxl{0%{opacity:0;transform:rotate(-35deg) scale(.75)}to{opacity:1;transform:rotate(0) scale(1)}}.styles_wordle__yTRfo:hover{color:#fff3b0}.styles_resume___mTDF:hover{color:#19bf64}.styles_twitter__68wE5:hover{color:#2795e9}.styles_github__RADfM:hover{color:#c9510c}.styles_linkedin__WbyM9:hover{color:#0077b5}.styles_comments__9iiqk{border-top:1px solid var(--fg-color-0)}.styles_comments__9iiqk,.styles_utterances__uOuOX{width:100%;margin-top:2em}@media only screen and (min-width:567px){.styles_utterances__uOuOX{width:calc(100% + 60px);position:relative;left:-60px}}@media only screen and (max-width:566px){.styles_footer__KQBKx{flex-direction:column}.styles_footer__KQBKx>div{margin-top:1em}.styles_footer__KQBKx .styles_settings___z6Uj{order:1}.styles_footer__KQBKx .styles_social__YTzq0{order:2}.styles_footer__KQBKx .styles_copyright__dHVlH{order:3}}.styles_pageActions__bHmBq{display:flex;flex-direction:row;justify-content:center;padding:6px 12px 12px}.styles_pageActions__bHmBq a{cursor:pointer;font-size:24px;display:inline-flex;padding:12px;margin-right:1vw;border-radius:50%;background:transparent;transition:all .25s ease-out}.styles_pageActions__bHmBq a:last-of-type{margin-right:0}.styles_pageActions__bHmBq a:hover{transition:all 50ms ease-out}.styles_likeTweet__BtpJ3:hover{background:#f6e3e8;color:#e0265e}.styles_retweet__oRt9r:hover{color:#19bf64;background:#e5f2e8}@media (max-width:1360px){.styles_githubCorner__DRb71{display:none}}.styles_githubCorner__DRb71:hover .styles_octoArm__ZnKeK{animation:styles_octocat-wave__KTabe .56s ease-in-out}@keyframes styles_octocat-wave__KTabe{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.styles_githubCorner__DRb71:hover .styles_octoArm__ZnKeK{animation:none}.styles_githubCorner__DRb71 .styles_octoArm__ZnKeK{animation:styles_octocat-wave__KTabe .56s ease-in-out}}.styles_loadingPage__hXLwi{background:#fafbf9;padding:24px}.styles_loadingSheet__Nf0hq{width:min(560px,100%);padding:clamp(24px,6vw,48px);border:1px solid #e2e8df;border-radius:20px;background:#fff;box-shadow:0 12px 40px #19352108}.styles_loadingLabel__VQLlu,.styles_navigationPill__92xz1{display:flex;align-items:center;justify-content:center;gap:10px;font-size:14px;line-height:1.5}.styles_loadingSpark__CXbGO{display:inline-block;color:#468451;font-size:24px}.styles_loadingDots__lIGwX{display:inline-flex;gap:3px;flex-shrink:0}.styles_loadingDots__lIGwX i{width:4px;height:4px;background:currentColor;border-radius:50%}.styles_loadingSkeleton__tR3NW span{display:block;height:10px;margin-top:16px;border-radius:6px;background:#e9eee6}.styles_loadingSkeleton__tR3NW span:first-child{width:65%;height:24px;margin-block:32px 24px}.styles_loadingSkeleton__tR3NW span:last-child{width:75%}.styles_navigationLoading__BSD2G{position:fixed;inset:0;z-index:1000;pointer-events:none;color:#334632}.styles_navigationTrack__2Jp5e{position:absolute;inset:0 0 auto;height:3px;overflow:hidden;background:#88ad7a30}.styles_navigationTrack__2Jp5e span{display:block;width:40%;height:100%;background:linear-gradient(90deg,#68a36b,#b3d59b,#68a36b)}.styles_navigationPill__92xz1{position:absolute;bottom:max(24px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100% - 32px);padding:12px 18px;border:1px solid #d9e4d5;border-radius:999px;background:#f8fcf5;box-shadow:0 8px 30px #19352118}.dark-mode .styles_loadingPage__hXLwi{background:#191919;color:#ebebeb}.dark-mode .styles_loadingSheet__Nf0hq,.dark-mode .styles_navigationPill__92xz1{background:#242b24;border-color:#43503f;color:#e0ebd9}.dark-mode .styles_loadingSkeleton__tR3NW span{background:#3b4638}.dark-mode .styles_loadingSpark__CXbGO{color:#b3d59b}@media (prefers-reduced-motion:no-preference){.styles_loadingSheet__Nf0hq{animation:styles_loading-arrive__O0Xyg .3s ease-out both}.styles_navigationPill__92xz1{animation:styles_loading-fade__vLpyF .18s ease-out both}.styles_loadingSpark__CXbGO{animation:styles_loading-twinkle__YIysQ 1.8s ease-in-out 3}.styles_loadingDots__lIGwX i{animation:styles_loading-bob__eASAj 1.2s ease-in-out 5}.styles_loadingDots__lIGwX i:nth-child(2){animation-delay:.12s}.styles_loadingDots__lIGwX i:nth-child(3){animation-delay:.24s}.styles_loadingSkeleton__tR3NW span{animation:styles_loading-breathe__lr1pc 1.4s ease-in-out 4}.styles_loadingSkeleton__tR3NW span:nth-child(2){animation-delay:.1s}.styles_loadingSkeleton__tR3NW span:nth-child(3){animation-delay:.2s}.styles_navigationTrack__2Jp5e span{animation:styles_loading-sweep__znQR_ 1.5s ease-in-out infinite alternate}}@keyframes styles_loading-arrive__O0Xyg{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes styles_loading-fade__vLpyF{0%{opacity:0}to{opacity:1}}@keyframes styles_loading-twinkle__YIysQ{50%{transform:rotate(35deg) scale(.85)}}@keyframes styles_loading-bob__eASAj{50%{transform:translateY(-3px);opacity:.5}}@keyframes styles_loading-breathe__lr1pc{50%{opacity:.4}}@keyframes styles_loading-sweep__znQR_{0%{transform:translateX(-100%)}to{transform:translateX(250%)}}.styles_settings___z6Uj a:hover,.styles_settings___z6Uj button:hover,.styles_social__YTzq0 a:hover{color:var(--blog-focus)}.styles_pageActions__bHmBq a:hover{color:var(--blog-focus);background:var(--blog-panel)}.styles_toggleDarkMode__trGAS:focus-visible{outline-color:var(--blog-focus)}