@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/jetbrains-mono-latin-600-normal-C8RAYTDA.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-600-normal-BfsvjouI.woff)format("woff")}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/caveat-latin-500-normal-B9SDL8cy.woff2)format("woff2"),url(/assets/caveat-latin-500-normal-Do9veZfZ.woff)format("woff")}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/caveat-latin-600-normal-zlTlWIYU.woff2)format("woff2"),url(/assets/caveat-latin-600-normal-DUjB8dgm.woff)format("woff")}:root{--bg:#f5f4ed;--surface:#faf9f5;--surface-warm:#e8e6dc;--fg:#141413;--fg-2:#3d3d3a;--muted:#504e49;--meta:#5e5d57;--border:#e8e6dc;--border-soft:#e5e3d8;--accent:#1b365d;--accent-on:#faf9f5;--accent-light:#2d5a8a;--accent-hover:var(--accent);--accent-active:#142a48;--success:#4a6b3a;--warn:#8a6b1f;--danger:#8a3a30;--font-display:Charter, Georgia, Palatino, "Times New Roman", serif;--font-body:Charter, Georgia, Palatino, "Times New Roman", serif;--font-mono:"JetBrains Mono", "SF Mono", "Fira Code", Consolas, Monaco, "TsangerJinKai02", "Source Han Serif SC", monospace;--font-hand:"Caveat", "Segoe Script", "Bradley Hand", cursive;--text-xs:.75rem;--text-sm:.8125rem;--text-base:1rem;--text-md:1.0625rem;--text-lg:1.1875rem;--text-xl:1.375rem;--text-2xl:2rem;--text-3xl:3rem;--text-4xl:6rem;--leading-display:1.1;--leading-tight:1.25;--leading-body:1.55;--leading-dense:1.4;--tracking-display:-1.2px;--tracking-eyebrow:1.2px;--tracking-label:.4px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:28px;--space-8:32px;--space-12:48px;--space-18:72px;--space-22:88px;--section-y-desktop:72px;--section-y-tablet:48px;--section-y-phone:32px;--radius-xs:2px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-pill:9999px;--elev-flat:none;--elev-ring:0 0 0 1px var(--border);--elev-ring-accent:0 0 0 1px var(--accent);--elev-raised:0 4px 24px #0000000d;--focus-ring:0 0 0 2px var(--accent-active);--motion-fast:.15s;--motion-base:.2s;--ease-standard:cubic-bezier(.2, 0, 0, 1);--container-max:1120px;--container-gutter-desktop:64px;--container-gutter-tablet:32px;--container-gutter-phone:16px;--reading:680px;--tag-bg-faint:#eef2f7;--tag-bg-soft:#e4ecf5;--tag-bg-base:#d6e1ee;--tag-bg-strong:#d0dce9}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;overflow-x:clip}body{background:var(--bg);color:var(--fg-2);font-family:var(--font-body);font-size:var(--text-md);line-height:var(--leading-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-print-color-adjust:exact;margin:0}img,svg{max-width:100%;display:block}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}p{text-wrap:pretty;margin:0}h1,h2,h3{text-wrap:balance;margin:0;font-weight:500}strong{font-weight:500}:focus-visible{box-shadow:var(--focus-ring);border-radius:var(--radius-xs);outline:none}::selection{background:var(--accent);color:var(--accent-on)}.container{max-width:var(--container-max);padding-inline:var(--container-gutter-desktop);margin-inline:auto}.reading{max-width:var(--reading);padding-inline:var(--container-gutter-desktop);margin-inline:auto}.section{padding-block:clamp(var(--section-y-phone), 7vw, var(--section-y-desktop))}.section+.section{border-top:1px solid var(--border)}@media (width<=980px){.container,.reading{padding-inline:var(--container-gutter-tablet)}}@media (width<=640px){.container,.reading{padding-inline:var(--container-gutter-phone)}}.display{font-family:var(--font-display);font-weight:500;line-height:var(--leading-display);letter-spacing:var(--tracking-display);color:var(--fg)}h1.display{font-size:clamp(2.375rem,5.6vw,4.5rem)}.serif-title{font-family:var(--font-display);color:var(--fg);letter-spacing:0;font-weight:500;line-height:var(--leading-tight)}.eyebrow{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--meta);margin:0 0 var(--space-5);font-weight:500}.eyebrow .ink{color:var(--accent)}.meta{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:var(--tracking-label);color:var(--meta)}.num{font-variant-numeric:tabular-nums}.dek{font-family:var(--font-display);font-weight:500;font-size:var(--text-lg);line-height:var(--leading-body);color:var(--muted);max-width:60ch}.hand{font-family:var(--font-hand);color:var(--accent);line-height:1.1}.margin-note{font-family:var(--font-hand);color:var(--accent);opacity:0;transition:opacity .6s var(--ease-standard);font-size:1.3125rem;line-height:1.15;display:inline-block;transform:rotate(-2.5deg)}.margin-note.in{opacity:1}.margin-note:before{content:"↗";opacity:.7;margin-right:4px;font-size:.8em}.section-head{margin-bottom:var(--space-12)}.section-num{font-family:var(--font-display);font-weight:500;font-size:var(--text-base);letter-spacing:var(--tracking-label);color:var(--accent);margin:0 0 var(--space-2)}.section-title{font-family:var(--font-display);font-weight:500;font-size:var(--text-2xl);line-height:var(--leading-tight);color:var(--fg)}.section-lede{font-family:var(--font-display);font-weight:500;font-size:var(--text-md);color:var(--muted);margin-top:var(--space-3);max-width:56ch}.topnav{z-index:30;background:color-mix(in oklab, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);position:sticky;top:0}.topnav-inner{padding-block:var(--space-4);justify-content:space-between;align-items:center;gap:var(--space-5);display:flex}.topnav .logo{font-family:var(--font-display);font-weight:500;font-size:var(--text-xl);color:var(--fg);align-items:center;gap:10px;display:inline-flex}.logo-mark{background:var(--accent);width:9px;height:9px;display:inline-block;transform:rotate(45deg)}.topnav nav{gap:var(--space-7);display:flex}.topnav nav a{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--fg-2);transition:color var(--motion-fast) var(--ease-standard);font-weight:500;position:relative}.topnav nav a:hover,.topnav nav a[aria-current]{color:var(--accent)}.nav-toggle{border:1px solid var(--border);border-radius:var(--radius-md);width:40px;height:40px;color:var(--fg);background:0 0;justify-content:center;align-items:center;display:none}.nav-toggle svg{width:20px;height:20px}@media (width<=760px){.topnav nav{display:none}.topnav nav.open{background:var(--bg);border-bottom:1px solid var(--border);padding:var(--space-1) var(--container-gutter-phone) var(--space-4);flex-direction:column;gap:0;display:flex;position:absolute;top:100%;left:0;right:0}.topnav nav.open a{border-top:1px solid var(--border-soft);font-size:var(--text-base);padding:13px 0}.nav-toggle{display:inline-flex}}@media (width<=640px){.topnav nav{gap:var(--space-4)}}.btn{font-family:var(--font-mono);font-weight:500;font-size:var(--text-sm);letter-spacing:var(--tracking-label);text-transform:uppercase;border-radius:var(--radius-md);background:var(--surface-warm);color:var(--fg-2);box-shadow:var(--elev-ring);transition:box-shadow var(--motion-base) var(--ease-standard);align-items:center;gap:9px;padding:11px 18px;display:inline-flex}.btn:hover{box-shadow:var(--elev-raised)}.btn-primary{background:var(--accent);color:var(--accent-on);box-shadow:var(--elev-ring-accent)}.btn-primary:hover{background:var(--accent-active);box-shadow:var(--elev-raised)}.btn-arrow:after{content:"→";transition:transform var(--motion-fast) var(--ease-standard)}.btn-arrow:hover:after{transform:translate(3px)}.btn-back:before{content:"←";margin-right:2px}.morelink{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent);border-bottom:1px solid var(--accent);transition:color var(--motion-fast);padding-bottom:2px;font-weight:500}.morelink:hover{color:var(--accent-active)}.masthead{padding-block:clamp(40px,5vw,72px) clamp(28px,4vw,52px)}.intro-grid{grid-template-columns:1.45fr .9fr;align-items:center;gap:clamp(28px,5vw,64px);display:grid}@media (width<=760px){.intro-grid{grid-template-columns:1fr}.portrait-wrap{max-width:320px}}.greeting{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--accent);margin:0 0 var(--space-5);font-weight:500}.masthead h1{margin-bottom:var(--space-6)}.masthead .dek{margin-bottom:var(--space-5)}.masthead .row{gap:var(--space-4);flex-wrap:wrap;align-items:center;display:flex}.portrait-wrap{position:relative}.portrait{aspect-ratio:4/5;border-radius:var(--radius-lg);width:100%;box-shadow:var(--elev-ring);overflow:hidden}.portrait img{object-fit:cover;width:100%;height:100%;display:block}.portrait-cap{position:absolute;bottom:-14px;right:8px}.time-note{font-family:var(--font-hand);color:var(--accent);margin:0 0 var(--space-6);opacity:0;transform-origin:0;min-height:1.55em;transition:opacity .65s var(--ease-standard) .35s, transform .65s var(--ease-standard) .35s;font-size:1.3125rem;line-height:1.55;transform:translateY(4px)rotate(-1.4deg)}.time-note.show{opacity:1;transform:translateY(0)rotate(-1.4deg)}.time-note:not(:empty):before{content:"“"}.time-note:not(:empty):after{content:"”"}@media (width<=640px){.greeting span{white-space:nowrap;display:block}.time-note{min-height:3.1em}}.sign-off{margin-top:var(--space-8);align-items:baseline;gap:var(--space-4);flex-wrap:wrap;display:flex}.sign-off .said{font-family:var(--font-display);font-style:normal;font-size:var(--text-base);color:var(--meta)}.signature{font-family:var(--font-hand);color:var(--accent);font-size:3rem;font-weight:600;line-height:.9;display:inline-block;position:relative}.signature .ink{clip-path:inset(0 100% 0 0);display:inline-block}.signature.in .ink{animation:sig-write 1.05s var(--ease-standard) forwards, sig-dry 1.5s var(--ease-standard) forwards}@keyframes sig-write{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 -9% 0 0)}}@keyframes sig-dry{0%{filter:blur(.6px);text-shadow:0 1px 5px color-mix(in oklab, var(--accent) 45%, transparent)}to{filter:none;text-shadow:none}}.signature .blot{background:radial-gradient(circle, var(--accent-active) 0%, color-mix(in oklab, var(--accent) 50%, transparent) 45%, transparent 72%);opacity:0;pointer-events:none;border-radius:50%;width:9px;height:9px;position:absolute;bottom:10px;right:-8px;transform:scale(.3)}.signature.in .blot{animation:sig-blot 1.5s var(--ease-standard) .82s forwards}@keyframes sig-blot{0%{opacity:.7;transform:scale(.4)}35%{opacity:.55;transform:scale(1.5)}to{opacity:0;transform:scale(2.3)}}.topnav nav a:after,.social-row a:after{content:"";background:var(--accent);transform-origin:0;height:2px;transition:transform var(--motion-base) var(--ease-standard);border-radius:2px;position:absolute;bottom:-3px;left:0;right:0;transform:scaleX(0)}.topnav nav a:hover:after,.topnav nav a[aria-current]:after,.social-row a:hover:after{transform:scaleX(1)}.annotate{white-space:nowrap;color:var(--fg);font-weight:500;position:relative}.annotate svg{width:calc(100% + 6px);height:11px;position:absolute;bottom:-8px;left:-3px;right:-3px;overflow:visible}.annotate path{fill:none;stroke:var(--accent);stroke-width:2.2px;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1px;transition:stroke-dashoffset .76s var(--ease-standard)}.annotate.drawn path{stroke-dashoffset:0}.peel{position:relative}.peel:after{content:"";background:linear-gradient(225deg, var(--surface-warm), var(--surface) 62%);border-bottom-left-radius:5px;border-top-right-radius:inherit;width:0;height:0;transition:width var(--motion-base) var(--ease-standard), height var(--motion-base) var(--ease-standard);pointer-events:none;position:absolute;top:0;right:0;box-shadow:-3px 3px 6px #0000001a}.peel:hover:after{width:26px;height:26px}.lead-grid{gap:var(--space-12);grid-template-columns:1.5fr 1fr;align-items:start;display:grid}.feature .ph-img{aspect-ratio:16/9;margin-bottom:var(--space-5);border-radius:var(--radius-lg)}.feature .kicker{margin:0 0 10px}.feature .serif-title{font-size:clamp(1.5rem, 3vw, var(--text-2xl));margin:0 0 12px}.feature .blurb{color:var(--fg-2);font-size:var(--text-md);line-height:var(--leading-body);max-width:56ch}.feature .read{margin-top:var(--space-5);display:inline-block}.side-list{border-top:1px solid var(--accent)}.side-item{border-bottom:1px solid var(--border);padding:18px 0;display:block}.side-item .serif-title{font-size:var(--text-lg);transition:color var(--motion-fast) var(--ease-standard);margin:6px 0 0}.side-item:hover .serif-title{color:var(--accent)}.kicker{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--meta);font-weight:500}.kicker .ink{color:var(--accent)}@media (width<=860px){.lead-grid{gap:var(--space-8);grid-template-columns:1fr}}.log{border-top:1px solid var(--accent)}.log-row{gap:var(--space-6);border-bottom:1px solid var(--border);transition:padding-inline var(--motion-base) var(--ease-standard), background var(--motion-base) var(--ease-standard);grid-template-columns:130px 1fr auto;align-items:baseline;padding:20px 0;display:grid;position:relative;overflow:hidden}.log-row .serif-title{font-size:var(--text-lg);transition:color var(--motion-fast) var(--ease-standard)}.log-row .blurb{color:var(--muted);font-size:var(--text-base);line-height:var(--leading-dense);margin-top:6px}a.log-row:hover .serif-title{color:var(--accent)}a.log-row:hover{background:var(--surface);padding-inline:12px}.log-row.hide{display:none}.log-row .serif-title a:hover{color:var(--accent)}.pub-authors{font-size:var(--text-base);line-height:var(--leading-dense);color:var(--fg-2);margin-top:6px}.pub-authors strong{color:var(--fg);font-weight:600}.pub-venue,.talk-event{font-size:var(--text-base);line-height:var(--leading-dense);color:var(--muted);margin-top:2px;font-style:italic}.pub-links{gap:var(--space-3) var(--space-5);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.dek a{color:var(--accent);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.tag{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent);background:var(--tag-bg-soft);border-radius:var(--radius-sm);white-space:nowrap;padding:3px 8px;font-weight:500}.log-row .lead-label{font-family:var(--font-display);font-weight:500;font-size:var(--text-base);color:var(--fg-2)}@media (width<=700px){.log-row{grid-template-columns:1fr;gap:8px}.log-row .end{justify-self:start}a.log-row:hover{padding-inline:0}}.filter-row{gap:var(--space-2);margin-top:var(--space-6);flex-wrap:wrap;display:flex}.chip{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:var(--tracking-label);text-transform:uppercase;border-radius:var(--radius-md);box-shadow:var(--elev-ring);background:var(--surface);color:var(--fg-2);transition:box-shadow var(--motion-fast), background var(--motion-fast), color var(--motion-fast);padding:8px 14px;font-weight:500}.chip:hover{color:var(--accent)}.chip[aria-pressed=true]{background:var(--accent);color:var(--accent-on);box-shadow:var(--elev-ring-accent)}.filter-note{font-family:var(--font-hand);color:var(--accent);margin-top:var(--space-4);opacity:0;transform-origin:0;min-height:26px;transition:opacity .32s var(--ease-standard), transform .32s var(--ease-standard);font-size:1.25rem;transform:translateY(3px)rotate(-1.2deg)}.filter-note.show{opacity:1;transform:translateY(0)rotate(-1.2deg)}.year-label{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:var(--tracking-eyebrow);color:var(--meta);margin:var(--space-12) 0 0;padding-bottom:var(--space-2);font-weight:600}.empty{color:var(--muted);font-family:var(--font-mono);font-size:var(--text-base);padding:var(--space-8) 0;display:none}.empty.show{display:block}.grid-3{gap:var(--space-6);grid-template-columns:repeat(3,1fr);display:grid}.tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-7);transition:box-shadow var(--motion-base) var(--ease-standard);display:block}.tile:hover{box-shadow:var(--elev-raised)}.tile .ph-img{aspect-ratio:4/3;margin-bottom:var(--space-4);border-radius:var(--radius-sm)}.tile .serif-title{font-size:var(--text-lg);transition:color var(--motion-fast) var(--ease-standard);margin:12px 0 8px}.tile:hover .serif-title{color:var(--accent)}.tile .blurb{color:var(--muted);font-size:var(--text-base);line-height:var(--leading-dense)}.tile .stack-meta{margin-top:var(--space-5);flex-wrap:wrap;gap:8px;display:flex}@media (width<=860px){.grid-3{gap:var(--space-5);grid-template-columns:1fr}}.ph-img{background:var(--surface);width:100%;box-shadow:var(--elev-ring);color:var(--meta);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;text-align:center;place-items:center;padding:16px;display:grid}.ph-img:has(img){padding:0;overflow:hidden}.ph-img img{object-fit:cover;border-radius:inherit;width:100%;height:100%}.about-grid{gap:var(--space-12);grid-template-columns:1.6fr 1fr;align-items:start;display:grid}.about-grid .body p{margin-bottom:var(--space-4);color:var(--fg-2)}.about-grid h2{font-size:clamp(1.375rem, 3vw, var(--text-xl));margin-bottom:var(--space-5);line-height:var(--leading-tight)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-7)}.panel .eyebrow{margin-bottom:var(--space-5)}.fact{justify-content:space-between;gap:var(--space-4);border-top:1px solid var(--border-soft);padding:10px 0;display:flex}.fact:first-of-type{border-top:none}.fact .k{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--meta)}.fact .v{font-family:var(--font-display);font-weight:500;font-size:var(--text-base);color:var(--fg);text-align:right}.panel-note{margin-top:var(--space-5);padding-top:var(--space-5);border-top:1px solid var(--border-soft);font-family:var(--font-hand);color:var(--accent);opacity:0;transition:opacity .6s var(--ease-standard);font-size:1.1875rem;line-height:1.25}.panel-note.in{opacity:1}@media (width<=860px){.about-grid{gap:var(--space-8);grid-template-columns:1fr}}.contact-grid{gap:var(--space-12);grid-template-columns:1fr 1fr;align-items:start;display:grid}.contact-grid h2{font-size:clamp(1.375rem, 3vw, var(--text-xl));margin-bottom:var(--space-4);line-height:var(--leading-tight)}.copy-wrap{position:relative}.copy-row{box-shadow:var(--elev-ring);border-radius:var(--radius-md);margin-top:var(--space-6);align-items:stretch;display:flex;overflow:hidden}.copy-row .email{font-family:var(--font-mono);font-size:var(--text-base);color:var(--fg);text-overflow:ellipsis;background:var(--surface);flex:1;align-items:center;padding:12px 16px;display:flex;overflow:hidden}.copy-btn{background:var(--accent);color:var(--accent-on);font-family:var(--font-mono);font-weight:500;font-size:var(--text-sm);letter-spacing:var(--tracking-label);text-transform:uppercase;transition:background var(--motion-fast);border:none;padding:0 18px}.copy-btn:hover{background:var(--accent-active)}.copy-toast{font-family:var(--font-hand);color:var(--accent);opacity:0;transform-origin:100%;transition:opacity .24s var(--ease-standard), transform .24s var(--ease-standard);pointer-events:none;align-items:center;gap:6px;font-size:1.4375rem;font-weight:600;display:inline-flex;position:absolute;top:-22px;right:8px;transform:translateY(7px)rotate(-3deg)}.copy-toast.show{opacity:1;transform:translateY(0)rotate(-3deg)}.copy-toast svg{width:17px;height:17px}.social-row{gap:var(--space-4);margin-top:var(--space-6);flex-wrap:wrap;display:flex}.social-row a{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--fg-2);border-bottom:1px solid var(--border);transition:color var(--motion-fast);padding-bottom:3px;position:relative}.social-row a:hover{color:var(--accent)}.field{margin-bottom:var(--space-4);flex-direction:column;gap:7px;display:flex}.field label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--fg-2);font-weight:500}.input,.textarea{font-family:var(--font-display);font-size:var(--text-md);color:var(--fg);background:var(--surface);box-shadow:var(--elev-ring);border-radius:var(--radius-md);width:100%;transition:box-shadow var(--motion-fast);border:none;padding:11px 13px}.input:focus,.textarea:focus{box-shadow:var(--elev-ring-accent);outline:none}.input::placeholder,.textarea::placeholder{color:var(--meta)}.textarea{resize:vertical;min-height:110px}.input.invalid,.textarea.invalid{box-shadow:0 0 0 1px var(--danger)}.field-error{color:var(--danger);font-family:var(--font-mono);font-size:var(--text-xs);min-height:13px}.form-note{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-label);color:var(--meta);text-transform:uppercase;margin-top:6px}.form-ok{color:var(--accent);font-family:var(--font-hand);margin-top:var(--space-4);align-items:center;gap:9px;font-size:1.5625rem;font-weight:600;line-height:1.1;display:none}.form-ok.show{display:flex}.form-ok svg{flex:none}@media (width<=860px){.contact-grid{gap:var(--space-8);grid-template-columns:1fr}}.progress{background:var(--accent);z-index:40;width:0%;height:3px;transition:width 80ms linear;position:fixed;top:0;left:0}.post-head{border-bottom:1px solid var(--border);padding-block:clamp(36px,5vw,64px) clamp(24px,3vw,40px)}.post-meta-row{margin-bottom:var(--space-6);flex-wrap:wrap;align-items:center;gap:14px;display:flex}.post-head h1{font-family:var(--font-display);font-size:clamp(1.875rem,5vw,3.125rem);font-weight:500;line-height:var(--leading-display);letter-spacing:-.5px;color:var(--fg);margin-bottom:var(--space-5)}.post-dek{font-family:var(--font-display);color:var(--muted);font-size:clamp(1.1875rem,2.4vw,1.5rem);font-weight:500;line-height:1.4}.byline{margin-top:var(--space-8);align-items:center;gap:12px;display:flex}.avatar{border-radius:var(--radius-pill);background:var(--accent);width:42px;height:42px;color:var(--accent-on);font-family:var(--font-display);font-weight:500;font-size:var(--text-lg);place-items:center;display:grid}.byline .who{font-family:var(--font-display);font-size:var(--text-base);color:var(--fg);font-weight:500}.byline .sub{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--meta)}.prose{padding-block:clamp(32px,5vw,56px) clamp(40px,6vw,72px)}.prose p{margin:0 0 var(--space-6);color:var(--fg-2)}.prose h2{font-family:var(--font-display);letter-spacing:0;font-size:clamp(1.375rem,3vw,1.875rem);font-weight:500;line-height:var(--leading-tight);color:var(--fg);margin:var(--space-12) 0 var(--space-5)}.prose a{color:var(--accent);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.prose a:hover{color:var(--accent-active);text-decoration-thickness:2px}.prose ul{margin:0 0 var(--space-6);padding-left:0;list-style:none}.prose li{margin-bottom:var(--space-3);padding-left:18px;position:relative}.prose li:before{content:"–";color:var(--accent);position:absolute;left:0}.prose strong{color:var(--fg);font-weight:500}.prose code{font-family:var(--font-mono);background:var(--surface-warm);border-radius:var(--radius-sm);padding:1px 5px;font-size:.86em}.lede:first-letter{font-family:var(--font-display);float:left;color:var(--accent);margin:8px 12px 0 0;font-size:3.4em;font-weight:500;line-height:.74}.margin-aside{margin:var(--space-2) 0 var(--space-6)}.pull{margin:var(--space-12) 0;border-left:2px solid var(--accent);font-family:var(--font-display);letter-spacing:0;color:var(--fg);padding:6px 0 6px 18px;font-size:clamp(1.25rem,2.6vw,1.625rem);font-weight:500;line-height:1.35}.callout{background:var(--surface);box-shadow:var(--elev-ring);border-left:2px solid var(--accent);border-radius:var(--radius-md);margin:var(--space-8) 0;font-size:var(--text-lg);line-height:var(--leading-body);color:var(--fg-2);padding:18px 22px}.callout strong{color:var(--fg)}.figure{margin:var(--space-12) 0}.figure:first-child{margin-top:0}.figure a{cursor:zoom-in;display:block}.figure img{border-radius:var(--radius-md);width:100%;height:auto;box-shadow:var(--elev-ring);display:block}.figure figcaption{margin-top:var(--space-3);font-size:var(--text-base);color:var(--muted);font-style:italic;line-height:1.5}blockquote.pull{font-style:italic}.post-foot{border-top:1px solid var(--border);padding-block:clamp(36px,5vw,64px)}.next-card{justify-content:space-between;align-items:center;gap:var(--space-5);background:var(--surface);box-shadow:var(--elev-ring);border-radius:var(--radius-lg);transition:box-shadow var(--motion-base) var(--ease-standard);padding:22px 24px;display:flex;position:relative;overflow:hidden}.next-card:hover{box-shadow:var(--elev-raised)}.next-card .lbl{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent)}.next-card h3{font-family:var(--font-display);font-size:var(--text-lg);color:var(--fg);margin:8px 0 0;font-weight:500}.pagefoot{border-top:1px solid var(--border);padding-block:var(--space-12);margin-top:var(--space-8)}.pagefoot .inner{justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.pagefoot .wordmark{font-family:var(--font-display);font-weight:500;font-size:var(--text-lg);color:var(--fg)}.pagefoot a:hover{color:var(--accent)}.share-row{align-items:center;gap:var(--space-4);margin-top:var(--space-12);padding-top:var(--space-6);border-top:1px solid var(--border-soft);flex-wrap:wrap;display:flex}.share-row .share-label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--meta);font-weight:500}.share-row a,.share-row button{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--fg-2);border:none;border-bottom:1px solid var(--border);cursor:pointer;transition:color var(--motion-fast);background:0 0;padding:0 0 3px;position:relative}.share-row a:hover,.share-row button:hover{color:var(--accent)}.share-row a:after,.share-row button:after{content:"";background:var(--accent);transform-origin:0;height:2px;transition:transform var(--motion-base) var(--ease-standard);border-radius:2px;position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(0)}.share-row a:hover:after,.share-row button:hover:after{transform:scaleX(1)}.post-cover{border-radius:var(--radius-lg);width:100%;height:auto;box-shadow:var(--elev-ring);margin-top:var(--space-6);display:block}.project-logo{width:min(440px,100%);height:auto;margin:var(--space-3) 0 var(--space-4);display:block}.project-boxart{border-radius:var(--radius-md);width:min(300px,70%);height:auto;box-shadow:var(--elev-raised);margin:var(--space-6) 0;display:block}.skip-link{left:var(--space-4);z-index:100;background:var(--accent);color:var(--accent-on);font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:var(--tracking-label);text-transform:uppercase;border-radius:var(--radius-md);padding:10px 16px;position:absolute;top:-100px}.skip-link:focus-visible{top:var(--space-3)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.reveal{transition:opacity .5s var(--ease-standard), transform .5s var(--ease-standard)}.js .reveal:not(.in){opacity:0;transform:translateY(10px)}.page-enter{animation:page-settle .52s var(--ease-standard);transform-origin:50% 0;will-change:transform, opacity}@keyframes page-settle{0%{opacity:0;transform:perspective(1400px)translateY(-10px)rotateX(7deg)}55%{opacity:1}to{opacity:1;transform:perspective(1400px)translateY(0)rotateX(0)}}@media (prefers-reduced-motion:reduce){.reveal,.js .reveal:not(.in),.signature,.time-note,.margin-note,.panel-note{opacity:1;transition:none;transform:none}.signature .ink{clip-path:none;filter:none;text-shadow:none;animation:none}.signature .blot{display:none}.annotate path{stroke-dashoffset:0;transition:none}.peel:after{transition:none}.page-enter{animation:none!important}html{scroll-behavior:auto}}
