@property --glow-angle{syntax: "<angle>"; initial-value: 0deg; inherits: false;}.page-glow[data-astro-cid-qtisqav5]{--glow-strength: .16;--glow-blur: 100px;--glow-spread: -34px;--glow-spin: 14s;position:fixed;inset:0;z-index:60;pointer-events:none;box-shadow:inset 0 0 var(--glow-blur) var(--glow-spread) rgb(180 71 31 / calc(var(--glow-strength) * 1.5))}[data-theme=dark] .page-glow[data-astro-cid-qtisqav5]{--glow-strength: .32;--glow-blur: 110px;--glow-spread: -32px;box-shadow:inset 0 0 var(--glow-blur) var(--glow-spread) rgb(217 122 74 / calc(var(--glow-strength) * 1.2))}.page-glow[data-astro-cid-qtisqav5]:before{content:"";position:absolute;inset:0;padding:1.5px;background:conic-gradient(from var(--glow-angle),transparent 0%,rgb(180 71 31 / var(--glow-strength)) 12%,transparent 30%,transparent 58%,rgb(180 71 31 / calc(var(--glow-strength) * .7)) 74%,transparent 92%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;animation:glow-spin var(--glow-spin) linear infinite}[data-theme=dark] .page-glow[data-astro-cid-qtisqav5]:before{background:conic-gradient(from var(--glow-angle),transparent 0%,rgb(217 122 74 / var(--glow-strength)) 12%,transparent 30%,transparent 58%,rgb(217 122 74 / calc(var(--glow-strength) * .7)) 74%,transparent 92%)}@keyframes glow-spin{to{--glow-angle: 360deg}}@media(prefers-reduced-motion:reduce){.page-glow[data-astro-cid-qtisqav5]:before{animation:none}}@media(max-width:640px){.page-glow[data-astro-cid-qtisqav5]{--glow-strength: .08;--glow-blur: 46px;--glow-spread: -22px}[data-theme=dark] .page-glow[data-astro-cid-qtisqav5]{--glow-strength: .17;--glow-blur: 52px;--glow-spread: -22px}.page-glow[data-astro-cid-qtisqav5]:before{display:none}}:root{--font-body: "Source Serif 4", "Source Serif Pro", Georgia, "Times New Roman", serif;--font-heading: "Source Serif 4", "Source Serif Pro", Georgia, serif;--font-display: "Geist", "Inter", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--bg-primary: #fdfaf3;--bg-secondary: #f7f4ee;--bg-sunken: #efeae0;--text-primary: #1a1a1a;--text-secondary: #3a342e;--text-muted: #6b6157;--border: #bcb1a0;--border-strong: #a99d87;--accent: #b4471f;--accent-hover: #8f3514;--accent-soft: rgba(180, 71, 31, .1);--accent-soft-border: rgba(180, 71, 31, .25);--max-width: 880px;--measure: 66ch;--rail-width: 9.5rem;--rail-gap: 1.75rem;--spacing-2xs: .25rem;--spacing-xs: .5rem;--spacing-sm: .75rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--spacing-3xl: 4rem;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 10px;--transition: .18s ease}[data-theme=dark]{--bg-primary: #14110d;--bg-secondary: #1c1814;--bg-sunken: #0e0c09;--text-primary: #ede7d9;--text-secondary: #c9c0ac;--text-muted: #a39a8d;--border: #4d443a;--border-strong: #665b4d;--accent: #d97a4a;--accent-hover: #ea9168;--accent-soft: rgba(217, 122, 74, .14);--accent-soft-border: rgba(217, 122, 74, .3)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);font-size:1.125rem;color:var(--text-secondary);background:var(--bg-primary);line-height:1.65;min-height:100vh;transition:background var(--transition),color var(--transition)}::selection{background:var(--accent-soft);color:var(--text-primary)}h1,h2,h3,h4{text-wrap:balance;font-family:var(--font-heading);font-variation-settings:"opsz" 60;font-weight:600;line-height:1.15;color:var(--text-primary);letter-spacing:-.01em}h1{font-size:2.6rem;margin-bottom:var(--spacing-lg);letter-spacing:-.02em}h2{font-size:1.75rem;margin-bottom:var(--spacing-md);letter-spacing:-.015em}h3{font-size:1.3rem;margin-bottom:var(--spacing-xs)}p{margin-bottom:var(--spacing-md);color:var(--text-secondary)}a{color:var(--accent);text-decoration:none;transition:color var(--transition)}a:hover{color:var(--accent-hover)}a:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius-sm)}.skip-link{position:absolute;top:-100px;left:var(--spacing-md);z-index:100;background:var(--accent);color:var(--bg-primary);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);font-family:var(--font-display);font-weight:500;font-size:.9rem;text-decoration:none;transition:top var(--transition)}.skip-link:focus{top:var(--spacing-md);color:var(--bg-primary)}.container{max-width:var(--max-width);margin:0 auto;padding:var(--spacing-xl) var(--spacing-lg);position:relative;z-index:1}@media(min-width:640px){.container{padding:var(--spacing-3xl) var(--spacing-xl)}}nav{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg) 0;margin-bottom:var(--spacing-3xl);flex-wrap:wrap;gap:var(--spacing-md)}nav .logo{font-family:var(--font-display);font-weight:600;font-size:1rem;color:var(--text-primary);text-decoration:none;letter-spacing:-.01em;transition:color var(--transition)}nav .logo:hover{color:var(--accent)}nav .links{display:flex;gap:var(--spacing-lg);align-items:center;flex-wrap:wrap;margin-left:auto}@media(max-width:480px){nav .links{gap:var(--spacing-md)}}nav .links a{font-family:var(--font-display);font-weight:500;font-size:.95rem;color:var(--text-secondary);text-decoration:none;transition:color var(--transition)}nav .links a:hover{color:var(--text-primary);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:6px;text-decoration-thickness:1px}nav .links a[aria-current=page]{color:var(--text-primary);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:6px;text-decoration-thickness:1.5px}.theme-toggle{background:none;border:none;cursor:pointer;padding:var(--spacing-xs);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:color var(--transition),background var(--transition)}.theme-toggle:hover{color:var(--text-primary);background:var(--bg-secondary)}.theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.section-label{display:flex;align-items:center;font-family:var(--font-mono);font-size:.9rem;font-weight:500;letter-spacing:.01em;line-height:1;color:var(--text-secondary);margin:0 0 var(--spacing-lg)}.section-label:after{content:"";flex:1 1 auto;height:1px;margin-left:var(--spacing-md);background:var(--border)}.section-label.no-rule{display:inline-flex}.section-label.no-rule:after{content:none}.section-label .prompt{color:var(--accent);font-weight:500;margin-right:.7ch}.section-heading{margin-bottom:var(--spacing-2xl)}.section-heading .section-label{margin-bottom:var(--spacing-md)}.section-heading h1,.section-heading h2{margin-bottom:var(--spacing-sm);max-width:26ch}.section-heading .description{text-wrap:balance;font-family:var(--font-body);font-size:1.02rem;color:var(--text-muted);margin-bottom:0;max-width:78ch}h2.section-label{text-wrap:auto;font-variation-settings:normal;font-family:var(--font-mono);font-size:.9rem;font-weight:500;letter-spacing:.01em;color:var(--text-secondary)}.index-list{display:flex;flex-direction:column}.row{display:grid;grid-template-columns:var(--rail-width) 1fr;gap:var(--rail-gap);padding:var(--spacing-lg) 0;border-top:1px solid var(--border)}.index-list>.row:first-child{border-top:none;padding-top:0}.row-rail{display:flex;flex-direction:column;gap:.15rem;padding-top:.35rem}.row-venue{font-family:var(--font-mono);font-size:.78rem;color:var(--text-primary);font-variant-numeric:tabular-nums}.row-status,.row-period{font-family:var(--font-display);font-size:.75rem;color:var(--text-muted)}.row-body{min-width:0}.row-title{text-wrap:pretty;font-family:var(--font-heading);font-variation-settings:"opsz" 60;font-weight:600;font-size:1.15rem;line-height:1.3;color:var(--text-primary);margin-bottom:var(--spacing-2xs)}.row-summary{text-wrap:pretty;font-size:1rem;line-height:1.55;color:var(--text-secondary);margin-bottom:var(--spacing-sm)}.row-highlights{list-style:disc;padding-left:1.15rem;margin:0 0 var(--spacing-sm);display:flex;flex-direction:column;gap:var(--spacing-xs)}.row-highlights li{text-wrap:pretty;font-size:.95rem;line-height:1.55;color:var(--text-secondary)}.row-highlights li::marker{color:var(--text-muted)}.row-stack{list-style:none;display:flex;flex-wrap:wrap;gap:var(--spacing-xs);margin:0 0 var(--spacing-sm)}@media(max-width:640px){.row{grid-template-columns:1fr;gap:var(--spacing-xs)}.row-rail{flex-direction:row;align-items:baseline;flex-wrap:wrap;gap:var(--spacing-sm);padding-top:0}}.fig{margin:var(--spacing-xs) 0 var(--spacing-md)}.fig-frame{aspect-ratio:16 / 9}.fig-frame:not(.has-dark){background:#fdfaf3;border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--spacing-md);overflow:hidden}.fig-frame img{display:block;width:100%;height:100%;object-fit:contain}.fig-caption{text-wrap:pretty;font-family:var(--font-body);font-size:.85rem;font-style:italic;line-height:1.5;color:var(--text-muted);margin-top:var(--spacing-xs)}.artifact{margin:var(--spacing-xs) 0 var(--spacing-md)}.artifact-frame{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-sunken);aspect-ratio:16 / 9;overflow:hidden}.artifact-frame img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}.artifact-note{text-wrap:pretty;font-family:var(--font-display);font-size:.82rem;color:var(--text-muted);margin-top:var(--spacing-sm)}.has-dark .fig-dark{display:none}.has-dark .fig-light{display:block}[data-theme=dark] .has-dark .fig-light{display:none}[data-theme=dark] .has-dark .fig-dark{display:block}.project-links{display:flex;gap:var(--spacing-lg);font-size:.9rem;font-weight:500;flex-wrap:wrap;font-family:var(--font-display)}.project-links a{color:var(--accent);display:inline-flex;align-items:center;gap:.4rem;text-decoration:none}.project-links a:hover{color:var(--accent-hover)}.project-links a:hover span{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}.link-arrow{flex-shrink:0;transform:translateY(.5px)}.source-note{text-wrap:pretty;font-size:.85rem;font-style:italic;color:var(--text-muted);margin:var(--spacing-sm) 0 0}.section-more{margin-top:var(--spacing-lg);font-family:var(--font-display);font-size:.92rem;font-weight:500}.tag{display:inline-block;font-family:var(--font-display);font-size:.75rem;font-weight:500;padding:var(--spacing-2xs) var(--spacing-xs);background:var(--bg-sunken);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted)}.post-list{list-style:none;display:flex;flex-direction:column}.post-item{display:grid;grid-template-columns:var(--rail-width) 1fr;gap:var(--rail-gap);padding:var(--spacing-lg) 0;border-top:1px solid var(--border)}.post-list>.post-item:first-child{border-top:none;padding-top:0}.post-item .post-meta{display:flex;flex-direction:column;gap:.15rem;font-family:var(--font-mono);font-size:.78rem;color:var(--text-muted);font-variant-numeric:tabular-nums;padding-top:.3rem;margin-bottom:0}.post-body{min-width:0}.post-item .post-meta-venue{font-family:var(--font-display);font-size:.75rem}.post-item .post-title{font-family:var(--font-heading);font-variation-settings:"opsz" 60;font-weight:600;font-size:1.15rem;color:var(--text-primary);text-decoration:none;line-height:1.3;display:block}.post-item .post-title:hover{color:var(--accent)}.post-item .post-excerpt{text-wrap:pretty;font-size:.95rem;color:var(--text-secondary);margin:var(--spacing-2xs) 0 0;line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}@media(max-width:640px){.post-item{grid-template-columns:1fr;gap:var(--spacing-2xs)}.post-item .post-meta{padding-top:0}}.profile{margin-bottom:var(--spacing-3xl);max-width:46rem}.profile h1{font-size:2.5rem;margin-bottom:var(--spacing-xs);letter-spacing:-.025em}.profile .subtitle{text-wrap:balance;font-family:var(--font-body);font-style:italic;color:var(--text-secondary);font-size:1.15rem;margin-bottom:var(--spacing-2xs)}.profile .status{display:flex;flex-direction:column;gap:var(--spacing-md);margin:0 0 var(--spacing-lg) 0}.profile .status-row{display:flex;flex-direction:column;gap:var(--spacing-2xs)}.profile .status dt{font-family:var(--font-display);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.profile .status dd{margin:0;font-size:.98rem;color:var(--text-secondary);line-height:1.5}.profile .credentials{text-wrap:balance;font-family:var(--font-body);font-style:italic;font-size:.92rem;color:var(--text-muted);margin-top:0;margin-bottom:var(--spacing-lg)}.profile .closing-line{font-family:var(--font-body);font-size:1.02rem;color:var(--text-secondary);font-style:italic;line-height:1.55;margin-top:var(--spacing-lg);margin-bottom:var(--spacing-xl);text-wrap:balance}.profile .links{display:flex;gap:var(--spacing-lg);flex-wrap:wrap}.profile .links a{font-family:var(--font-display);font-weight:500;font-size:.95rem;color:var(--text-secondary)}.profile .links a:hover{color:var(--text-primary);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:4px;text-decoration-thickness:1px}.ed-grid{display:grid;grid-template-columns:var(--rail-width) 1fr;column-gap:var(--rail-gap);row-gap:var(--spacing-sm);margin:0}.ed-grid dt{font-family:var(--font-mono);font-size:.78rem;color:var(--text-muted);padding-top:.25rem}.ed-grid dd{margin:0;font-size:1rem;line-height:1.5;color:var(--text-secondary)}@media(max-width:640px){.ed-grid{grid-template-columns:1fr;row-gap:var(--spacing-2xs)}.ed-grid dt{padding-top:var(--spacing-sm)}.ed-grid dt:first-of-type{padding-top:0}}section{margin-bottom:var(--spacing-3xl)}footer{margin-top:var(--spacing-3xl);padding-top:var(--spacing-xl);border-top:1px solid var(--border);color:var(--text-muted);font-size:.85rem;text-align:center;font-family:var(--font-display)}footer a{color:var(--text-muted)}footer a:hover{color:var(--text-secondary)}footer .footer-meta{margin-top:var(--spacing-2xs);font-size:.78rem;color:var(--text-muted);opacity:.75}footer .footer-meta time{font-variant-numeric:tabular-nums}.post-byline{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--spacing-sm);font-family:var(--font-mono);font-size:.8rem;color:var(--text-muted);font-variant-numeric:tabular-nums;margin-bottom:0}.post-byline .post-venue{padding-left:var(--spacing-sm);border-left:1px solid var(--border);color:var(--text-secondary)}.prose{line-height:1.7;font-size:1.125rem;max-width:var(--measure)}.prose>*{color:var(--text-secondary)}.prose h2{font-size:1.6rem;margin-top:var(--spacing-3xl);margin-bottom:var(--spacing-md)}.prose h3{margin-top:var(--spacing-2xl);margin-bottom:var(--spacing-sm)}.prose p{text-wrap:pretty;margin-bottom:var(--spacing-lg)}.prose pre{background:var(--bg-sunken);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--spacing-lg);overflow-x:auto;font-family:var(--font-mono);font-size:.88rem;margin:var(--spacing-xl) 0;line-height:1.6}.prose code{font-family:var(--font-mono);font-size:.88em;background:var(--bg-sunken);padding:.15em .4em;border-radius:var(--radius-sm);border:1px solid var(--border)}.prose pre code{background:none;padding:0;border:none}.prose pre.astro-code,.prose pre.astro-code span{background-color:var(--shiki-light-bg)!important;color:var(--shiki-light)!important}[data-theme=dark] .prose pre.astro-code,[data-theme=dark] .prose pre.astro-code span{background-color:var(--shiki-dark-bg)!important;color:var(--shiki-dark)!important}.prose ul,.prose ol{margin:var(--spacing-lg) 0;padding-left:var(--spacing-xl)}.prose li{text-wrap:pretty;margin-bottom:var(--spacing-xs)}.prose li::marker{color:var(--text-muted)}.prose blockquote{border-left:2px solid var(--accent);padding-left:var(--spacing-lg);color:var(--text-secondary);font-style:italic;margin:var(--spacing-xl) 0}.prose a{text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}.prose img{max-width:100%;height:auto;border-radius:var(--radius-md);margin:var(--spacing-xl) 0}.prose hr{border:none;border-top:1px solid var(--border);margin:var(--spacing-3xl) 0}.prose table{width:100%;border-collapse:collapse;margin:var(--spacing-xl) 0;font-size:.95rem}.prose th,.prose td{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--border);text-align:left}.prose th{background:var(--bg-sunken);font-family:var(--font-display);font-weight:600}.text-muted{color:var(--text-muted)}@media(max-width:640px){h1{font-size:2rem}h2{font-size:1.5rem}.profile h1{font-size:2rem}nav{margin-bottom:var(--spacing-2xl)}}
