*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-sans),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--font-mono),ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}html{scroll-behavior:smooth;scroll-padding-top:88px;color-scheme:light}[data-palette=dark]{color-scheme:dark}html,body{overflow-x:clip}body{--tw-bg-opacity: 1;background-color:rgb(var(--c-paper) / var(--tw-bg-opacity, 1));font-family:var(--font-sans),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1.0625rem;line-height:1.7;--tw-text-opacity: 1;color:rgb(var(--c-ink-soft) / var(--tw-text-opacity, 1));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4{--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1));font-weight:var(--head-weight)}em{font-style:normal;color:rgb(var(--c-accent-text))}::-moz-selection{background:rgb(var(--c-warm) / .55);color:rgb(var(--c-ink))}::selection{background:rgb(var(--c-warm) / .55);color:rgb(var(--c-ink))}:focus-visible{outline:2px solid rgb(var(--c-accent-text));outline-offset:3px;border-radius:4px}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.container-site{margin-left:auto;margin-right:auto;width:100%;padding-left:1.25rem;padding-right:1.25rem}@media (min-width: 640px){.container-site{padding-left:2rem;padding-right:2rem}}.container-site{max-width:71.5rem}.container-read{margin-left:auto;margin-right:auto;width:100%;padding-left:1.25rem;padding-right:1.25rem}@media (min-width: 640px){.container-read{padding-left:2rem;padding-right:2rem}}.container-read{max-width:49rem}.section{padding-top:var(--section-space);padding-bottom:var(--section-space)}.display-hero{--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1));text-wrap:balance;font-size:var(--text-hero);font-weight:var(--head-weight);line-height:1.04;letter-spacing:-.035em}.display-page{--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1));text-wrap:balance;font-size:var(--text-page);font-weight:var(--head-weight);line-height:1.06;letter-spacing:-.03em}.display-section{--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1));text-wrap:balance;font-size:var(--text-section);font-weight:var(--head-weight);line-height:1.15;letter-spacing:-.025em}.title-item{font-size:1.25rem;line-height:1.375;letter-spacing:-.015em;--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1));text-wrap:balance}@media (min-width: 640px){.title-item{font-size:1.375rem}}.title-item{font-weight:var(--head-weight)}.meta{font-family:var(--font-mono),ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:.8125rem;font-weight:400;line-height:1.5;letter-spacing:0em;--tw-text-opacity: 1;color:rgb(var(--c-ink-muted) / var(--tw-text-opacity, 1))}.lead{font-size:1.125rem;line-height:1.65;--tw-text-opacity: 1;color:rgb(var(--c-ink-soft) / var(--tw-text-opacity, 1));text-wrap:pretty}@media (min-width: 640px){.lead{font-size:1.1875rem}}.btn{display:inline-flex;min-height:2.75rem;align-items:center;justify-content:center;gap:.5rem;border-radius:var(--radius-btn);padding:.625rem 1.25rem;font-size:.9375rem;font-weight:500;line-height:1;transition:background-color .2s ease,color .2s ease,box-shadow .2s ease}.btn svg{transition:transform .2s ease}.btn:hover svg{transform:translate(2px)}.btn:active{transform:translateY(1px)}.btn-primary{--tw-bg-opacity: 1;background-color:rgb(var(--c-accent) / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(var(--c-accent-ink) / var(--tw-text-opacity, 1))}.btn-primary:hover{background-color:rgb(var(--c-accent) / .9)}.btn-outline{--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1));--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-inset: inset;--tw-ring-opacity: 1;--tw-ring-color: rgb(var(--c-line) / var(--tw-ring-opacity, 1))}.btn-outline:hover{background-color:rgb(var(--c-shade) / .7);--tw-ring-color: rgb(var(--c-ink) / .2)}.link{display:inline-flex;align-items:center;gap:.375rem;font-weight:500;--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1));background:linear-gradient(currentColor,currentColor) 0 100% / 0 1px no-repeat;transition:background-size .3s ease,color .2s ease;padding-bottom:2px}.link:hover,.link[aria-current]{background-size:100% 1px}.link svg{transition:transform .2s ease}.link:hover svg[data-nudge]{transform:translate(2px)}.link-accent{--tw-text-opacity: 1;color:rgb(var(--c-accent-text) / var(--tw-text-opacity, 1))}.tag{display:inline-flex;align-items:center;border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(var(--c-shade) / var(--tw-bg-opacity, 1));padding:.125rem .5rem;font-family:var(--font-mono),ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:.75rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(var(--c-ink-soft) / var(--tw-text-opacity, 1))}.chip{display:inline-flex;min-height:2.25rem;align-items:center;gap:.5rem;border-radius:var(--radius-btn);padding-left:.75rem;padding-right:.75rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(var(--c-ink-soft) / var(--tw-text-opacity, 1));--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-inset: inset;--tw-ring-opacity: 1;--tw-ring-color: rgb(var(--c-line) / var(--tw-ring-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.chip:hover{--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1));--tw-ring-color: rgb(var(--c-ink) / .25)}.chip[aria-current]{--tw-bg-opacity: 1;background-color:rgb(var(--c-ink) / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(var(--c-paper) / var(--tw-text-opacity, 1));--tw-ring-opacity: 1;--tw-ring-color: rgb(var(--c-ink) / var(--tw-ring-opacity, 1))}.chip span{font-family:var(--font-mono),ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:.75rem;--tw-text-opacity: 1;color:rgb(var(--c-ink-muted) / var(--tw-text-opacity, 1))}.chip[aria-current] span{color:rgb(var(--c-paper) / .7)}.frame{position:relative;display:block;overflow:hidden;border-radius:var(--radius);--tw-bg-opacity: 1;background-color:rgb(var(--c-shade) / var(--tw-bg-opacity, 1))}.frame img{height:100%;width:100%;-o-object-fit:cover;object-fit:cover;transition:transform .8s cubic-bezier(.16,1,.3,1)}a:hover .frame img,a.frame:hover img{transform:scale(1.025)}.frame.frame-shots{display:flex;align-items:center;justify-content:center;gap:4%;padding:5% 6%}.frame.frame-shots img{height:100%;width:auto;-o-object-fit:contain;object-fit:contain;max-width:30%;border-radius:.6rem;box-shadow:0 8px 24px rgb(var(--c-ink) / .12)}.shots{display:flex;flex-wrap:wrap;gap:1.5rem 1.25rem}.shots figure{width:calc(50% - .625rem)}.shots figure.is-wide{width:100%}.shots .frame img{-o-object-fit:contain;object-fit:contain}.shots figcaption{width:0;min-width:100%}@media (min-width: 768px){.shots figure,.shots figure.is-wide{width:auto;max-width:100%}.shots .frame{height:clamp(18rem,36vw,30rem);max-width:100%}}.field{display:block;width:100%;border-radius:var(--radius-btn);border-width:0px;--tw-bg-opacity: 1;background-color:rgb(var(--c-surface) / var(--tw-bg-opacity, 1));padding:.75rem 1rem;--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1));--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-inset: inset;--tw-ring-opacity: 1;--tw-ring-color: rgb(var(--c-line) / var(--tw-ring-opacity, 1))}.field::-moz-placeholder{color:rgb(var(--c-ink-muted) / .7)}.field::placeholder{color:rgb(var(--c-ink-muted) / .7)}.field:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-inset: inset;--tw-ring-opacity: 1;--tw-ring-color: rgb(var(--c-accent) / var(--tw-ring-opacity, 1))}.field-error{--tw-ring-opacity: 1;--tw-ring-color: rgb(244 63 94 / var(--tw-ring-opacity, 1))}.field-error:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(244 63 94 / var(--tw-ring-opacity, 1))}.label{margin-bottom:.5rem;display:block;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1))}.post-body{min-width:0px;max-width:45rem;font-size:1.0625rem;line-height:1.8;--tw-text-opacity: 1;color:rgb(var(--c-ink-soft) / var(--tw-text-opacity, 1))}@media (min-width: 640px){.post-body{font-size:1.125rem}}.post-body>*+*{margin-top:1.35em}.post-body h2,.post-body h3,.post-body h4{letter-spacing:-.02em;--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1));font-weight:var(--head-weight);line-height:1.25}.post-body h2{font-size:1.6rem;margin-top:2.1em}.post-body h3{font-size:1.3rem;margin-top:1.8em}.post-body h4{font-size:1.1rem;margin-top:1.6em}.post-body h2+*,.post-body h3+*,.post-body h4+*{margin-top:.65em}.post-body a{font-weight:500;--tw-text-opacity: 1;color:rgb(var(--c-accent-text) / var(--tw-text-opacity, 1));text-decoration-line:underline;text-decoration-thickness:1px;text-underline-offset:4px}.post-body a:hover{text-decoration-thickness:2px}.post-body strong{font-weight:600;--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1))}.post-body em{color:inherit;font-style:italic}.post-body ul{list-style-type:disc;padding-left:1.5rem}.post-body ol{list-style-type:decimal;padding-left:1.5rem}.post-body li+li{margin-top:.4em}.post-body li::marker{color:rgb(var(--c-ink-muted))}.post-body blockquote{border-left-width:2px;border-color:rgb(var(--c-accent) / .6);padding-left:1.25rem;font-size:1.2rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1))}.post-body code{border-radius:.25rem;--tw-bg-opacity: 1;background-color:rgb(var(--c-shade) / var(--tw-bg-opacity, 1));padding:.125rem .375rem;font-family:var(--font-mono),ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:.85em;--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1))}.post-body pre{overflow:hidden;border-radius:var(--radius);font-family:var(--font-mono),ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:.875rem;line-height:1.625;background:var(--code-bg);color:var(--code-ink)}.post-body pre code{display:block;overflow-x:auto;border-radius:0;background-color:transparent;padding:1.25rem;color:inherit;font-size:inherit}.post-body pre .hljs-comment,.post-body pre .hljs-quote{color:var(--code-comment);font-style:italic}.post-body pre .hljs-keyword,.post-body pre .hljs-selector-tag,.post-body pre .hljs-doctag{color:var(--code-keyword)}.post-body pre .hljs-string,.post-body pre .hljs-regexp,.post-body pre .hljs-title,.post-body pre .hljs-name,.post-body pre .hljs-variable,.post-body pre .hljs-template-variable,.post-body pre .hljs-meta{color:var(--code-string)}.post-body pre .hljs-number,.post-body pre .hljs-literal,.post-body pre .hljs-deletion{color:var(--code-number)}.post-body pre .hljs-attr,.post-body pre .hljs-attribute,.post-body pre .hljs-built_in,.post-body pre .hljs-type,.post-body pre .hljs-title.class_,.post-body pre .hljs-selector-class,.post-body pre .hljs-selector-id,.post-body pre .hljs-symbol,.post-body pre .hljs-bullet,.post-body pre .hljs-addition{color:var(--code-attr)}.post-body pre .hljs-property,.post-body pre .hljs-params,.post-body pre .hljs-subst,.post-body pre .hljs-selector-attr,.post-body pre .hljs-selector-pseudo{color:var(--code-property)}.post-body pre .hljs-emphasis{font-style:italic}.post-body pre .hljs-strong{font-weight:600}.post-body img{height:auto;max-width:100%;border-radius:var(--radius)}.post-body figure.image{margin-left:auto;margin-right:auto;display:table;clear:both}.post-body figure.image img{margin-left:auto;margin-right:auto;display:block;min-width:100%}.post-body figure.image figcaption{padding-top:.5rem;text-align:center;font-family:var(--font-mono),ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:.8125rem;line-height:1.5;--tw-text-opacity: 1;color:rgb(var(--c-ink-muted) / var(--tw-text-opacity, 1));display:table-caption;caption-side:bottom}.post-body figure.image_resized{display:block;max-width:100%;width:max(calc(var(--w) * 1%),min(100%,calc(var(--w) * .55ch)))}.post-body figure.image_resized img{width:100%}.post-body figure.image_resized figcaption{display:block}.post-body figure.image-style-block-align-left{margin-left:0}.post-body figure.image-style-block-align-right{margin-right:0}.post-body figure.image-style-align-left{float:left;margin:.3em 1.5em .75em 0;clear:none}.post-body figure.image-style-align-right{float:right;margin:.3em 0 .75em 1.5em;clear:none}@media (max-width: 639px){.post-body figure.image-style-align-left,.post-body figure.image-style-align-right{float:none;margin-left:auto;margin-right:auto}}.post-body figure.video{clear:both}.post-body figure.video video{margin-left:auto;margin-right:auto;display:block;height:auto;max-width:100%;border-radius:var(--radius);--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1));width:100%;max-height:80vh;-o-object-fit:contain;object-fit:contain}.post-body h2,.post-body h3,.post-body h4,.post-body hr{clear:both}.post-body:after{display:table;clear:both;content:""}.post-body figure.table{max-width:100%;overflow-x:auto;clear:both}.post-body table{font-size:.95rem;line-height:1.5}.post-body>table{display:block;width:-moz-max-content;width:max-content;max-width:100%;overflow-x:auto}.post-body th,.post-body td{border-width:1px;--tw-border-opacity: 1;border-color:rgb(var(--c-line) / var(--tw-border-opacity, 1));padding:.5rem .75rem;text-align:left;vertical-align:top}.post-body th{--tw-bg-opacity: 1;background-color:rgb(var(--c-shade) / var(--tw-bg-opacity, 1));font-weight:600;--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1))}.post-body hr{--tw-border-opacity: 1;border-color:rgb(var(--c-line) / var(--tw-border-opacity, 1));margin:2.5em 0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.left-4{left:1rem}.right-2{right:.5rem}.top-0{top:0}.top-1\/2{top:50%}.z-40{z-index:40}.z-50{z-index:50}.-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.mx-auto{margin-left:auto;margin-right:auto}.-mr-1{margin-right:-.25rem}.-mr-2\.5{margin-right:-.625rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-3{margin-left:.75rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-14{margin-top:3.5rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-9{margin-top:2.25rem}.mt-auto{margin-top:auto}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-\[16\/10\]{aspect-ratio:16/10}.aspect-\[16\/9\]{aspect-ratio:16/9}.aspect-\[4\/3\]{aspect-ratio:4/3}.aspect-\[4\/5\]{aspect-ratio:4/5}.aspect-\[7\/5\]{aspect-ratio:7/5}.aspect-video{aspect-ratio:16 / 9}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-2{height:.5rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-\[1\.125rem\]{height:1.125rem}.h-\[26mm\]{height:26mm}.h-full{height:100%}.min-h-11{min-height:2.75rem}.min-h-dvh{min-height:100dvh}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-2{width:.5rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-\[1\.125rem\]{width:1.125rem}.w-\[22mm\]{width:22mm}.w-full{width:100%}.min-w-0{min-width:0px}.max-w-2xl{max-width:42rem}.max-w-\[14ch\]{max-width:14ch}.max-w-\[16ch\]{max-width:16ch}.max-w-\[18ch\]{max-width:18ch}.max-w-\[20ch\]{max-width:20ch}.max-w-\[210mm\]{max-width:210mm}.max-w-\[36rem\]{max-width:36rem}.max-w-\[400px\]{max-width:400px}.max-w-md{max-width:28rem}.max-w-prose,.max-w-read{max-width:45rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.scroll-mt-24{scroll-margin-top:6rem}.list-disc{list-style-type:disc}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[32mm_minmax\(0\,1fr\)\]{grid-template-columns:32mm minmax(0,1fr)}.grid-cols-\[4\.25rem_minmax\(0\,1fr\)\]{grid-template-columns:4.25rem minmax(0,1fr)}.grid-cols-\[6\.5rem_minmax\(0\,1fr\)_auto\]{grid-template-columns:6.5rem minmax(0,1fr) auto}.grid-cols-\[7\.5rem_minmax\(0\,1fr\)\]{grid-template-columns:7.5rem minmax(0,1fr)}.grid-cols-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-columns:auto minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.\!gap-2{gap:.5rem!important}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-14{gap:3.5rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-7{gap:1.75rem}.gap-8{gap:2rem}.gap-x-10{-moz-column-gap:2.5rem;column-gap:2.5rem}.gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-0\.5{row-gap:.125rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-10{row-gap:2.5rem}.gap-y-14{row-gap:3.5rem}.gap-y-16{row-gap:4rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.gap-y-4{row-gap:1rem}.gap-y-6{row-gap:1.5rem}.gap-y-8{row-gap:2rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.self-start{align-self:flex-start}.self-center{align-self:center}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.\!rounded-lg{border-radius:.5rem!important}.\!rounded-md{border-radius:.375rem!important}.rounded-\[2px\]{border-radius:2px}.rounded-btn{border-radius:var(--radius-btn)}.rounded-full{border-radius:9999px}.rounded-theme{border-radius:var(--radius)}.border{border-width:1px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0px}.border-t{border-top-width:1px}.border-line{--tw-border-opacity: 1;border-color:rgb(var(--c-line) / var(--tw-border-opacity, 1))}.border-neutral-300{--tw-border-opacity: 1;border-color:rgb(212 212 212 / var(--tw-border-opacity, 1))}.bg-online{--tw-bg-opacity: 1;background-color:rgb(var(--c-online) / var(--tw-bg-opacity, 1))}.bg-paper{--tw-bg-opacity: 1;background-color:rgb(var(--c-paper) / var(--tw-bg-opacity, 1))}.bg-paper\/90{background-color:rgb(var(--c-paper) / .9)}.bg-shade{--tw-bg-opacity: 1;background-color:rgb(var(--c-shade) / var(--tw-bg-opacity, 1))}.bg-shade\/60{background-color:rgb(var(--c-shade) / .6)}.object-cover{-o-object-fit:cover;object-fit:cover}.p-12{padding:3rem}.p-3{padding:.75rem}.\!px-5{padding-left:1.25rem!important;padding-right:1.25rem!important}.\!py-2\.5{padding-top:.625rem!important;padding-bottom:.625rem!important}.\!py-4{padding-top:1rem!important;padding-bottom:1rem!important}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-7{padding-top:1.75rem;padding-bottom:1.75rem}.py-8{padding-top:2rem;padding-bottom:2rem}.\!pl-11{padding-left:2.75rem!important}.\!pr-20{padding-right:5rem!important}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-\[var\(--section-space\)\]{padding-bottom:var(--section-space)}.pl-5{padding-left:1.25rem}.pt-0\.5{padding-top:.125rem}.pt-10{padding-top:2.5rem}.pt-16{padding-top:4rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.\!text-\[0\.8125rem\]{font-size:.8125rem!important}.\!text-\[1\.125rem\]{font-size:1.125rem!important}.\!text-\[1\.1875rem\]{font-size:1.1875rem!important}.\!text-\[clamp\(2\.125rem\,1\.6rem\+2\.4vw\,3\.25rem\)\]{font-size:clamp(2.125rem,1.6rem + 2.4vw,3.25rem)!important}.\!text-\[clamp\(2rem\,1\.5rem\+2vw\,3rem\)\]{font-size:clamp(2rem,1.5rem + 2vw,3rem)!important}.\!text-sm{font-size:.875rem!important;line-height:1.25rem!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[0\.8125rem\]{font-size:.8125rem}.text-\[0\.9375rem\]{font-size:.9375rem}.text-\[1\.0625rem\]{font-size:1.0625rem}.text-\[1\.1875rem\]{font-size:1.1875rem}.text-\[1\.25rem\]{font-size:1.25rem}.text-\[1\.5rem\]{font-size:1.5rem}.text-\[11pt\]{font-size:11pt}.text-\[12pt\]{font-size:12pt}.text-\[24pt\]{font-size:24pt}.text-\[2rem\]{font-size:2rem}.text-\[8\.5pt\]{font-size:8.5pt}.text-\[9pt\]{font-size:9pt}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.\!font-normal{font-weight:400!important}.\!font-semibold{font-weight:600!important}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-\[1\.7\]{line-height:1.7}.leading-\[1\.8\]{line-height:1.8}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[-0\.01em\]{letter-spacing:-.01em}.tracking-\[-0\.02em\]{letter-spacing:-.02em}.tracking-\[-0\.03em\]{letter-spacing:-.03em}.tracking-\[0\.14em\]{letter-spacing:.14em}.\!text-ink{--tw-text-opacity: 1 !important;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1))!important}.\!text-ink-muted{--tw-text-opacity: 1 !important;color:rgb(var(--c-ink-muted) / var(--tw-text-opacity, 1))!important}.\!text-ink-soft{--tw-text-opacity: 1 !important;color:rgb(var(--c-ink-soft) / var(--tw-text-opacity, 1))!important}.text-accent-text{--tw-text-opacity: 1;color:rgb(var(--c-accent-text) / var(--tw-text-opacity, 1))}.text-ink{--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1))}.text-ink-muted{--tw-text-opacity: 1;color:rgb(var(--c-ink-muted) / var(--tw-text-opacity, 1))}.text-ink-soft{--tw-text-opacity: 1;color:rgb(var(--c-ink-soft) / var(--tw-text-opacity, 1))}.text-neutral-600{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.text-neutral-700{--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.text-rose-600{--tw-text-opacity: 1;color:rgb(225 29 72 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.decoration-neutral-300{text-decoration-color:#d4d4d4}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.opacity-60{opacity:.6}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-inset{--tw-ring-inset: inset}.ring-line{--tw-ring-opacity: 1;--tw-ring-color: rgb(var(--c-line) / var(--tw-ring-opacity, 1))}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.text-pretty{text-wrap:pretty}:root{--c-paper: 248 247 244;--c-surface: 255 255 255;--c-shade: 232 237 232;--c-line: 227 231 225;--c-ink: 36 40 39;--c-ink-soft: 59 66 62;--c-ink-muted: 98 107 101;--c-warm: 215 185 157;--c-online: 34 168 90;--c-accent: 82 110 89;--c-accent-ink: 255 255 255;--c-accent-text: 82 110 89;--code-bg: #1e2421;--code-ink: #dde3de;--code-comment: #7d8a81;--code-keyword: #e3c78a;--code-string: #a5c4ab;--code-number: #e09a86;--code-attr: #8fbcd4;--code-property: #c3a6d8;--font-mono: "JetBrains Mono";--radius: 12px;--radius-btn: 8px;--text-hero: clamp(2.75rem, 1.55rem + 4.9vw, 5rem);--text-page: clamp(2.375rem, 1.65rem + 3vw, 3.75rem);--text-section: clamp(1.75rem, 1.35rem + 1.6vw, 2.5rem);--head-weight: 600;--section-space: clamp(3rem, 2rem + 3.5vw, 5rem)}[data-palette=dark]{--c-paper: 23 27 25;--c-surface: 34 40 36;--c-shade: 42 50 44;--c-line: 57 65 59;--c-ink: 242 242 237;--c-ink-soft: 213 219 214;--c-ink-muted: 179 189 181;--c-warm: 201 168 135;--c-online: 74 222 128;--code-bg: #111513}@media (prefers-reduced-motion: no-preference){@view-transition{navigation: auto;}::view-transition-old(root),::view-transition-new(root){animation-duration:.22s}}[data-site-header]{border-bottom:1px solid transparent;transition:background-color .3s ease,border-color .3s ease}[data-site-header].is-scrolled,body.nav-open [data-site-header]{background-color:rgb(var(--c-paper) / .9);border-color:rgb(var(--c-line));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.nav-link{position:relative;padding-top:.25rem;padding-bottom:.25rem;font-size:.9375rem;--tw-text-opacity: 1;color:rgb(var(--c-ink-muted) / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.nav-link:hover{--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1))}.nav-link:after{position:absolute;left:0;right:0;bottom:-.125rem;height:1px;background-color:currentColor;content:"";transform:scaleX(0);transform-origin:left;transition:transform .25s ease}.nav-link:hover:after,.nav-link[aria-current]:after{transform:scaleX(1)}.nav-link[aria-current]{--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1))}[data-theme-toggle]{display:none}.js [data-theme-toggle]{display:inline-flex}[data-theme-toggle] [data-icon-sun],[data-palette=dark] [data-theme-toggle] [data-icon-moon]{display:none}[data-palette=dark] [data-theme-toggle] [data-icon-sun]{display:block}[data-theme-toggle] svg{transition:transform .4s cubic-bezier(.16,1,.3,1)}[data-theme-toggle]:hover svg{transform:rotate(-18deg)}html.theme-switching,html.theme-switching *,html.theme-switching *:before,html.theme-switching *:after{transition:background-color .3s ease,color .3s ease,border-color .3s ease,fill .3s ease!important}.contrib{display:grid;grid-template-columns:auto repeat(var(--weeks),minmax(10px,1fr));gap:3px;min-width:calc(var(--weeks) * 13px + 2rem)}.contrib-month,.contrib-weekday{font-family:var(--font-mono),ui-monospace,monospace;font-size:.6875rem;line-height:1;color:rgb(var(--c-ink-muted));white-space:nowrap}.contrib-month{padding-bottom:.35rem;overflow:visible}.contrib-weekday,.contrib>:first-child{position:sticky;left:0;z-index:1;background:rgb(var(--c-paper))}.contrib-weekday{display:flex;align-items:center;padding-right:.5rem}.contrib-cell{display:block;aspect-ratio:1;border-radius:3px;background:rgb(var(--c-shade))}.contrib-cell[data-level="1"]{background:rgb(var(--c-accent) / .3)}.contrib-cell[data-level="2"]{background:rgb(var(--c-accent) / .5)}.contrib-cell[data-level="3"]{background:rgb(var(--c-accent) / .75)}.contrib-cell[data-level="4"]{background:rgb(var(--c-accent))}.contrib-key{width:.75rem}.terminal{overflow:hidden;border-radius:var(--radius);--tw-bg-opacity: 1;background-color:rgb(var(--c-surface) / var(--tw-bg-opacity, 1));font-family:var(--font-mono),ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:.8125rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(var(--c-ink-soft) / var(--tw-text-opacity, 1));--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-inset: inset;--tw-ring-opacity: 1;--tw-ring-color: rgb(var(--c-line) / var(--tw-ring-opacity, 1))}.terminal-commands{display:flex;flex-wrap:wrap;gap:.375rem;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(var(--c-line) / var(--tw-border-opacity, 1));padding:.75rem 1rem}.terminal-commands[hidden]{display:none}.terminal-commands button{min-height:2rem;border-radius:.375rem;padding-left:.625rem;padding-right:.625rem;--tw-text-opacity: 1;color:rgb(var(--c-ink-muted) / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.terminal-commands button:hover,.terminal-commands button[aria-pressed=true]{--tw-bg-opacity: 1;background-color:rgb(var(--c-shade) / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1))}.terminal-output{min-height:11.5rem;padding:1rem}.terminal-output dt{--tw-text-opacity: 1;color:rgb(var(--c-ink-muted) / var(--tw-text-opacity, 1))}.terminal-output dd{--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1))}.terminal-prompt:before{content:"$ ";color:rgb(var(--c-accent-text))}.terminal-cursor{display:inline-block;width:.55em;height:1.1em;margin-left:.15em;vertical-align:-.2em;background:rgb(var(--c-ink-muted));animation:terminal-blink 1.1s steps(1) infinite}@keyframes terminal-blink{50%{opacity:0}}@media (prefers-reduced-motion: reduce){.terminal-cursor{animation:none}}.js [data-clamp]:not([data-clamp-open]){display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:6}[data-clamp-toggle][hidden],[data-pages-nav][hidden]{display:none}.share-btn{display:inline-flex;height:2.75rem;min-width:2.75rem;align-items:center;justify-content:center;gap:.5rem;border-radius:9999px;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(var(--c-ink-soft) / var(--tw-text-opacity, 1));--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-inset: inset;--tw-ring-opacity: 1;--tw-ring-color: rgb(var(--c-line) / var(--tw-ring-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.share-btn:hover{--tw-bg-opacity: 1;background-color:rgb(var(--c-shade) / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1))}.share-btn-wide{padding-left:1rem;padding-right:1rem}.archive{align-self:flex-start;border-radius:var(--radius);border-width:1px;--tw-border-opacity: 1;border-color:rgb(var(--c-line) / var(--tw-border-opacity, 1));padding:1rem 1.25rem}.archive summary{display:flex;cursor:pointer;list-style-type:none;align-items:center;justify-content:space-between;gap:.75rem;padding-top:.375rem;padding-bottom:.375rem;font-size:.9375rem;--tw-text-opacity: 1;color:rgb(var(--c-ink-soft) / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.archive summary:hover{--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1))}.archive summary::-webkit-details-marker{display:none}.archive summary svg{height:.875rem;width:.875rem;flex-shrink:0;--tw-text-opacity: 1;color:rgb(var(--c-ink-muted) / var(--tw-text-opacity, 1));transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.archive details[open]>summary{--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1))}.archive details[open]>summary svg{transform:rotate(90deg)}.archive-count{font-family:var(--font-mono),ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:.75rem;--tw-text-opacity: 1;color:rgb(var(--c-ink-muted) / var(--tw-text-opacity, 1))}.archive-nest{margin-left:.25rem;border-left-width:1px;--tw-border-opacity: 1;border-color:rgb(var(--c-line) / var(--tw-border-opacity, 1));padding-left:.75rem}.archive-posts{padding-bottom:.25rem}.archive-posts a{display:block;padding-top:.25rem;padding-bottom:.25rem;font-size:.875rem;line-height:1.25rem;line-height:1.375;--tw-text-opacity: 1;color:rgb(var(--c-ink-muted) / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.archive-posts a:hover{--tw-text-opacity: 1;color:rgb(var(--c-accent-text) / var(--tw-text-opacity, 1))}.certificate-dialog{width:100%;max-width:100%;height:100dvh;max-height:100dvh;margin:0;padding:1.25rem;border:0;background:transparent}.certificate-dialog[open]{display:grid;place-items:center}.certificate-dialog::backdrop{background:#171b19e0}.certificate-dialog figure{max-width:min(100%,68rem)}.certificate-dialog img{display:block;width:auto;max-width:100%;height:auto;max-height:calc(100dvh - 7rem);margin:0 auto;border-radius:6px;background:rgb(var(--c-surface))}.certificate-dialog figcaption{margin-top:.9rem;text-align:center;font-family:var(--font-mono),ui-monospace,monospace;font-size:.8125rem;color:#f2f2edcc}.certificate-dialog [data-certificate-close]{position:fixed;top:1rem;right:1rem;display:grid;width:2.75rem;height:2.75rem;place-items:center;border-radius:999px;background:#f2f2ed1f;color:#f2f2ed}.certificate-dialog [data-certificate-close]:hover{background:#f2f2ed3d}.coffee-cup{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:999px;background:#fd0;color:#0d0c22;transition:transform .25s ease}.coffee-cup svg{width:62%;height:62%;overflow:visible}.coffee:hover .coffee-cup,.coffee:focus-visible .coffee-cup{transform:rotate(-8deg) scale(1.08)}.coffee:hover .coffee-steam path,.coffee:focus-visible .coffee-steam path{animation:coffee-steam 1.1s ease-in-out infinite}.coffee-steam path:nth-child(2){animation-delay:.18s}.coffee-steam path:nth-child(3){animation-delay:.36s}@keyframes coffee-steam{0%{transform:translateY(1.5px);opacity:0}35%{opacity:1}to{transform:translateY(-2.5px);opacity:0}}@media (prefers-reduced-motion: reduce){.coffee .coffee-cup{transform:none}.coffee .coffee-steam path{animation:none}}.js [data-reveal]{opacity:0;transform:translateY(12px);transition:opacity .6s ease,transform .6s cubic-bezier(.16,1,.3,1);transition-delay:var(--reveal-delay, 0ms)}.js [data-reveal].is-visible{opacity:1;transform:none}@media (prefers-reduced-motion: reduce){.js [data-reveal]{opacity:1;transform:none}}.resume-sheet{width:210mm;max-width:100%;min-height:297mm;margin:0 auto;padding:16mm 16mm 18mm;background:#fff;color:#262626;box-shadow:0 10px 40px #00000014;font-size:10.5pt;line-height:1.5}.resume-sheet h1,.resume-sheet h2,.resume-sheet h3{color:#0a0a0a}@media (max-width: 640px){.resume-sheet{padding:28px 20px;min-height:0}}@page{size:A4;margin:14mm 15mm}@media print{html,body{background:#fff!important}body{-webkit-print-color-adjust:exact;print-color-adjust:exact}.no-print{display:none!important}.resume-sheet{width:auto;min-height:0;margin:0;padding:0;box-shadow:none}.resume-block{-moz-column-break-inside:avoid;break-inside:avoid}}.marker\:text-ink-muted *::marker{color:rgb(var(--c-ink-muted))}.marker\:text-ink-muted::marker{color:rgb(var(--c-ink-muted))}.hover\:bg-shade:hover{--tw-bg-opacity: 1;background-color:rgb(var(--c-shade) / var(--tw-bg-opacity, 1))}.hover\:\!text-ink:hover{--tw-text-opacity: 1 !important;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1))!important}.hover\:text-accent-text:hover{--tw-text-opacity: 1;color:rgb(var(--c-accent-text) / var(--tw-text-opacity, 1))}.hover\:text-ink:hover{--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.focus\:not-sr-only:focus{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.focus\:fixed:focus{position:fixed}.focus\:left-4:focus{left:1rem}.focus\:top-4:focus{top:1rem}.focus\:z-\[100\]:focus{z-index:100}.focus\:rounded-btn:focus{border-radius:var(--radius-btn)}.focus\:bg-ink:focus{--tw-bg-opacity: 1;background-color:rgb(var(--c-ink) / var(--tw-bg-opacity, 1))}.focus\:px-5:focus{padding-left:1.25rem;padding-right:1.25rem}.focus\:py-3:focus{padding-top:.75rem;padding-bottom:.75rem}.focus\:text-paper:focus{--tw-text-opacity: 1;color:rgb(var(--c-paper) / var(--tw-text-opacity, 1))}.group:hover .group-hover\:translate-x-0\.5{--tw-translate-x: .125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:text-accent-text{--tw-text-opacity: 1;color:rgb(var(--c-accent-text) / var(--tw-text-opacity, 1))}.group:hover .group-hover\:text-ink{--tw-text-opacity: 1;color:rgb(var(--c-ink) / var(--tw-text-opacity, 1))}@media (prefers-reduced-motion: no-preference){@keyframes ping{75%,to{transform:scale(2);opacity:0}}.motion-safe\:animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}}@media (min-width: 640px){.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:-mx-8{margin-left:-2rem;margin-right:-2rem}.sm\:flex{display:flex}.sm\:w-20{width:5rem}.sm\:max-w-md{max-width:28rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[8\.5rem_minmax\(0\,1fr\)\]{grid-template-columns:8.5rem minmax(0,1fr)}.sm\:grid-cols-\[8\.5rem_minmax\(0\,1fr\)_auto\]{grid-template-columns:8.5rem minmax(0,1fr) auto}.sm\:grid-cols-\[9rem_minmax\(0\,1fr\)\]{grid-template-columns:9rem minmax(0,1fr)}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-center{align-items:center}.sm\:items-baseline{align-items:baseline}.sm\:justify-between{justify-content:space-between}.sm\:gap-5{gap:1.25rem}.sm\:gap-x-10{-moz-column-gap:2.5rem;column-gap:2.5rem}.sm\:gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.sm\:border-l{border-left-width:1px}.sm\:border-t-0{border-top-width:0px}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:py-12{padding-top:3rem;padding-bottom:3rem}.sm\:py-14{padding-top:3.5rem;padding-bottom:3.5rem}.sm\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.sm\:pl-6{padding-left:1.5rem}.sm\:pl-8{padding-left:2rem}.sm\:pr-6{padding-right:1.5rem}.sm\:pr-8{padding-right:2rem}.sm\:pt-1{padding-top:.25rem}.sm\:pt-14{padding-top:3.5rem}.sm\:pt-20{padding-top:5rem}.sm\:pt-24{padding-top:6rem}.sm\:text-right{text-align:right}.sm\:\!text-\[1\.25rem\]{font-size:1.25rem!important}.sm\:text-\[0\.9375rem\]{font-size:.9375rem}.sm\:text-\[1\.25rem\]{font-size:1.25rem}.sm\:text-\[1\.375rem\]{font-size:1.375rem}.sm\:text-\[2rem\]{font-size:2rem}}@media (min-width: 768px){.md\:col-span-3{grid-column:span 3 / span 3}.md\:col-span-9{grid-column:span 9 / span 9}.md\:mt-12{margin-top:3rem}.md\:block{display:block}.md\:hidden{display:none}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[8\.5rem_minmax\(0\,1fr\)_9rem\]{grid-template-columns:8.5rem minmax(0,1fr) 9rem}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-end{align-items:flex-end}.md\:justify-end{justify-content:flex-end}.md\:justify-between{justify-content:space-between}.md\:gap-10{gap:2.5rem}.md\:self-auto{align-self:auto}.md\:py-8{padding-top:2rem;padding-bottom:2rem}}@media (min-width: 1024px){.lg\:col-span-12{grid-column:span 12 / span 12}.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:col-span-4{grid-column:span 4 / span 4}.lg\:col-span-5{grid-column:span 5 / span 5}.lg\:col-span-6{grid-column:span 6 / span 6}.lg\:col-span-7{grid-column:span 7 / span 7}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:col-span-9{grid-column:span 9 / span 9}.lg\:col-start-5{grid-column-start:5}.lg\:col-start-8{grid-column-start:8}.lg\:ml-auto{margin-left:auto}.lg\:mt-0{margin-top:0}.lg\:mt-16{margin-top:4rem}.lg\:mt-24{margin-top:6rem}.lg\:block{display:block}.lg\:hidden{display:none}.lg\:max-w-none{max-width:none}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,1fr\)_15rem\]{grid-template-columns:minmax(0,1fr) 15rem}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:items-center{align-items:center}.lg\:justify-between{justify-content:space-between}.lg\:gap-10{gap:2.5rem}.lg\:gap-14{gap:3.5rem}.lg\:gap-16{gap:4rem}.lg\:gap-x-10{-moz-column-gap:2.5rem;column-gap:2.5rem}.lg\:border-t-0{border-top-width:0px}.lg\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.lg\:py-14{padding-top:3.5rem;padding-bottom:3.5rem}.lg\:py-16{padding-top:4rem;padding-bottom:4rem}.lg\:pt-12{padding-top:3rem}.lg\:pt-2{padding-top:.5rem}.lg\:pt-20{padding-top:5rem}.lg\:pt-28{padding-top:7rem}.lg\:pt-32{padding-top:8rem}.lg\:text-right{text-align:right}}@media print{.print\:p-0{padding:0}}
