.prose{font-family:var(--font-body), Georgia, serif;color:var(--foreground);font-size:1.0625rem;line-height:1.9}.prose h1,.prose h2,.prose h3,.prose h4{font-family:var(--font-headline), serif;color:var(--foreground);letter-spacing:.02em;margin-top:1.15em;margin-bottom:.45em;font-weight:600}.prose h1:first-child,.prose h2:first-child,.prose h3:first-child{margin-top:0}.prose h1{letter-spacing:.01em;font-size:2.5rem;font-weight:700}.prose h2{font-size:1.875rem;font-weight:600}.prose h3{font-size:1.5rem;font-weight:600}.prose p{color:var(--foreground);margin-bottom:1em}.prose h2 a,.prose h3 a{color:var(--foreground);text-decoration:none}.prose .heading-anchor-icon{opacity:0;transition:opacity var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out);transform:translate(2px)}@media (hover:hover) and (pointer:fine){.prose h2 a:hover,.prose h3 a:hover{color:var(--accent);text-decoration:none}}@media (min-width:768px) and (hover:hover) and (pointer:fine){.prose h2 .heading-anchor:hover .heading-anchor-text,.prose h3 .heading-anchor:hover .heading-anchor-text{color:var(--accent)}.prose h2 .heading-anchor:hover .heading-anchor-icon,.prose h3 .heading-anchor:hover .heading-anchor-icon{opacity:1;transform:translate(0)}}.prose strong{color:var(--foreground);font-weight:700;font-family:var(--font-body), Georgia, serif}.prose ul{margin:1.25em 0;padding-left:1.5em;list-style-type:disc}.prose ol{margin:1.25em 0;padding-left:1.5em;list-style-type:decimal}.prose li{margin:.5em 0;padding-left:.25em;display:list-item}.prose li::marker{color:var(--accent)}.prose ul ul,.prose ol ol,.prose ul ol,.prose ol ul{margin:.5em 0}.prose blockquote{border-left:3px solid var(--accent);color:var(--muted);font-style:italic;font-family:var(--font-serif), serif;margin:2em 0;padding:.75em 0 .75em 1.5em;font-size:1.125rem;position:relative}.prose blockquote:before{content:"\"";font-family:var(--font-display), serif;color:var(--accent);opacity:.2;font-size:3rem;line-height:1;position:absolute;top:-.25em;left:.25em}.prose blockquote p{margin:0}.prose hr{background:linear-gradient(to right, transparent, var(--border), transparent);border:none;height:1px;margin:3em 0;position:relative}.prose hr:before{content:"❦";background:var(--background);color:var(--muted-foreground);padding:0 1em;font-size:.875rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.prose table{border-collapse:collapse;width:100%;margin:2em 0}.prose thead th{border-bottom:2px solid color-mix(in srgb, var(--foreground) 20%, transparent);text-align:left;text-transform:uppercase;letter-spacing:.1em;color:var(--muted-foreground);padding:.625rem 1rem;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.8125rem;font-weight:500}.prose tbody tr{border-bottom:1px solid color-mix(in srgb, var(--foreground) 8%, transparent)}.prose tbody tr:nth-child(2n){background:color-mix(in srgb, var(--card) 50%, transparent)}.prose tbody td{vertical-align:top;padding:.75rem 1rem}.prose img{border-radius:var(--radius-md);box-shadow:var(--shadow-md);border:1px solid var(--border);margin:2.5em 0}.prose .project-figure .project-figure-media{box-shadow:none;border:0;border-radius:0;margin:0;display:block}.prose code:not(pre code){font-family:var(--font-mono), monospace;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-xs);color:var(--accent);padding:.2em .4em;font-size:.875em}.prose pre{border-radius:var(--radius-md);scroll-behavior:smooth;margin:1.75em 0;overflow:auto hidden}@media (prefers-reduced-motion:reduce){.prose pre{scroll-behavior:auto}}.prose pre code{border:1px solid var(--code-border);border-radius:var(--radius-md);font-family:var(--font-mono), monospace;tab-size:2;white-space:pre;word-wrap:normal;padding:1.25rem 1.5rem;font-size:.875rem;line-height:1.7;display:block;overflow-x:auto;background:var(--code-bg)!important}.prose pre::-webkit-scrollbar{height:8px}.prose pre code::-webkit-scrollbar{height:8px}.prose pre::-webkit-scrollbar-track{background:var(--code-bg);border-radius:0 0 var(--radius-md) var(--radius-md)}.prose pre code::-webkit-scrollbar-track{background:var(--code-bg);border-radius:0 0 var(--radius-md) var(--radius-md)}.prose pre::-webkit-scrollbar-thumb{background:var(--muted-foreground);border-radius:var(--radius-xs)}.prose pre code::-webkit-scrollbar-thumb{background:var(--muted-foreground);border-radius:var(--radius-xs)}.prose pre::-webkit-scrollbar-thumb:hover{background:var(--accent)}.prose pre code::-webkit-scrollbar-thumb:hover{background:var(--accent)}.prose{counter-reset:sidenote}:root{--note-context:var(--accent);--note-technical:color-mix(in srgb, var(--accent) 55%, var(--foreground));--note-fun:#d97706}[data-theme=dark]{--note-fun:#fbbf24}.note-wrapper{counter-increment:sidenote;display:inline;position:relative}.note-highlight{color:inherit;font:inherit;text-align:inherit;text-underline-offset:3px;cursor:pointer;-webkit-box-decoration-break:clone;box-decoration-break:clone;transition:text-decoration-color var(--duration-fast) var(--ease-out), background-color var(--duration-fast) var(--ease-out);background:0 0;border:0;border-radius:2px;padding:0;text-decoration:underline;text-decoration-thickness:2px;display:inline}.note-highlight:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.note-highlight-context{-webkit-text-decoration-color:color-mix(in srgb, var(--note-context) 40%, transparent);text-decoration-color:color-mix(in srgb, var(--note-context) 40%, transparent)}.note-highlight-technical{-webkit-text-decoration-color:color-mix(in srgb, var(--note-technical) 40%, transparent);text-decoration-color:color-mix(in srgb, var(--note-technical) 40%, transparent)}.note-highlight-fun{-webkit-text-decoration-color:color-mix(in srgb, var(--note-fun) 40%, transparent);text-decoration-color:color-mix(in srgb, var(--note-fun) 40%, transparent)}@media (hover:hover) and (pointer:fine){.note-highlight-context:hover{-webkit-text-decoration-color:var(--note-context);text-decoration-color:var(--note-context)}.note-highlight-technical:hover{-webkit-text-decoration-color:var(--note-technical);text-decoration-color:var(--note-technical)}.note-highlight-fun:hover{-webkit-text-decoration-color:var(--note-fun);text-decoration-color:var(--note-fun)}}.note-highlight:active .note-highlight-context,.note-highlight-context:active{-webkit-text-decoration-color:var(--note-context);text-decoration-color:var(--note-context)}.note-highlight:active .note-highlight-technical,.note-highlight-technical:active{-webkit-text-decoration-color:var(--note-technical);text-decoration-color:var(--note-technical)}.note-highlight:active .note-highlight-fun,.note-highlight-fun:active{-webkit-text-decoration-color:var(--note-fun);text-decoration-color:var(--note-fun)}.note-indicator{display:none}.note-highlight:after{content:counter(sidenote);vertical-align:super;font-feature-settings:"tnum";margin-left:2px;font-size:.6875rem;font-weight:600;line-height:1;text-decoration:none;display:inline-block}.note-highlight-context:after{color:var(--note-context)}.note-highlight-technical:after{color:var(--note-technical)}.note-highlight-fun:after{color:var(--note-fun)}.note-aside{font-family:var(--font-body), Georgia, serif;color:var(--muted-foreground);font-size:.8125rem;line-height:1.5}.note-aside-label{align-items:baseline;gap:.25rem;margin-bottom:.25rem;display:flex}.note-aside-label-text{color:var(--foreground);text-overflow:ellipsis;white-space:nowrap;max-width:160px;font-weight:600;overflow:hidden}.note-aside-icon{display:none}.note-aside-label:before{content:counter(sidenote) ".";font-feature-settings:"tnum";opacity:.85;flex-shrink:0;font-size:.875rem;font-weight:700}.note-aside-context .note-aside-label:before{color:var(--note-context)}.note-aside-technical .note-aside-label:before{color:var(--note-technical)}.note-aside-fun .note-aside-label:before{color:var(--note-fun)}@media (max-width:1279px){.note-aside{display:none}.note-aside[data-expanded=true]{top:var(--popover-top,50%);left:var(--popover-left,12px);width:var(--popover-width,calc(100vw - 24px));z-index:50;animation:note-popover-in var(--duration-normal) var(--ease-out);display:block;position:fixed}.note-aside[data-expanded=true] .note-aside-inner{background:var(--background);border:none;border-left:1.5px solid var(--border);box-shadow:var(--shadow-md);color:var(--muted-foreground);border-radius:2px;max-height:50vh;padding:.5rem .75rem;font-size:.8125rem;line-height:1.5;display:block;overflow-y:auto}.note-aside-context[data-expanded=true] .note-aside-inner{border-left-color:color-mix(in srgb, var(--note-context) 60%, var(--border))}.note-aside-technical[data-expanded=true] .note-aside-inner{border-left-color:color-mix(in srgb, var(--note-technical) 60%, var(--border))}.note-aside-fun[data-expanded=true] .note-aside-inner{border-left-color:color-mix(in srgb, var(--note-fun) 60%, var(--border))}.note-aside[data-expanded=true] .note-aside-label{margin-bottom:.125rem;display:flex}.note-aside[data-expanded=true] .note-aside-icon{display:none}}@keyframes note-popover-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){@keyframes note-popover-in{0%{opacity:0}}}@media (min-width:1280px){.note-highlight{cursor:help}.note-wrapper{--note-left:-232px;position:relative}.note-aside{left:var(--note-left,-232px);text-align:left;opacity:0;visibility:hidden;pointer-events:none;width:200px;transition:opacity .12s var(--ease-out), transform .12s var(--ease-out), visibility 0s linear .12s;padding-right:.625rem;display:block;position:absolute;top:0;transform:translate(4px)}.note-aside[data-active=true]{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .18s var(--ease-out), transform .18s var(--ease-out), visibility 0s;transform:translate(0)}.note-indicator{display:none}.note-highlight-context[data-note-active=true]{-webkit-text-decoration-color:var(--note-context);text-decoration-color:var(--note-context)}.note-highlight-technical[data-note-active=true]{-webkit-text-decoration-color:var(--note-technical);text-decoration-color:var(--note-technical)}.note-highlight-fun[data-note-active=true]{-webkit-text-decoration-color:var(--note-fun);text-decoration-color:var(--note-fun)}.note-wrapper:focus-within .note-highlight-context[data-note-active=true]{background:color-mix(in srgb, var(--note-context) 20%, transparent)}.note-wrapper:focus-within .note-highlight-technical[data-note-active=true]{background:color-mix(in srgb, var(--note-technical) 20%, transparent)}.note-wrapper:focus-within .note-highlight-fun[data-note-active=true]{background:color-mix(in srgb, var(--note-fun) 20%, transparent)}.note-wrapper:focus-within .note-aside[data-active=true],.note-wrapper:focus-within .note-aside[data-active=true] .note-aside-label-text{color:var(--foreground)}}@media (min-width:1280px) and (hover:hover) and (pointer:fine){.note-wrapper:hover .note-highlight-context[data-note-active=true]{background:color-mix(in srgb, var(--note-context) 20%, transparent)}.note-wrapper:hover .note-highlight-technical[data-note-active=true]{background:color-mix(in srgb, var(--note-technical) 20%, transparent)}.note-wrapper:hover .note-highlight-fun[data-note-active=true]{background:color-mix(in srgb, var(--note-fun) 20%, transparent)}.note-wrapper:hover .note-aside[data-active=true],.note-wrapper:hover .note-aside[data-active=true] .note-aside-label-text{color:var(--foreground)}}@media (min-width:1536px){.note-aside{width:220px}.note-wrapper{--note-left:-256px}.note-aside-label-text{max-width:180px}}@media (min-width:1280px) and (prefers-reduced-motion:reduce){.note-aside,.note-aside[data-active=true]{transform:none}}.content-block{margin:1.75rem 0 2rem}.content-block-caption{text-align:center;font-family:var(--font-body), Georgia, serif;color:var(--muted-foreground);margin-top:.75rem;font-size:.8125rem;font-style:italic;line-height:1.5}@media (max-width:640px){.prose{font-size:1rem}.prose h1{font-size:1.75rem}.prose h2{font-size:1.375rem}.prose h3{font-size:1.125rem}.prose pre{-webkit-overflow-scrolling:touch;border-radius:0;margin-left:-1rem;margin-right:-1rem;overflow-x:auto}.prose pre code{white-space:pre;word-wrap:normal;border-left:none;border-right:none;border-radius:0}}
