.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: Inter, -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: 460;--weight-emphasis: 560;--background: #111;--foreground: #ededed;--muted: #191919;--muted-foreground: #8f8f8f;--border: #262626;--ring: #666;--font-size-xs: .75rem;--font-size-sm: .8125rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.1875rem;--font-size-2xl: 1.375rem;--font-size-3xl: 1.875rem;--track-sm: -.003em;--track-base: -.01em;--track-lg: -.012em;--track-xl: -.016em;--track-2xl: -.019em;--track-3xl: -.024em;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 40px;--spacing-2xl: 64px;--spacing-3xl: 96px;--ease: ease;--duration: .14s}html[data-theme=dark]{color-scheme:dark}html[data-theme=light]{color-scheme:light;--background: #fbfbfa;--foreground: #14140f;--muted: #f2f1ef;--muted-foreground: #676767;--border: #eae9e6;--ring: #999}@media(prefers-contrast:more){:root{--muted-foreground: #c4c4c4;--border: #3d3d3d}html[data-theme=light]{--muted-foreground: #3a3a3a;--border: #c9c7c3}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}img,video,iframe{max-width:100%}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{--content-max-width: 36.5rem;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:1.65;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);text-decoration:none;border-radius:4px}.skip-link:focus{top:var(--spacing-md)}.nav{margin-bottom:var(--spacing-3xl)}.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);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:44px;font-size:var(--font-size-sm);font-weight:var(--weight-text);letter-spacing:var(--track-sm);color:var(--muted-foreground);text-decoration:none;transition:color var(--duration) var(--ease),opacity var(--duration) var(--ease)}.nav-link.active{color:var(--foreground)}@media(min-width:520px)and (hover:hover){.nav-links:hover .nav-link:not(:hover){opacity:.8}}.nav-link:hover{color:var(--foreground)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin-right:-12px;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-3xl)}.section{width:100%}.section-mb-lg{margin-bottom:var(--spacing-2xl)}h1,h2,h3,h4,h5,h6{color:var(--foreground);font-weight:var(--weight-emphasis);line-height:1.3}h1{font-size:var(--font-size-2xl);letter-spacing:var(--track-2xl);margin:0 0 var(--spacing-md)}h2{font-size:var(--font-size-xl);letter-spacing:var(--track-xl);margin:var(--spacing-2xl) 0 var(--spacing-md)}h3{font-size:var(--font-size-lg);letter-spacing:var(--track-lg);margin:var(--spacing-xl) 0 var(--spacing-sm)}h4,h5,h6{font-size:var(--font-size-base);letter-spacing:var(--track-base);margin:var(--spacing-lg) 0 var(--spacing-sm)}p,ul,ol,li{color:var(--muted-foreground)}p{margin:0 0 var(--spacing-lg)}p:last-child{margin-bottom:0}.text{font-size:var(--font-size-base);color:var(--muted-foreground)}.text-lg{font-size:var(--font-size-lg);line-height:1.55;letter-spacing:var(--track-lg)}.highlight,strong,b{color:var(--foreground);font-weight:var(--weight-emphasis)}a:any-link{color:var(--foreground);text-decoration:none}p a:any-link,li a:any-link,.prose a:any-link,.timeline-content a:any-link{color:var(--foreground);text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:color-mix(in srgb,var(--muted-foreground) 80%,transparent);text-underline-offset:.25em;transition:text-decoration-color var(--duration) var(--ease)}p a:any-link:hover,li a:any-link:hover,.prose a:any-link:hover,.timeline-content a:any-link:hover{text-decoration-color:var(--foreground)}a:focus-visible,button:focus-visible{outline:2px solid var(--ring);outline-offset:3px;border-radius:2px}.profile-section h1{font-size:var(--font-size-3xl);letter-spacing:var(--track-3xl);margin-bottom:var(--spacing-xl)}.greeting-name{display:block}.greeting-tagline{display:block;margin-top:var(--spacing-xs);font-size:var(--font-size-lg);font-weight:var(--weight-text);letter-spacing:var(--track-lg);color:var(--muted-foreground)}.work-section{margin-top:var(--spacing-3xl)}.section-label{margin:0 0 var(--spacing-lg);font-size:var(--font-size-base);font-weight:var(--weight-emphasis);letter-spacing:var(--track-base);line-height:1.4;color:var(--foreground)}.work-list{display:flex;flex-direction:column;gap:var(--spacing-lg);margin:0;padding:0;list-style:none}.work-link{display:flex;flex-direction:column;margin-inline:calc(var(--spacing-md) * -1);padding:var(--spacing-sm) var(--spacing-md);border-radius:6px;text-decoration:none;transition:background-color var(--duration) var(--ease)}@media(hover:hover){.work-link:hover{background-color:var(--muted)}}.work-title{font-size:var(--font-size-base);font-weight:var(--weight-text);letter-spacing:var(--track-base);color:var(--foreground)}.work-description{font-size:var(--font-size-base);line-height:1.5;color:var(--muted-foreground)}.case-back{display:inline-block;margin-bottom:var(--spacing-2xl);font-size:var(--font-size-sm);letter-spacing:var(--track-sm);color:var(--muted-foreground);text-decoration:none;transition:color var(--duration) var(--ease)}.case-back:before{content:"← "}.case-back:hover{color:var(--foreground)}.case-header{margin-bottom:var(--spacing-2xl)}.case-header h1{margin-bottom:var(--spacing-sm)}.case-meta{display:flex;flex-wrap:wrap;gap:var(--spacing-md);margin:0;font-size:var(--font-size-sm);letter-spacing:var(--track-sm);color:var(--muted-foreground)}.case-label{margin:0 0 var(--spacing-xs);font-size:var(--font-size-sm);letter-spacing:var(--track-sm);color:var(--muted-foreground)}.case-result{margin:0 0 var(--spacing-2xl);font-size:var(--font-size-lg);font-weight:var(--weight-text);line-height:1.55;letter-spacing:var(--track-lg);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)}.prose blockquote{margin:var(--spacing-xl) 0;padding-left:var(--spacing-lg);border-left:1px 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:4px}.prose figcaption,.timeline-content figcaption{margin-top:var(--spacing-md);font-size:var(--font-size-sm);letter-spacing:var(--track-sm);color:var(--muted-foreground);text-align:left}.now-last-updated{margin-top:var(--spacing-2xl);font-size:var(--font-size-sm);letter-spacing:var(--track-sm);color:var(--muted-foreground)}.timeline-entry{padding-bottom:var(--spacing-2xl)}.timeline-entry+.timeline-entry{padding-top:var(--spacing-2xl);border-top:1px 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);letter-spacing:0;color:var(--muted-foreground)}.timeline-content h2{margin:0 0 var(--spacing-sm);font-size:var(--font-size-lg);letter-spacing:var(--track-lg)}.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:3px}pre{margin:var(--spacing-lg) 0;padding:var(--spacing-md);overflow-x:auto;background:var(--muted);border-radius:4px;font-size:var(--font-size-sm);line-height:1.55}pre code{display:grid;font-size:inherit}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:1px solid var(--border);font-size:var(--font-size-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);letter-spacing:var(--track-sm);color:var(--muted-foreground)}.footer-content{display:flex;align-items:baseline;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:baseline;gap:var(--spacing-lg)}.footer-link{color:var(--muted-foreground);text-decoration:none;transition:color var(--duration) var(--ease),opacity var(--duration) var(--ease)}.footer-link:hover{color:var(--foreground)}@media(min-width:520px)and (hover:hover){.footer-links:hover .footer-link:not(:hover){opacity:.8}}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:768px){body{padding-top:var(--spacing-xl)}.nav,.container,.footer-content,.error-content{padding-inline:var(--spacing-lg)}.nav{margin-bottom:var(--spacing-2xl)}.nav-links{gap:var(--spacing-md)}.profile-section h1{font-size:var(--font-size-2xl);letter-spacing:var(--track-2xl)}.footer-content{flex-direction:column;align-items:flex-start;gap:var(--spacing-sm)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
