.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}:root{--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", system-ui, sans-serif;--font-mono: ui-monospace, "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, monospace;--weight-text: 400;--weight-emphasis: 500;--background: #121212;--foreground: #f2f1ee;--muted: #1c1c1b;--muted-foreground: #95938e;--border: #333230;--ring: #6e6c67;--link-hover: color-mix(in srgb, var(--muted-foreground) 35%, var(--foreground));--accent: #e05a00;--success: #6f9170;--image-outline: rgba(242, 241, 238, .12);--scale-ratio: 1.125;--space-unit: .25rem;--baseline: calc(var(--space-unit) * 4);--font-size-base: .875rem;--font-size-sm: calc(var(--font-size-base) / var(--scale-ratio));--font-size-md: calc(var(--font-size-base) * var(--scale-ratio));--font-size-lg: calc(var(--font-size-base) * pow(var(--scale-ratio), 2));--line-height-sm: calc(var(--space-unit) * 5);--track-sm: -.003em;--line-height-base: calc(var(--space-unit) * 5);--track-base: -.00563em;--line-height-md: calc(var(--space-unit) * 6);--track-md: -.011em;--line-height-lg: calc(var(--space-unit) * 6);--track-lg: -.014em;--spacing-xs: calc(var(--space-unit) * pow(var(--scale-ratio), 0));--spacing-sm: calc(var(--space-unit) * pow(var(--scale-ratio), 6));--spacing-md: calc(var(--space-unit) * pow(var(--scale-ratio), 12));--spacing-lg: calc(var(--space-unit) * pow(var(--scale-ratio), 15));--spacing-xl: calc(var(--space-unit) * pow(var(--scale-ratio), 19));--spacing-2xl: calc(var(--space-unit) * pow(var(--scale-ratio), 23));--spacing-3xl: calc(var(--space-unit) * pow(var(--scale-ratio), 27));--radius: var(--space-unit);--hairline: 1px;--touch-target: calc(var(--space-unit) * 11);--control-size: calc(var(--space-unit) * 8);--content-max-width: calc(var(--baseline) * 36);--ease: ease;--duration: .14s}html[data-theme=dark]{color-scheme:dark}html[data-theme=light]{color-scheme:light;--background: #f0efec;--foreground: #1a1a19;--muted: #e5e4e0;--muted-foreground: #5c5a55;--border: #d0cec8;--ring: #8a8780;--accent: #a84200;--success: #4a6648;--image-outline: rgba(26, 26, 25, .08)}@media(prefers-contrast:more){:root{--muted-foreground: #ebebf5;--border: #545458}html[data-theme=light]{--muted-foreground: #3a3a3c;--border: #8e8e93}p a:any-link,.prose a:any-link,.timeline-content a:any-link{text-decoration-color:var(--foreground)}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}img,video,iframe{max-width:100%}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}html{width:100%;min-height:100%;overflow-x:clip;background-color:var(--background);font-size:16px;scrollbar-gutter:stable;text-size-adjust:none;-webkit-text-size-adjust:none}body{display:flex;flex-direction:column;align-items:center;width:100%;min-height:100dvh;margin:0;padding:var(--spacing-2xl) env(safe-area-inset-right) 0 env(safe-area-inset-left);font-family:var(--font-sans);font-size:var(--font-size-base);font-weight:var(--weight-text);line-height:var(--line-height-base);letter-spacing:var(--track-base);color:var(--muted-foreground);background-color:var(--background);text-align:left;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.nav,.container,.footer-content{width:100%;max-width:var(--content-max-width);margin-inline:auto}.skip-link{position:absolute;top:-100px;left:0;z-index:100;padding:var(--spacing-sm) var(--spacing-md);background:var(--foreground);color:var(--background);font-size:var(--font-size-sm);line-height:var(--line-height-sm);text-decoration:none;border-radius:var(--radius)}.skip-link:focus{top:var(--spacing-md)}.nav{margin-bottom:var(--spacing-2xl)}.nav-container{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-lg)}.nav-wordmark{font-size:var(--font-size-sm);font-weight:var(--weight-emphasis);line-height:var(--line-height-sm);letter-spacing:var(--track-sm);color:var(--foreground);text-decoration:none}.nav-links{display:flex;align-items:center;gap:var(--spacing-lg)}.nav-link{display:inline-flex;align-items:center;min-height:var(--touch-target);line-height:var(--line-height-sm);letter-spacing:var(--track-sm);color:var(--muted-foreground);text-decoration:none;transition:color var(--duration) var(--ease)}.nav-link.active{color:var(--foreground)}.nav-link:hover{color:var(--link-hover)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:var(--control-size);height:var(--control-size);margin-right:calc(var(--space-unit) * -1.5);padding:0;background:none;border:none;color:var(--muted-foreground);cursor:pointer;transition:color var(--duration) var(--ease)}.theme-toggle:hover{color:var(--foreground)}.theme-toggle svg{display:block;transition:transform var(--duration) var(--ease)}html[data-theme=light] .theme-toggle svg{transform:rotate(180deg)}.container{flex:1;padding-bottom:var(--spacing-2xl)}.section{width:100%}.section-mb{margin-bottom:var(--spacing-2xl)}h1,h2,h3,h4,h5,h6{color:var(--foreground);font-weight:var(--weight-emphasis);margin:var(--spacing-xl) 0 var(--spacing-sm);text-wrap:balance}h1{margin-top:0;font-size:var(--font-size-lg);line-height:var(--line-height-lg);letter-spacing:var(--track-lg)}h2,h3{font-size:var(--font-size-md);line-height:var(--line-height-md);letter-spacing:var(--track-md)}h4,h5,h6{font-size:var(--font-size-base);line-height:var(--line-height-base);letter-spacing:var(--track-base)}p,ul,ol,li{color:var(--muted-foreground)}p{margin:0 0 var(--spacing-lg);text-wrap:pretty}p:last-child{margin-bottom:0}.text{font-size:var(--font-size-base);color:var(--muted-foreground)}.highlight,strong,b{color:var(--foreground);font-weight:var(--weight-emphasis)}a:any-link{color:var(--foreground);text-decoration:none}p a:any-link,.prose a:any-link,.timeline-content a:any-link{color:var(--foreground);text-decoration:underline;text-decoration-thickness:var(--hairline);text-decoration-color:color-mix(in srgb,var(--foreground) 25%,transparent);text-underline-offset:calc(var(--space-unit) * .5);transition:text-decoration-color var(--duration) var(--ease)}p a:any-link:hover,.prose a:any-link:hover,.timeline-content a:any-link:hover{text-decoration-color:var(--muted-foreground)}a:focus-visible,button:focus-visible{outline:calc(var(--space-unit) * .5) solid var(--ring);outline-offset:calc(var(--space-unit) * .75);border-radius:var(--radius)}.list-section{margin-top:var(--spacing-2xl)}.list-label{margin:0 0 var(--spacing-sm);padding-bottom:var(--spacing-sm);font-size:var(--font-size-sm);font-weight:var(--weight-text);line-height:var(--line-height-sm);letter-spacing:var(--track-sm);color:var(--muted-foreground);border-bottom:var(--hairline) solid var(--border)}.list-label--plain{padding-bottom:0;border-bottom:none}.work-list{display:flex;flex-direction:column;margin:0;padding:0;list-style:none}.work-link{display:flex;align-items:baseline;gap:0;padding:var(--spacing-sm) 0;text-decoration:none}.work-title,.work-date{transition:color var(--duration) var(--ease)}@media(hover:hover){.work-link:hover .work-date{color:var(--link-hover)}}.work-title{flex-grow:1;font-size:var(--font-size-base);font-weight:var(--weight-text);line-height:var(--line-height-base);letter-spacing:var(--track-base);color:var(--foreground)}.work-year{width:3.5rem;flex-shrink:0;font-size:var(--font-size-base);line-height:var(--line-height-base);letter-spacing:var(--track-base);font-variant-numeric:tabular-nums;color:var(--muted-foreground)}.work-date{flex-shrink:0;margin-left:var(--spacing-md);font-size:var(--font-size-sm);line-height:var(--line-height-sm);letter-spacing:var(--track-sm);font-variant-numeric:tabular-nums;color:var(--muted-foreground)}.project-list{display:flex;flex-direction:column;margin:0;padding:0;list-style:none}.project-link{display:flex;align-items:center;gap:0;min-height:var(--touch-target);padding:var(--spacing-sm) 0;text-decoration:none}.project-icon-wrap{display:flex;flex-shrink:0;align-items:center;width:calc(var(--space-unit) * 11)}.project-icon{width:var(--control-size);height:var(--control-size);border-radius:var(--radius);object-fit:cover}.project-copy{display:flex;flex:1;flex-direction:column;gap:calc(var(--space-unit) * .5);min-width:0}.project-name{display:inline-flex;align-items:baseline;gap:var(--spacing-xs);font-size:var(--font-size-base);font-weight:var(--weight-text);line-height:var(--line-height-base);letter-spacing:var(--track-base);color:var(--foreground);transition:color var(--duration) var(--ease)}.project-desc{font-size:var(--font-size-sm);line-height:var(--line-height-sm);letter-spacing:var(--track-sm);color:var(--muted-foreground)}.project-year{flex-shrink:0;margin-left:var(--spacing-md);font-size:var(--font-size-sm);line-height:var(--line-height-sm);letter-spacing:var(--track-sm);font-variant-numeric:tabular-nums;color:var(--muted-foreground);transition:color var(--duration) var(--ease)}.project-external{font-size:var(--font-size-sm);line-height:var(--line-height-sm);letter-spacing:var(--track-sm);color:var(--muted-foreground);opacity:0;transition:opacity var(--duration) var(--ease),color var(--duration) var(--ease)}@media(hover:hover){.project-link:hover .project-name,.project-link:hover .project-year{color:var(--link-hover)}.project-link:hover .project-external{opacity:1;color:var(--link-hover)}}.work-new{display:inline-block;width:calc(var(--space-unit) * 1.5);height:calc(var(--space-unit) * 1.5);margin-left:var(--spacing-sm);vertical-align:middle;background:var(--accent);border-radius:50%}.entry-footer{display:flex;justify-content:space-between;align-items:center;margin-top:var(--spacing-2xl)}.back-link{position:relative;display:inline-flex;align-items:center;gap:var(--spacing-xs);font-size:var(--font-size-sm);line-height:var(--line-height-sm);letter-spacing:var(--track-sm);color:var(--muted-foreground);text-decoration:none;transition:color var(--duration) var(--ease)}.back-link:hover{color:var(--foreground)}.copy-link{position:relative;display:inline-grid;padding:var(--spacing-sm);margin:calc(-1 * var(--spacing-sm));font-family:inherit;font-size:var(--font-size-sm);line-height:var(--line-height-sm);letter-spacing:var(--track-sm);color:var(--muted-foreground);background:none;border:none;cursor:pointer;transition:color var(--duration) var(--ease)}.copy-link:hover{color:var(--foreground)}.copy-link-label{grid-area:1 / 1;display:inline-flex;align-items:center;transition:opacity .3s cubic-bezier(.2,0,0,1),transform .3s cubic-bezier(.2,0,0,1),filter .3s cubic-bezier(.2,0,0,1)}.copy-link-done{opacity:0;transform:scale(.25);filter:blur(var(--space-unit));color:var(--success)}.copy-link[data-copied] .copy-link-label:not(.copy-link-done){opacity:0;transform:scale(.25);filter:blur(var(--space-unit))}.copy-link[data-copied] .copy-link-done{opacity:1;transform:none;filter:none}.entry-footer svg{display:block;width:var(--font-size-sm);height:var(--font-size-sm);flex-shrink:0}.case-header{margin-bottom:var(--spacing-2xl)}.case-header h1{margin-bottom:var(--spacing-sm)}.entry-meta{display:flex;flex-wrap:wrap;gap:var(--spacing-md);margin:0;font-size:var(--font-size-sm);line-height:var(--line-height-sm);letter-spacing:var(--track-sm);color:var(--muted-foreground)}.case-label{margin:0 0 var(--spacing-xs);font-size:var(--font-size-sm);line-height:var(--line-height-sm);letter-spacing:var(--track-sm);color:var(--muted-foreground)}.case-result{margin:0 0 var(--spacing-2xl);font-size:var(--font-size-md);font-weight:var(--weight-text);line-height:var(--line-height-md);letter-spacing:var(--track-md);color:var(--foreground)}.prose{width:100%;min-width:0}.prose p{margin:0 0 var(--spacing-lg)}.prose p:last-child{margin-bottom:0}.prose ul,.prose ol{margin:0 0 var(--spacing-lg);padding-left:var(--spacing-lg)}.prose li{margin-bottom:var(--spacing-sm);text-wrap:pretty}.prose blockquote{margin:var(--spacing-xl) 0;padding-left:var(--spacing-lg);border-left:var(--hairline) solid var(--border);color:var(--muted-foreground);font-style:italic}.prose figure,.timeline-content figure{margin:var(--spacing-2xl) 0;margin-inline:0}.prose img,.timeline-content img{display:block;width:100%;height:auto;border-radius:var(--radius);outline:var(--hairline) solid var(--image-outline);outline-offset:calc(var(--hairline) * -1)}.prose figcaption,.timeline-content figcaption{margin-top:var(--spacing-md);font-size:var(--font-size-sm);line-height:var(--line-height-sm);letter-spacing:var(--track-sm);color:var(--muted-foreground);text-align:left}.timeline-entry{padding-bottom:var(--spacing-2xl)}.timeline-entry+.timeline-entry{padding-top:var(--spacing-2xl);border-top:var(--hairline) solid var(--border)}.timeline-entry:last-child{padding-bottom:0}.timeline-date{margin-bottom:var(--spacing-sm);font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:var(--line-height-sm);letter-spacing:0;color:var(--muted-foreground)}.timeline-content h2{margin:0 0 var(--spacing-sm)}.timeline-content p{margin:0 0 var(--spacing-md)}.timeline-content p:last-child{margin-bottom:0}.empty-state{color:var(--muted-foreground)}code{font-family:var(--font-mono);font-size:.875em;font-weight:400;letter-spacing:0;color:var(--foreground);overflow-wrap:break-word}:not(pre)>code{padding:.1em .35em;background:var(--muted);border-radius:var(--radius)}pre{margin:var(--spacing-lg) 0;padding:var(--spacing-md);overflow-x:auto;background:var(--muted);border-radius:var(--radius);font-size:var(--font-size-sm);line-height:var(--line-height-sm)}pre code{display:grid;font-size:inherit}code[data-line-numbers]{counter-reset:line}code[data-line-numbers]>[data-line]:before{counter-increment:line;content:counter(line);display:inline-block;width:1.5rem;margin-right:var(--spacing-md);text-align:right;color:color-mix(in srgb,var(--muted-foreground) 55%,transparent)}figure[data-rehype-pretty-code-figure]{margin:var(--spacing-lg) 0}figure[data-rehype-pretty-code-figure] pre{margin:0}html[data-theme=dark] [data-theme="github-dark github-light"] span[style]{color:var(--shiki-dark)}html[data-theme=light] [data-theme="github-dark github-light"] span[style]{color:var(--shiki-light)}.prose .footnotes{margin-top:var(--spacing-2xl);padding-top:var(--spacing-lg);border-top:var(--hairline) solid var(--border);font-size:var(--font-size-sm);line-height:var(--line-height-sm);letter-spacing:var(--track-sm)}.prose .footnotes p{margin:0}.prose a[data-footnote-ref]{font-size:.75em;vertical-align:super;text-decoration:none;padding:0 .15em}footer{width:100%;padding:var(--spacing-xl) 0 max(var(--spacing-2xl),env(safe-area-inset-bottom));font-size:var(--font-size-sm);line-height:var(--line-height-sm);letter-spacing:var(--track-sm);color:var(--muted-foreground)}.footer-content{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md)}.footer-content p{margin:0;font-size:var(--font-size-sm)}.footer-links{display:flex;align-items:center;gap:var(--spacing-lg)}.footer-link{position:relative;display:inline-flex;align-items:center;color:var(--muted-foreground);text-decoration:none;transition:color var(--duration) var(--ease)}@media(pointer:coarse){.footer-link:after,.back-link:after,.copy-link:after{content:"";position:absolute;top:50%;left:50%;width:max(100%,var(--touch-target));height:var(--touch-target);transform:translate(-50%,-50%)}}.footer-link--icon{width:var(--line-height-sm);height:var(--line-height-sm);justify-content:center;flex-shrink:0}.footer-link svg{display:block;width:var(--font-size-sm);height:var(--font-size-sm);flex-shrink:0}.footer-link:hover{color:var(--link-hover)}body.error-page{justify-content:center;padding-block:var(--spacing-2xl)}.error-content{max-width:var(--content-max-width);padding-inline:var(--spacing-lg)}.error-content h1{margin-bottom:var(--spacing-md)}.error-content p{margin:0 0 var(--spacing-lg)}.error-content p:last-child{margin-bottom:0}@media(max-width:48rem){body{padding-top:var(--spacing-xl)}.nav,.container,.footer-content,.error-content{padding-inline:var(--spacing-lg)}.nav-links{gap:var(--spacing-md)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
