.link{color:var(--text-primary);font-size:inherit;border-radius:var(--radius-card);border:1px solid var(--text-primary);background:linear-gradient(to right, transparent 50%, var(--text-primary) 50%);height:calc(1em + .25rem);transition:color var(--transition-base), background-position var(--transition-base);background-position:0 0;background-size:200% 100%;align-items:center;padding:.375rem .25rem;text-decoration:none;display:inline-flex;position:relative}.link[aria-current=page]{color:var(--bg-primary);cursor:default;background-position:-100% 0}.link>*{user-select:none}@media screen and (hover:hover){.link:hover{text-decoration:none}.link:is(:hover:not([aria-current=page]),:focus-visible){color:var(--bg-primary);background-position:-100% 0}}nav#bottom-nav{bottom:calc(1rem + env(safe-area-inset-bottom));border-radius:var(--radius-pill);border:1px solid var(--border-primary);width:fit-content;max-width:calc(100vw - 1rem);z-index:var(--z-dock);transition:transform var(--duration-slow) var(--ease-out);background-color:var(--bg-secondary);view-transition-name:bottom-nav;margin-inline:auto;padding:8px 14px;position:fixed;inset-inline:0}:root.🌞 nav#bottom-nav{box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}nav#bottom-nav.lifted{--lift-offset:100px;transform:translateY(calc(-1 * var(--lift-offset)))}.nav-container{align-items:center;gap:var(--space-3xs);display:flex}.nav-section{align-items:center;gap:.625rem;display:flex}.nav-divider{background-color:var(--border-primary);width:1px;height:1.75rem;margin:0 var(--space-xs)}.nav-item{color:var(--text-primary);border-radius:var(--button-radius);cursor:pointer;background-color:#0000;border:none;align-items:center;padding:4px;display:flex;position:relative}.nav-item:has(svg){padding:4px}.nav-item:after{content:"";inset-block:min(-8px, (100% - var(--tap-target-size)) / 2);position:absolute;inset-inline:-2px}.nav-item svg{width:28px;max-width:28px;height:28px;max-height:28px}.nav-link{text-transform:uppercase;flex-shrink:0;padding:6px 10px;font-size:1.75rem;position:relative}@supports (text-box:trim-both cap alphabetic){.nav-link span{text-box:trim-both cap alphabetic}}@supports not (text-box:trim-both cap alphabetic){.nav-link span{line-height:1}}.nav-link[aria-current=page]:before{content:"";border:1.5px solid var(--text-primary);view-transition-name:active-nav;border-radius:8px;position:absolute;inset:-3px -2px}@media screen and (hover:hover){.nav-link:hover{text-decoration:none}.nav-section .nav-item{transition:background-color var(--transition-base)}.nav-section .nav-item:hover:not([aria-current=page]){background-color:var(--hover-background)}}@media screen and (width<=672px),screen and (height<=500px){.nav-container{gap:var(--space-4xs)}.nav-section{gap:var(--space-xs)}.nav-link{padding:6px 7px;font-size:1.5rem}nav#bottom-nav{bottom:calc(.75rem + env(safe-area-inset-bottom));padding:7px 12px}nav#bottom-nav.lifted{transform:none}.nav-divider{margin:0 var(--space-3xs)}.nav-item svg{width:24px;max-width:24px;height:24px;max-height:24px}}@media screen and (width<=448px){.nav-link{padding:5px;font-size:1.35rem}.nav-link[aria-current=page]:before{inset:-2px}.nav-item svg{width:22px;max-width:22px;height:22px;max-height:22px}nav#bottom-nav{padding:5px 10px}}@media screen and (width<=420px){.nav-section:has(svg){gap:2px}.nav-section:has(svg) .nav-item{margin:-2px;padding:4px}.nav-link{padding:5px 4px;font-size:1.25rem}.nav-link[aria-current=page]:before{inset:-1px}.nav-item svg{width:16px;max-width:16px;height:16px;max-height:16px}.nav-divider{height:1.25rem;margin:0 2px}nav#bottom-nav{bottom:calc(.5rem + env(safe-area-inset-bottom));padding:5px 6px}}@media screen and (width<=374px){nav#bottom-nav{display:none}}.vertical-fade{pointer-events:none;user-select:none;width:100%;z-index:var(--z-fade-top);opacity:0;transition:opacity var(--duration-slowest) var(--ease-out);height:clamp(100px,2.309vw + 90.432px,120px);position:fixed;left:0}.vertical-fade.top{background:linear-gradient(to top, transparent, var(--color-fade));mask-image:linear-gradient(to bottom, var(--color-fade) 35%, transparent);top:0}.vertical-fade.bottom{z-index:var(--z-fade-bottom);background:linear-gradient(to bottom, transparent, var(--color-fade));mask-image:linear-gradient(to top, var(--color-fade) 35%, transparent);bottom:0}.vertical-fade.visible{opacity:1}@media (hover:hover) and (pointer:fine) and (forced-colors:none) and (not (prefers-contrast:more)){html.fancy-cursor-on,html.fancy-cursor-on *{cursor:none!important}html.fancy-cursor-on.fancy-cursor-native,html.fancy-cursor-on.fancy-cursor-native *{cursor:auto!important}html.fancy-cursor-on.fancy-cursor-native input,html.fancy-cursor-on.fancy-cursor-native textarea,html.fancy-cursor-on.fancy-cursor-native select,html.fancy-cursor-on.fancy-cursor-native [contenteditable=true]{cursor:text!important}}.fancy-cursor{display:none}@media (hover:hover) and (pointer:fine) and (forced-colors:none) and (not (prefers-contrast:more)){.fancy-cursor{z-index:var(--z-cursor);pointer-events:none;mix-blend-mode:difference;width:110px;height:110px;transition:opacity var(--duration-base) var(--ease-out);will-change:transform;display:block;position:fixed;top:0;left:0;transform:translate(-100px,-100px)translate(-50%,-50%)}.fancy-cursor[popover]{color:inherit;background:0 0;border:none;margin:0;padding:0;inset:0 auto auto 0;overflow:visible}.fancy-cursor.fancy-cursor-top{mix-blend-mode:normal}.fancy-cursor.fancy-cursor-top .fancy-cursor-ball{background-color:var(--text-primary)}.fancy-cursor.fancy-cursor-top[data-state=hover-text] .fancy-cursor-ball{background-color:#8d8d8d33}.fancy-cursor[hidden]{opacity:0;display:block}.fancy-cursor-ball{color:#fff;width:100%;height:100%;transition:transform var(--duration-base) var(--ease-out);background-color:#fff;background-position:50%;background-repeat:no-repeat;background-size:42%;border-radius:50%;justify-content:center;align-items:center;display:flex;transform:scale(.227273)}.fancy-cursor-label{z-index:2;font-family:var(--ff-mono);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;text-align:center;opacity:0;pointer-events:none;max-width:90%;line-height:1.2;position:relative}.fancy-cursor[data-state=hover] .fancy-cursor-ball{transform:scale(.454545)}.fancy-cursor[data-state=hover-text]{mix-blend-mode:normal}.fancy-cursor[data-state=hover-text] .fancy-cursor-ball{backdrop-filter:blur(25px);color:var(--text-highlight);background-color:#8d8d8d33;transform:none}.fancy-cursor[data-state=hover-text] .fancy-cursor-label{opacity:1}.fancy-cursor[data-state=arrow-left] .fancy-cursor-ball,.fancy-cursor[data-state=arrow-right] .fancy-cursor-ball{transform:scale(.727273)}.fancy-cursor[data-state=arrow-left] .fancy-cursor-ball{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 18l-6-6 6-6'/%3E%3C/svg%3E")}.fancy-cursor[data-state=arrow-right] .fancy-cursor-ball{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18l6-6-6-6'/%3E%3C/svg%3E")}}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:reduce){.fancy-cursor,.fancy-cursor-ball{transition:none}}@media print{.fancy-cursor{display:none!important}}footer{background:var(--bg-primary);border-top:1px solid var(--border-primary);margin-top:auto}.footer-content{max-width:var(--page-width);padding-block:var(--space-l);padding-inline:var(--gutter);text-align:left;margin:0 auto}@media screen and (width<=672px),screen and (height<=500px){.footer-content{padding-block-end:calc(4.5rem + env(safe-area-inset-bottom))}}@media screen and (width<=374px){.footer-content{padding-block-end:var(--space-l)}}.footer-content p{font-size:var(--fs-sm);color:var(--text-tertiary);font-weight:var(--font-weight-regular);margin:0}.footer-content a.footer-link{color:inherit;text-underline-offset:.2em;text-decoration:underline}@media screen and (hover:hover){.footer-content a.footer-link:hover{color:var(--text-primary)}}.header-link{color:var(--text-primary);font-weight:var(--font-weight-bold);font-size:inherit;text-transform:uppercase;display:inline-block}@media (hover:hover){.header-link{transition:color var(--transition-base)}.header-link:is(:hover,:focus-visible){color:var(--accent)}}.header-link[aria-current=page]{text-decoration:underline}#hamburger-button{min-height:36px;padding:var(--space-3xs) var(--space-2xs);color:var(--text-secondary);background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:var(--radius-card);cursor:pointer;z-index:var(--z-menu-toggle);transition:color var(--transition-base), border-color var(--transition-base), background-color var(--transition-base);align-items:center;display:flex;position:relative}#hamburger-button:after{content:"";inset-block:min(0px, (100% - var(--tap-target-size)) / 2);inset-inline:min(0px, (100% - var(--tap-target-size)) / 2);position:absolute}@media screen and (width<=767px){#hamburger-button{min-height:34px}}@media screen and (hover:hover){#hamburger-button:hover{color:var(--text-primary);border-color:var(--border-secondary)}}#hamburger-button .hamburger-icon{color:inherit;transform-origin:50%;width:20px;height:20px;transition:transform var(--duration-slowest) var(--ease-in-out-strong);position:relative}#hamburger-button .line{transform-origin:50%;width:15px;height:2px;transition:transform var(--duration-slowest) var(--ease-in-out-strong);background-color:currentColor;position:absolute;top:50%;left:50%}#hamburger-button .top{transform:translate(-50%,calc(-50% - 5px))rotate(0)}#hamburger-button .middle{transform:translate(-50%,-50%)scale(1)}#hamburger-button .bottom{transform:translate(-50%,calc(5px - 50%))rotate(0)}#hamburger-button.open .hamburger-icon{transform:rotate(90deg)}#hamburger-button.open .top{transform:translate(-50%,-50%)rotate(45deg)}#hamburger-button.open .middle{transform:translate(-50%,-50%)scale(0)}#hamburger-button.open .bottom{transform:translate(-50%,-50%)rotate(-45deg)}.site-search-trigger[data-astro-cid-ac66eqjo]{align-items:center;gap:var(--space-3xs);min-height:36px;padding:0 var(--space-2xs);border:1px solid var(--border-primary);border-radius:var(--radius-card);background:var(--bg-secondary);color:var(--text-secondary);font-size:var(--fs-sm);cursor:pointer;transition:color var(--transition-base), border-color var(--transition-base), background-color var(--transition-base);display:flex}.site-search-trigger-label[data-astro-cid-ac66eqjo]{display:none}.site-search-trigger-kbd[data-astro-cid-ac66eqjo]{margin-left:var(--space-3xs);border:1px solid var(--border-primary);border-radius:var(--button-radius);color:var(--text-tertiary);font-family:inherit;font-size:var(--fs-xs);transition:color var(--transition-base), border-color var(--transition-base);background:0 0;gap:1px;padding:1px 4px;line-height:1.4;display:none}@media screen and (width>=768px){.site-search-trigger-label[data-astro-cid-ac66eqjo]{display:inline}.site-search-trigger-kbd[data-astro-cid-ac66eqjo]{display:inline-flex}}@media screen and (width<=767px){.site-search-trigger[data-astro-cid-ac66eqjo]{min-height:34px}}.site-search-dialog[data-astro-cid-ac66eqjo]{--search-top:20dvh;interpolate-size:allow-keywords;width:clamp(min(100%,400px),90vw,600px);height:fit-content;max-height:calc(var(--search-viewport,100dvh) - var(--search-top) - var(--space-m));margin:var(--search-top) auto auto;padding:var(--space-s);opacity:0;background:0 0;border:none;overflow:visible;transform:translateY(-2rem)}.site-search-dialog[data-astro-cid-ac66eqjo][open]{opacity:1;flex-direction:column;display:flex;transform:translateY(0)}.site-search-dialog[data-astro-cid-ac66eqjo]::backdrop{backdrop-filter:blur(8px);background:#000000b3}@media screen and (width<=512px){.site-search-dialog[data-astro-cid-ac66eqjo]{--search-top:15dvh;padding:var(--space-xs)}}.site-search-surface[data-astro-cid-ac66eqjo]{gap:var(--space-s);flex-direction:column;min-height:0;display:flex}.site-search-bar[data-astro-cid-ac66eqjo]{align-items:center;gap:var(--space-s);display:flex}.site-search-shell[data-astro-cid-ac66eqjo]{border-bottom:1px solid var(--border-primary);min-width:0;min-height:36px;max-height:none;color:var(--text-primary);font-weight:var(--font-weight-regular);font-size:var(--fs-lg);letter-spacing:0;transition:border-color var(--duration-slow) var(--ease-default);flex:1;align-items:center;margin-bottom:.25em;display:flex;position:relative}.site-search-shell[data-astro-cid-ac66eqjo]:has(.site-search-input:focus){border-bottom-color:var(--text-primary)}.site-search-field-wrap[data-astro-cid-ac66eqjo]{flex:1;min-width:0;display:grid;position:relative}.site-search-input[data-astro-cid-ac66eqjo],.site-search-autocomplete[data-astro-cid-ac66eqjo]{min-width:0;font:inherit;letter-spacing:inherit;grid-area:1/1;line-height:1.2}.site-search-input[data-astro-cid-ac66eqjo]{width:100%;color:inherit;background:0 0;border:none;padding:0;padding-block:0}.site-search-input[data-astro-cid-ac66eqjo]:focus{outline:none}.site-search-input[data-astro-cid-ac66eqjo]::placeholder{color:var(--text-secondary);opacity:1;transition:color var(--transition-base)}.site-search-input[data-astro-cid-ac66eqjo]:focus::placeholder{color:var(--text-highlight)}.site-search-autocomplete[data-astro-cid-ac66eqjo]{pointer-events:none;white-space:nowrap;color:color-mix(in oklab, var(--text-secondary) 74%, transparent);opacity:.8;align-items:center;display:flex;overflow:hidden}.site-search-autocomplete[data-astro-cid-ac66eqjo] .ac-prefix[data-astro-cid-ac66eqjo]{color:#0000}.site-search-action-slot[data-astro-cid-ac66eqjo]{flex:none;width:24px;height:24px;position:relative}.site-search-action-button[data-astro-cid-ac66eqjo],.site-search-loading[data-astro-cid-ac66eqjo]{border-radius:var(--radius-card);color:var(--text-secondary);transition:opacity var(--duration-slow) var(--ease-out), transform var(--duration-slow) var(--ease-out), color var(--transition-base), background-color var(--transition-base);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex;position:absolute;inset:0}.site-search-action-button[data-astro-cid-ac66eqjo]{opacity:0;pointer-events:none;transform:translateY(4px)}.site-search-action-button[data-astro-cid-ac66eqjo]:before{content:"";inset:calc((100% - var(--tap-target-size,44px)) / 2);position:absolute}.site-search-close[data-astro-cid-ac66eqjo]{min-width:var(--tap-target-size,44px);min-height:var(--tap-target-size,44px);padding:0 var(--space-xs);border-radius:var(--button-radius);color:var(--text-secondary);font:inherit;font-size:var(--fs-sm);cursor:pointer;transition:color var(--transition-base), background-color var(--transition-base);background:0 0;border:none;flex:none;justify-content:center;align-items:center;display:inline-flex}.site-search-close[data-astro-cid-ac66eqjo]:active{background-color:var(--hover-background);color:var(--text-highlight)}.site-search-loading[data-astro-cid-ac66eqjo]{gap:var(--space-3xs);opacity:0;pointer-events:none;font-size:var(--fs-sm);color:var(--text-secondary);line-height:1;transform:translateY(10px)}[data-astro-cid-ac66eqjo][data-search-surface].has-value .site-search-action-button[data-astro-cid-ac66eqjo]{opacity:1;pointer-events:auto;transform:translateY(0)}[data-astro-cid-ac66eqjo][data-search-surface].is-loading .site-search-action-button[data-astro-cid-ac66eqjo]{opacity:0;pointer-events:none;transform:translateY(4px)}[data-astro-cid-ac66eqjo][data-search-surface].is-loading .site-search-loading[data-astro-cid-ac66eqjo]{opacity:1;transform:translateY(0)}.spinner[data-astro-cid-ac66eqjo]{animation:1s linear infinite paused spin}[data-astro-cid-ac66eqjo][data-search-surface].is-loading .spinner[data-astro-cid-ac66eqjo]{animation-play-state:running}@keyframes spin{to{transform:rotate(1turn)}}.site-search-results[data-astro-cid-ac66eqjo]{min-height:0;color:var(--text-primary);flex-direction:column;display:flex}.site-search-results-count[data-astro-cid-ac66eqjo]{color:var(--text-secondary);font-size:var(--fs-sm);font-weight:var(--font-weight-bold);font-variant-numeric:tabular-nums;margin:0}.site-search-results-count[data-astro-cid-ac66eqjo]:empty{display:none}.site-search-results[data-astro-cid-ac66eqjo] .site-search-results-list{overscroll-behavior:contain;scrollbar-color:var(--border-primary) transparent;scrollbar-width:thin;min-height:0;max-height:min(60dvh,34rem);margin:0;padding:0;list-style:none;overflow-y:auto}.site-search-results[data-astro-cid-ac66eqjo] .site-search-results-list>li{padding-block:var(--space-3xs)}.site-search-results[data-astro-cid-ac66eqjo] .site-search-results-list>li+li{border-top:var(--border-width-hairline) solid var(--border-primary)}.site-search-results[data-astro-cid-ac66eqjo] .site-search-hit{gap:var(--space-3xs);padding:var(--space-s) var(--space-s) var(--space-s) var(--space-m);border-radius:var(--radius-card);color:var(--text-primary);transition:background-color var(--transition-base), color var(--transition-base);text-decoration:none;display:grid}.site-search-results[data-astro-cid-ac66eqjo] .site-search-title{color:var(--text-highlight);font-size:var(--fs-base);font-weight:var(--font-weight-medium);line-height:var(--line-height-heading);letter-spacing:-.01em;position:relative}.site-search-results[data-astro-cid-ac66eqjo] .site-search-title:before{content:"";top:calc(.5lh - 3px);left:calc(var(--space-m) / -2 - 3px);background:var(--ink);width:6px;height:6px;transition:transform var(--transition-fast);position:absolute;transform:scale(0)}.site-search-results[data-astro-cid-ac66eqjo] .site-search-excerpt{color:var(--text-primary);font-size:var(--fs-sm);line-height:1.45}.site-search-results[data-astro-cid-ac66eqjo] .site-search-excerpt mark{color:var(--text-highlight);text-decoration-line:underline;text-decoration-color:var(--ink);text-underline-offset:.2em;background:0 0;border-radius:0;padding:0;text-decoration-thickness:2px}.site-search-results[data-astro-cid-ac66eqjo] .site-search-hit:focus-visible{background-color:var(--hover-background);outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:calc(var(--focus-ring-width) * -1)}.site-search-results[data-astro-cid-ac66eqjo] .site-search-hit:active{background-color:var(--hover-background)}.site-search-results[data-astro-cid-ac66eqjo] .site-search-hit:is(:focus-visible,:active) .site-search-title:before{transform:scale(1)}.site-search-results[data-astro-cid-ac66eqjo] .site-search-sublist{margin:0 0 var(--space-3xs) var(--space-m);border-left:var(--border-width-hairline) solid var(--border-primary);padding:0;list-style:none}.site-search-results[data-astro-cid-ac66eqjo] .site-search-sublist .site-search-hit{padding-block:var(--space-xs)}.site-search-results[data-astro-cid-ac66eqjo] .site-search-sublist .site-search-title{font-size:var(--fs-sm)}.site-search-results[data-astro-cid-ac66eqjo] .site-search-error{align-items:center;gap:var(--space-xs);color:var(--text-primary);font-size:var(--fs-sm);margin:0;display:flex}.site-search-results[data-astro-cid-ac66eqjo] .site-search-error:before{content:"";background:var(--ink);flex-shrink:0;width:6px;height:6px}.site-search-navigation[data-astro-cid-ac66eqjo]{display:none}.site-search-navigation[data-astro-cid-ac66eqjo] .hint-group[data-astro-cid-ac66eqjo]{align-items:center;gap:.3rem;display:inline-flex}.site-search-navigation[data-astro-cid-ac66eqjo] kbd[data-astro-cid-ac66eqjo]{border:1px solid var(--border-secondary);border-radius:var(--button-radius);color:var(--text-primary);background:0 0;padding:0 4px;font-family:inherit;font-size:.9em;line-height:1.4}@media screen and (width<=512px){.site-search-loading[data-astro-cid-ac66eqjo]{font-size:var(--fs-xs);gap:var(--space-4xs)}.site-search-loading[data-astro-cid-ac66eqjo] .spinner[data-astro-cid-ac66eqjo]{width:20px;height:20px}.site-search-loading[data-astro-cid-ac66eqjo] span[data-astro-cid-ac66eqjo]{display:none}}@media (prefers-reduced-motion:no-preference){.site-search-dialog[data-astro-cid-ac66eqjo][open]{transition:opacity var(--duration-moderate) var(--ease-in), transform var(--duration-moderate) var(--ease-in), display var(--duration-moderate) var(--ease-in) allow-discrete, overlay var(--duration-moderate) var(--ease-in) allow-discrete;transition-behavior:allow-discrete}.site-search-dialog[data-astro-cid-ac66eqjo]::backdrop{transition:background-color var(--duration-moderate) var(--ease-out), backdrop-filter var(--duration-moderate) var(--ease-out)}.site-search-dialog[data-astro-cid-ac66eqjo][data-closing]::backdrop{backdrop-filter:blur();background:0 0}@starting-style{.site-search-dialog[data-astro-cid-ac66eqjo][open]{opacity:0;transform:translateY(-2rem)}.site-search-dialog[data-astro-cid-ac66eqjo][open]::backdrop{backdrop-filter:blur();background-color:#0000}}.site-search-results[data-astro-cid-ac66eqjo] .site-search-results-list{opacity:1;transition:opacity var(--duration-slow) var(--ease-out), transform var(--duration-slow) var(--ease-out);transform:translateY(0)}@starting-style{.site-search-results[data-astro-cid-ac66eqjo] .site-search-results-list{opacity:0;transform:translateY(-.5rem)}}}.site-search-trigger[data-astro-cid-ac66eqjo]:focus-visible{color:var(--text-highlight)}.site-search-action-button[data-astro-cid-ac66eqjo]:focus-visible,.site-search-close[data-astro-cid-ac66eqjo]:focus-visible{background-color:var(--hover-background);color:var(--text-highlight);outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:calc(var(--focus-ring-width) * -1)}@media screen and (hover:hover){.site-search-trigger[data-astro-cid-ac66eqjo]:hover{color:var(--text-primary);border-color:var(--border-secondary)}.site-search-trigger[data-astro-cid-ac66eqjo]:hover .site-search-trigger-kbd[data-astro-cid-ac66eqjo]{color:var(--text-secondary);border-color:var(--border-secondary)}.site-search-action-button[data-astro-cid-ac66eqjo]:hover{color:var(--text-secondary)}.site-search-close[data-astro-cid-ac66eqjo]:hover{color:var(--text-primary)}.site-search-results[data-astro-cid-ac66eqjo] .site-search-hit:hover{background-color:var(--hover-background)}.site-search-results[data-astro-cid-ac66eqjo] .site-search-hit:hover .site-search-title:before{transform:scale(1)}}@media screen and (pointer:fine){.site-search-navigation[data-astro-cid-ac66eqjo]{align-items:center;gap:var(--space-s);margin-top:var(--space-s);color:var(--text-secondary);font-size:var(--fs-xs);flex-wrap:wrap;display:inline-flex}.site-search-close[data-astro-cid-ac66eqjo]{display:none}}@media screen and (prefers-reduced-motion:reduce){.site-search-dialog[data-astro-cid-ac66eqjo],.site-search-action-button[data-astro-cid-ac66eqjo],.site-search-loading[data-astro-cid-ac66eqjo],.spinner[data-astro-cid-ac66eqjo],.site-search-results[data-astro-cid-ac66eqjo] .site-search-results-list{transition-duration:.01ms;animation:none}}header{margin-block:1rem;padding-block:clamp(.75rem,2vw,1.125rem)}nav#top-nav{justify-content:space-between;align-items:center;gap:var(--space-l);width:100%;display:flex;position:relative}.brand{flex-direction:column;gap:2px;display:flex}.brand-link{font-size:var(--fs-base);font-weight:var(--font-weight-regular);color:var(--text-primary);transition:color var(--transition-fast);margin-block:-4px;padding-block:4px;line-height:1.2;text-decoration:none}.brand-meta{font-size:var(--fs-sm);color:var(--text-tertiary);line-height:1}.nav-actions{align-items:center;gap:var(--space-l);min-width:0;display:flex}.lang-toggle{min-width:36px;min-height:36px;padding:0 var(--space-2xs);font-size:var(--fs-sm);font-weight:var(--font-weight-semibold);color:var(--text-secondary);background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:var(--radius-card);transition:color var(--transition-fast), border-color var(--transition-fast), background-color var(--transition-fast);justify-content:center;align-items:center;text-decoration:none;display:inline-flex;position:relative}.nav-actions .site-search-trigger{position:relative}.nav-actions .site-search-trigger:after,.lang-toggle:after{content:"";inset-block:min(0px, (100% - var(--tap-target-size)) / 2);inset-inline:min(0px, (100% - var(--tap-target-size)) / 2);position:absolute}@media (hover:hover){.brand-link:hover{color:var(--text-highlight)}.lang-toggle:hover{color:var(--text-primary);border-color:var(--border-secondary)}}dialog[data-menu-dialog]{background:var(--bg-primary);width:100svw;max-width:none;height:100svh;max-height:none;color:var(--text-primary);z-index:var(--z-menu);transition:opacity var(--duration-slow) var(--ease-out), display var(--duration-slow) var(--ease-out) allow-discrete;border:none;margin:0;padding:0;position:fixed;inset:0;overflow-x:hidden}dialog[data-menu-dialog][open]{opacity:1}dialog[data-menu-dialog]:not([open]){pointer-events:none;opacity:0}dialog[data-menu-dialog]::backdrop{display:none}@starting-style{dialog[data-menu-dialog][open]{opacity:0}}.menu-close{top:max(var(--space-m), env(safe-area-inset-top));right:var(--gutter);width:44px;height:44px;color:inherit;cursor:pointer;z-index:1;opacity:1;background:0 0;border:none;justify-content:center;align-items:center;font-size:2.25rem;line-height:1;display:flex;position:absolute}dialog[data-menu-dialog][open] .menu-close{animation:reveal-item var(--duration-slow) var(--ease-out) .1s both}.menu-content{height:100%;padding-block:calc(var(--space-2xl) + env(safe-area-inset-top)) calc(var(--space-2xl) + env(safe-area-inset-bottom));padding-inline:var(--gutter);justify-content:center;display:flex;overflow-y:auto}.menu-content ul{text-align:center;margin-block:auto;margin-inline:0;padding:0;list-style:none}.menu-content ul li{margin-block:clamp(var(--space-xs), 1.5vh, var(--space-l));opacity:0;justify-content:center;display:flex}dialog[data-menu-dialog][open] .menu-content ul li[data-i="1"]{animation:reveal-item var(--duration-slow) var(--ease-out) .1s both}dialog[data-menu-dialog][open] .menu-content ul li[data-i="2"]{animation:reveal-item var(--duration-slow) var(--ease-out) .15s both}dialog[data-menu-dialog][open] .menu-content ul li[data-i="3"]{animation:reveal-item var(--duration-slow) var(--ease-out) .2s both}dialog[data-menu-dialog][open] .menu-content ul li[data-i="4"]{animation:reveal-item var(--duration-slow) var(--ease-out) .25s both}dialog[data-menu-dialog][open] .menu-content ul li[data-i="5"]{animation:reveal-item var(--duration-slow) var(--ease-out) .3s both}.menu-content .menu-link{--arrow-shift:.95em;font-size:clamp(2rem,min(9vw,11svh),5.5rem);font-weight:var(--font-weight-bold);letter-spacing:-.03em;line-height:1;text-decoration:none}.menu-content li.is-long .menu-link{font-size:clamp(1.25rem,min(5.5vw,7svh),4rem)}.menu-content .menu-link>span{transition:transform var(--transition-base);align-items:center;display:flex;position:relative}.menu-content .menu-link>span svg{left:calc(-1 * var(--arrow-shift));opacity:0;pointer-events:none;width:.72em;height:auto;transition:opacity var(--duration-instant) var(--ease-default);position:absolute}.menu-content .menu-link:is(:hover,:focus-visible)>span{transform:translateX(var(--arrow-shift))}.menu-content .menu-link:is(:hover,:focus-visible)>span svg{opacity:1;transition:opacity var(--transition-base)}.menu-content .menu-link[aria-current=page]{text-underline-offset:.14em;text-decoration:underline .06em}@media (prefers-reduced-motion:reduce){.menu-content .menu-link>span,.menu-content .menu-link>span svg{transition:none}}.menu-footer{bottom:max(var(--space-l), env(safe-area-inset-bottom));left:var(--gutter);opacity:0;position:absolute}dialog[data-menu-dialog][open] .menu-footer{animation:reveal-footer var(--duration-slow) var(--ease-out) .4s both}.menu-theme{right:var(--gutter);bottom:calc(max(var(--space-l), env(safe-area-inset-bottom)) - 10px);display:none;position:absolute}dialog[data-menu-dialog][open] .menu-theme{animation:reveal-footer var(--duration-slow) var(--ease-out) .4s both}.menu-theme .theme-toggle{color:var(--text-primary);padding:10px;display:flex}.menu-theme .theme-toggle svg{width:24px;height:24px}@media screen and (width<=374px){.menu-theme{display:block}}.menu-footer p{font-family:var(--ff-mono);font-size:var(--fs-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--text-tertiary);margin:0}@media screen and (width>=768px){header{margin-block:2.5rem}}@media screen and (width<=768px){nav#top-nav{gap:var(--space-m)}.nav-actions{gap:var(--space-s)}.lang-toggle{min-width:34px;min-height:34px}}@media screen and (width<=450px){.brand-meta{display:none}.nav-actions{gap:var(--space-xs)}}body{z-index:0;flex-direction:column;min-height:100svh;display:flex;position:relative}.page-shell-header,.page-shell-prelude,.page-shell-title-wrap{max-width:var(--page-width);padding-inline:var(--gutter);width:100%;margin-inline:auto}.page-shell-title-wrap{container-type:inline-size}h1.page-title{font-size:max(1.5rem, min(6.25rem, max(2.75rem, 7vw), calc(100cqi / var(--title-ch,12) * 1.55)));font-weight:var(--font-weight-heading);text-wrap:balance;margin-block:.35em .5em;line-height:.95}h1.page-title-thesis{max-width:24ch;font-size:clamp(1.75rem,1rem + 2.9vw,3.6rem);font-weight:var(--font-weight-semibold);letter-spacing:-.025em;margin-block:.5em .6em;line-height:1.05}@supports (text-box:trim-both cap alphabetic){h1.page-title{text-box:trim-both cap alphabetic}}.page-shell-main{flex-direction:column;flex:1;width:100%;min-width:0;display:flex;&:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:var(--focus-ring-offset)}}.page-shell-content{min-width:0;max-width:var(--content-width);padding-inline:var(--gutter);padding-block:var(--gutter) calc(var(--dock-clearance) + env(safe-area-inset-bottom));flex:1;width:100%;margin-inline:auto;container:main-content}*{box-sizing:border-box;min-width:0;line-height:var(--line-height-base);margin:0;padding:0}html{text-size-adjust:100%;font-size:16px;font-family:var(--ff-base);text-rendering:optimizelegibility;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;scrollbar-gutter:stable;scroll-behavior:smooth;background:var(--bg-primary);scroll-padding-bottom:calc(var(--dock-clearance) + env(safe-area-inset-bottom));overflow-x:clip}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}html:has(dialog[open]){overflow:hidden}:focus:not(:focus-visible){outline:none}:where(a,button,input,select,textarea,summary,[tabindex]:not([tabindex="-1"])):focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:var(--focus-ring-offset)}::selection{background:var(--selection-bg);color:var(--selection-text)}body{font-size:var(--fs-base);color:var(--text-primary);background:var(--bg-primary);overflow-x:clip}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}h1,.h1,h2,.h2,h3,.h3,h4,.h4,h5,.h5,h6,.h6{color:var(--text-primary);font-family:var(--ff-heading);font-size:var(--heading-size,1rem);font-weight:var(--font-weight-heading);line-height:var(--line-height-heading);letter-spacing:var(--letter-spacing-heading);text-wrap:balance}h1,.h1{--heading-size:2.5rem;letter-spacing:-.015em;line-height:1.1}h2,.h2{--heading-size:2rem;letter-spacing:-.01em;line-height:1}h3,.h3{--heading-size:1.5rem;letter-spacing:-.005em;line-height:1.2}h4,.h4{--heading-size:1.25rem;line-height:1.3}h5,h6,.h5,.h6{--heading-size:1.125rem;line-height:1.4}@media screen and (width>=768px){h1,.h1{--heading-size:3rem}h2,.h2{--heading-size:2.5rem}h3,.h3{--heading-size:1.75rem}h4,.h4{--heading-size:1.5rem}h5,h6,.h5,.h6{--heading-size:1.25rem}}a{color:inherit;font-weight:var(--font-weight-regular);text-decoration:none}main p a:not([class]),.work li a:not([class]){text-underline-offset:.2em;text-decoration:underline 1px;text-decoration-color:color-mix(in oklab, currentcolor 40%, transparent)}@media screen and (hover:hover){a:hover{color:var(--accent)}main p a:not([class]):hover,.work li a:not([class]):hover{text-decoration-color:currentColor}}input,textarea{touch-action:manipulation;font-size:16px}em{letter-spacing:-.0125em;word-spacing:-.0125em;font-style:italic}::target-text,mark{background:color-mix(in oklab, currentcolor 18%, transparent);color:currentColor;border-radius:2px;padding:0 3px}[id],:target{scroll-margin-top:4rem}[type=search]{appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{display:none}::-webkit-search-decoration{appearance:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{left:var(--space-m);top:var(--space-m);padding:var(--space-2xs) var(--space-xs);border-radius:var(--radius-card);border:1px solid var(--border-primary);background:var(--bg-secondary);color:var(--text-primary);z-index:var(--z-skip-link);transition:transform var(--duration-fast) var(--ease-out);position:absolute;transform:translateY(-200%)}.skip-link:focus-visible{transform:translateY(0)}b,strong{font-weight:var(--font-weight-semibold)}img,video{max-width:100%;height:auto}kbd{background-color:var(--bg-secondary);min-width:20px;height:20px;color:var(--text-secondary);font-family:monospace;font-size:14px;font-weight:var(--font-weight-bold);border:1px solid var(--border-primary);border-radius:4px;justify-content:center;align-items:center;padding-inline:4px;line-height:1;display:inline-flex}@media print{#bottom-nav,#hamburger-button,.site-search,dialog,.skip-link,.theme-toggle,.vertical-fade,.fancy-cursor,toast-msg{display:none!important}html{background:#fff;font-size:12pt}body{color:#000;background:#fff}a[href^=http]:after{content:" (" attr(href) ")";color:#666;font-size:.8em}nav a:after,.brand-link:after{content:none!important}img,video{break-inside:avoid;max-width:100%!important}h1,h2,h3,h4,h5,h6{break-after:avoid}p,blockquote{orphans:3;widows:3}}@view-transition{navigation:auto}:root{--vt-duration:var(--duration-slow);--vt-timing:var(--ease-out-quad)}::view-transition-group(root){animation-duration:var(--duration-fast);animation-timing-function:var(--ease-out)}::view-transition-old(root){animation:none}::view-transition-new(root){animation:vt-fade-in var(--duration-fast) var(--ease-out)}@keyframes vt-fade-in{0%{opacity:0}to{opacity:1}}::view-transition-group(bottom-nav){z-index:100}::view-transition-group(active-nav){z-index:1000;animation-timing-function:var(--ease-out);animation-duration:var(--duration-slow)}::view-transition-old(active-nav),::view-transition-new(active-nav){mix-blend-mode:normal;height:100%}::view-transition-group(work-item-transition){animation-duration:var(--vt-duration);animation-timing-function:var(--vt-timing);overflow:clip}::view-transition-old(work-item-transition),::view-transition-new(work-item-transition){object-fit:contain;width:100%;height:100%;animation:none}html:active-view-transition .animate{animation-play-state:paused!important;transform:none!important}@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}.animate{opacity:1!important;animation:none!important}:root.theme-transition::view-transition-old(root),:root.theme-transition::view-transition-new(root){animation:none!important}}html.js .animate{opacity:0;animation:animate-in .6s var(--ease-standard) forwards}.animate:first-child{animation-delay:0s}.animate:nth-child(2){animation-delay:.12s}.animate:nth-child(3){animation-delay:.24s}.animate:nth-child(4){animation-delay:.36s}.animate:nth-child(5){animation-delay:.48s}.animate:nth-child(6){animation-delay:.6s}@keyframes animate-in{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translate(0,0)}}@keyframes reveal-item{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes reveal-footer{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:root.theme-transition::view-transition-old(root){mix-blend-mode:normal;z-index:var(--z-theme-transition);animation:.8s ease-out forwards theme-fade-out;display:block}:root.theme-transition::view-transition-new(root){mix-blend-mode:normal;z-index:1;display:block}@keyframes theme-fade-out{0%{clip-path:circle(150% at 100% 100%);opacity:1}90%{clip-path:circle(10% at 100% 100%);opacity:1}to{clip-path:circle(0% at 100% 100%);opacity:0}}
