@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/cormorant-garamond-latin-ext-500-normal.CH1kM7og.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/cormorant-garamond-latin-500-normal.BsRWmXhO.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/_astro/cormorant-garamond-latin-ext-500-italic.CE7zdTnu.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/_astro/cormorant-garamond-latin-500-italic.Y14P-dkT.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Amiri;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/amiri-arabic-400-normal.D0NIBXga.woff2)format("woff2")}:root{--bg:#f4f1e3;--ink:#1b241c;--accent:#3b6a33;--muted:#5d6a5e;--faint:#8e988e;--rule:#1b241c24;--display:"Cormorant Garamond", "Iowan Old Style", serif;--sans:"Geist Variable", system-ui, sans-serif;--mono:"Geist Mono Variable", ui-monospace, monospace;--arabic:"Amiri", "Noto Naskh Arabic", serif;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#121712;--ink:#e4eadf;--accent:#9cc58a;--muted:#a8b3a6;--faint:#6f7a6e;--rule:#e4eadf21;color-scheme:dark}}:root[data-theme=dark]{--bg:#121712;--ink:#e4eadf;--accent:#9cc58a;--muted:#a8b3a6;--faint:#6f7a6e;--rule:#e4eadf21;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font:16px/1.65 var(--sans);-webkit-font-smoothing:antialiased;margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-underline-offset:3px;text-decoration:underline 1px}::selection{background:var(--accent);color:var(--bg)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}main{max-width:800px;margin:0 auto;padding:88px 24px 64px}section{margin-top:88px}h2{font:italic 500 26px/1.2 var(--display);color:var(--accent);margin:0 0 28px}h3{margin:0;font-size:16px;font-weight:500}p{margin:0 0 14px}.intro{justify-content:space-between;align-items:baseline;gap:24px;display:flex}.intro+section{margin-top:56px}.theme{font:13px var(--mono);color:var(--faint);cursor:pointer;text-underline-offset:4px;background:0 0;border:0;padding:4px 0;text-decoration:underline dotted}.theme:hover{color:var(--accent)}.top-links{white-space:nowrap;align-items:baseline;gap:18px;display:flex}.top-links a{font:13px var(--mono);color:var(--accent);text-underline-offset:4px;text-decoration:underline dotted}.top-links a:hover{text-decoration-style:solid}.topbar{justify-content:space-between;align-items:center;display:flex}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.greeting{min-height:1.6em}.hello{align-items:baseline;gap:12px;display:inline-flex}.hello .word{font:28px/1.2 var(--arabic);font-style:normal}.hello .latin{font:13px var(--mono);color:var(--faint);font-style:normal}h1{font:500 clamp(32px, 4.4vw, 40px)/1.1 var(--display);letter-spacing:-.005em;margin:0}.ar{font:clamp(26px, 3.6vw, 32px)/1.5 var(--arabic);color:var(--accent);text-align:left;margin:10px 0 0}.gpu{float:right;margin:0 0 6px 16px}.gpu-spin{--w:168px;--f:0;--delay:0s;width:var(--w);height:calc(var(--w) * 60 / 84);cursor:grab;touch-action:pan-y;background:url(/objects/gpu-spin.png) 0 0 / calc(var(--w) * 24) 100% no-repeat;image-rendering:pixelated;animation:gpu-turn 7.2s steps(24) var(--delay) infinite;border-radius:6px}.gpu-spin.held{cursor:grabbing;background-position-x:calc(var(--w) * var(--f) * -1);animation:none}.gpu figcaption{text-align:center;font:11px var(--mono);margin-top:2px}.gpu figcaption a{color:var(--faint);text-underline-offset:3px;text-decoration:underline dotted}.gpu figcaption a:after{content:" ↗"}.gpu figcaption a:hover{color:var(--accent)}.gpu-spin:focus-visible{outline:2px solid var(--accent);outline-offset:4px}@keyframes gpu-turn{to{background-position-x:calc(var(--w) * -24)}}@media (width<=420px){.gpu{margin-left:10px}.gpu-spin{--w:126px}}@media (prefers-reduced-motion:reduce){.gpu-spin{background-position-x:calc(var(--w) * var(--f) * -1);animation:none}}.about-body{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:40px;display:grid}.about-body p{color:var(--muted);max-width:56ch}.story a{color:var(--ink);text-decoration:underline dotted;text-decoration-color:var(--faint);text-underline-offset:3px}.story a:hover{color:var(--accent);text-decoration-color:currentColor}.photo{margin:0}.photo-stack{aspect-ratio:640/853;margin:0 0 26px;padding:0;list-style:none;position:relative}.photo-stack li{transform:rotate(var(--tilt,0deg)) translateY(calc(var(--depth,0) * 4px));background:#fdfbf3;border-radius:4px;transition:transform .6s cubic-bezier(.16,1,.3,1),opacity .45s;position:absolute;inset:0}.photo-stack img{object-fit:cover;border:6px solid #fdfbf3;border-radius:4px;width:100%;height:100%;display:block;box-shadow:0 8px 24px #1b241c2e}.photo-stack li.leaving{opacity:0;transform:translate(-30%)rotate(-18deg)}.photo-stack li.deep{opacity:0}.photo-stack img:not([src]){visibility:hidden}.photo figcaption{z-index:20;font:13px var(--mono);text-align:center;margin-top:10px;position:relative}.photo figcaption a{color:var(--faint);text-underline-offset:4px;text-decoration:underline dotted}.photo figcaption a:hover{color:var(--accent)}.plain span{font:13px/1.8 var(--mono);color:var(--faint);display:block}.plain{gap:12px;margin:0;padding:0;list-style:none;display:grid}.plain li{justify-content:space-between;align-items:baseline;gap:24px;display:flex}.plain span{white-space:nowrap}.links{border-top:1px solid var(--rule);font:14px var(--mono);flex-wrap:wrap;align-items:center;gap:10px;margin-top:96px;padding-top:22px;display:flex}.links a{color:var(--ink);text-decoration:underline dotted;text-decoration-color:var(--faint);text-underline-offset:4px}.links a:not(.icon):after{content:"↗";color:var(--faint);margin-left:6px;text-decoration:none;display:inline-block}.links a+a:before{content:"·";color:var(--faint);margin-right:10px;display:inline-block}.links a:hover{color:var(--accent)}.links .icon{align-items:center;text-decoration:none;display:inline-flex}.links .icon svg{display:block}.topbar{margin-bottom:40px}.mark{font:15px var(--mono);letter-spacing:.04em;color:var(--muted);align-items:center;gap:10px;display:inline-flex}.mark:hover{color:var(--accent)}.mark-puck{width:32px;height:25px;image-rendering:pixelated;background:url(/pets/puck.png) 100% 0/200% 100% no-repeat;transition:translate .2s}.mark:hover .mark-puck{translate:0 -2px}.lost{color:var(--muted)}.lost a{color:var(--accent);text-underline-offset:3px;text-decoration:underline dotted}.page-title{font:italic 500 34px/1.2 var(--display);color:var(--accent);margin:0 0 40px}.credit{color:var(--faint);margin-top:14px;font-size:12px}@media (width<=640px){main{padding:56px 16px 48px}section{margin-top:64px}.about-body{grid-template-columns:1fr}.plain li{display:block}.links{margin-top:64px}}@media (prefers-reduced-motion:reduce){.photo img,.photo-stack li{transition:none}}.quote{text-align:center;margin:96px 0 0}.quote blockquote{font:clamp(22px, 3vw, 28px)/1.7 var(--arabic);color:var(--accent);margin:0}.quote p{max-width:46ch;font:italic 500 19px/1.5 var(--display);color:var(--muted);margin:10px auto 0}.quote cite{font:normal 14px var(--arabic);color:var(--faint);margin-top:8px;display:block}.music{margin-top:0}.section-head{justify-content:space-between;align-items:baseline;display:flex}.slider-nav button{font:16px var(--mono);color:var(--muted);cursor:pointer;background:0 0;border:0;padding:2px 8px}.slider-nav button:hover{color:var(--accent)}.shelf{scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--rule) transparent;grid-auto-columns:150px;grid-auto-flow:column;gap:22px;margin:0;padding:0 60px 12px 0;list-style:none;display:grid;overflow-x:auto}.shelf li{scroll-snap-align:start;align-content:start;gap:2px;display:grid}.record{aspect-ratio:1;cursor:pointer;background:0 0;border:0;width:100%;margin-bottom:10px;padding:0;display:block;position:relative}.record img{z-index:1;object-fit:cover;border-radius:3px;width:100%;height:100%;transition:transform .5s cubic-bezier(.16,1,.3,1);display:block;position:relative}.disc{background:radial-gradient(circle, var(--accent) 0 14%, #111 15% 17%, #1c1c1c 18% 100%), repeating-radial-gradient(circle, transparent 0 3px, #ffffff0a 3px 4px);background-blend-mode:normal;border-radius:50%;transition:transform .6s cubic-bezier(.16,1,.3,1);position:absolute;inset:4%}.disc:after{content:"";background:repeating-radial-gradient(circle,#0000 0 3px,#ffffff0d 3px 4px);border-radius:50%;position:absolute;inset:0}.record:hover img{transform:translateY(-3px)}.record[aria-pressed=true] .disc{transform:translate(34%)}.record[aria-pressed=true] img{transform:translate(-8%)}.shelf.playing .record[aria-pressed=true] .disc{animation:3s linear infinite spin}@keyframes spin{0%{transform:translate(34%)rotate(0)}to{transform:translate(34%)rotate(360deg)}}.shelf .t{font-size:15px;font-weight:500}.shelf .a{color:var(--faint);font-size:13px}.shelf li:has([aria-pressed=true]) .t{color:var(--accent)}.player{min-height:152px;margin-top:28px}.player iframe{border-radius:12px}@media (width<=640px){.shelf{grid-auto-columns:128px;gap:16px}}@media (prefers-reduced-motion:reduce){.record img,.disc{transition:none}.shelf{scroll-behavior:auto}.shelf.playing .record[aria-pressed=true] .disc{animation:none}}.games{margin-top:80px}.game-list{scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--rule) transparent;grid-auto-columns:180px;grid-auto-flow:column;gap:22px;margin:0;padding:0 0 12px;list-style:none;display:grid;overflow-x:auto}.game-list li{scroll-snap-align:start}.game-cover{cursor:pointer;aspect-ratio:2/3;background:0 0;border:0;border-radius:6px;width:100%;padding:0;display:block;position:relative;overflow:hidden}.game-cover img{object-fit:cover;width:100%;height:100%;transition:transform .5s cubic-bezier(.16,1,.3,1),filter .3s;display:block}.game-cover:hover img,.game-cover:focus-visible img{transform:scale(1.04)}.game-list h3{margin:10px 0 2px;font-size:15px}.fiction{margin-top:80px}.book-cover{aspect-ratio:2/3;background:var(--rule);border-radius:6px;display:block;overflow:hidden}.book-cover img{object-fit:cover;width:100%;height:100%;transition:transform .5s cubic-bezier(.16,1,.3,1);display:block}.book-cover:hover img,.book-cover:focus-visible img{transform:scale(1.04)}.book-meta{white-space:nowrap;text-overflow:ellipsis;font:13px var(--mono);color:var(--faint);margin:0 0 2px;overflow:hidden}.game-links{align-items:baseline;gap:14px;margin:0;display:flex}.fact-link{cursor:pointer;font:13px var(--mono);color:var(--accent);text-underline-offset:4px;background:0 0;border:0;padding:0;text-decoration:underline dotted}.fact-link:before{content:"✦";margin-right:5px;text-decoration:none;display:inline-block}.fact-link:hover,.fact-link[aria-expanded=true]{text-decoration-style:solid}.game-list .steam{font:13px var(--mono);color:var(--faint);text-underline-offset:4px;text-decoration:underline dotted}.game-list .steam:after{content:" ↗"}.game-list .steam:hover{color:var(--accent)}.discord{color:var(--muted);margin-top:48px}.copy{font:inherit;color:var(--accent);cursor:copy;text-underline-offset:4px;background:0 0;border:0;padding:0;text-decoration:underline dotted;position:relative}.copy:hover{text-decoration-style:solid}.copy:after{content:"click to copy";white-space:nowrap;font:11px var(--mono);color:var(--bg);background:var(--ink);opacity:0;pointer-events:none;border-radius:6px;padding:3px 8px;transition:opacity .15s,translate .15s;position:absolute;bottom:calc(100% + 6px);left:50%;translate:-50% 4px}.copy:hover:after,.copy:focus-visible:after{opacity:1;translate:-50%}.copy[data-copied]:after{content:"copied ✓";background:var(--accent);opacity:1;translate:-50%}@media (width<=640px){.game-list{grid-auto-columns:150px;gap:16px}}@media (prefers-reduced-motion:reduce){.game-list{scroll-behavior:auto}.game-cover img,.book-cover img{transition:none}}.fact{border:1px solid var(--rule);border-radius:10px;grid-template-columns:240px minmax(0,1fr);margin:20px 0 8px;display:grid;overflow:hidden}.fact[hidden]{display:none}.fact-media{background:color-mix(in srgb, var(--accent) 10%, var(--bg));place-items:center;min-height:200px;margin:0;display:grid}.fact-img{object-fit:contain;max-width:86%;max-height:180px;transition:opacity .2s;display:block}.fact.loading .fact-img{opacity:.35}.fact-img:not([src]){visibility:hidden}.fact-img.shot{object-fit:cover;width:100%;max-width:none;height:100%;max-height:none}.fact-body{flex-direction:column;padding:16px 18px 12px;display:flex}.fact-head{font:12px var(--mono);color:var(--faint);justify-content:space-between;align-items:baseline;margin:0;display:flex}.fact-about{font:italic 500 22px/1.2 var(--display);color:var(--accent);margin:4px 0 8px}.fact-text{margin:0 0 10px;font-size:15px;line-height:1.6}.fact-quote{border-left:2px solid var(--accent);font:italic 500 17px/1.4 var(--display);color:var(--muted);margin:0 0 10px;padding-left:10px}.fact-nav{font:12px var(--mono);color:var(--faint);justify-content:space-between;align-items:center;margin:auto 0 0;display:flex}.fact-src{color:var(--faint);text-underline-offset:4px;text-decoration:underline dotted}.fact-src:after{content:" ↗"}.fact-src:hover{color:var(--accent)}.fact-controls{display:flex}.fact button{font:14px var(--mono);color:var(--muted);cursor:pointer;background:0 0;border:0;padding:2px 8px}.fact button:hover{color:var(--accent)}.game-cover[aria-expanded=true]{outline:2px solid var(--accent);outline-offset:-2px}@media (width<=640px){.fact{grid-template-columns:1fr}.fact-media{height:160px;min-height:160px}}.project-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.project-list a{border:1px solid var(--rule);color:var(--ink);border-radius:10px;gap:4px;padding:16px 18px;text-decoration:none;transition:border-color .2s,transform .3s cubic-bezier(.16,1,.3,1);display:grid}.project-list a:hover{border-color:var(--accent);transform:translateY(-2px)}.p-name{font:italic 500 22px/1.2 var(--display);color:var(--accent)}.p-name:after{content:" →";font-size:16px;font-style:normal}.p-desc{color:var(--muted);font-size:15px}.p-meta{font:12px var(--mono);color:var(--faint)}.papers h2{margin-bottom:18px}.article{max-width:720px}.post-head{margin:8px 0 32px}.post-kicker{font:13px var(--mono);color:var(--faint);margin:0 0 6px}.article h1{margin-bottom:14px;font-size:clamp(40px,6vw,56px)}.post-lede{color:var(--muted);max-width:60ch;font-size:18px;line-height:1.6}.post-links{font:14px var(--mono);gap:18px;display:flex}.post-links a{text-underline-offset:4px;text-decoration:underline dotted}.post-links a:after{content:" ↗"}.article h2{font:italic 500 28px/1.2 var(--display);color:var(--accent);margin:48px 0 12px}.article h3{margin:28px 0 6px;font-size:16px}.article p{color:var(--ink);max-width:66ch;line-height:1.75}.article p a{color:var(--accent);text-underline-offset:3px;text-decoration:underline dotted}.article code{font:.88em var(--mono);background:color-mix(in srgb, var(--accent) 9%, var(--bg));border-radius:4px;padding:1px 5px}.article pre{border:1px solid var(--rule);background:color-mix(in srgb, var(--accent) 5%, var(--bg));border-radius:8px;margin:14px 0 20px;padding:14px 16px;overflow-x:auto}.article pre code{background:0 0;padding:0;font-size:13px;line-height:1.7}.post-media{margin:0 0 8px}.post-media img{border:1px solid var(--rule);border-radius:8px;width:100%;height:auto;display:block}.gif-play{cursor:pointer;background:0 0;border:0;width:100%;padding:0;display:block;position:relative}.gif-play.playing{cursor:default}.gif-badge{font:13px var(--mono);color:var(--bg);background:var(--ink);opacity:.88;border-radius:999px;padding:8px 14px;transition:opacity .2s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.gif-play:hover .gif-badge,.gif-play:focus-visible .gif-badge{opacity:1}.gif-play.playing .gif-badge{display:none}.post-media figcaption{font:13px var(--mono);color:var(--faint);text-align:center;margin-top:8px}.diagram{margin:18px 0 8px}.diagram svg{width:100%;height:auto;display:block}.d-box rect{fill:color-mix(in srgb, var(--accent) 8%, var(--bg));stroke:var(--rule);stroke-width:1.2px}.d-store rect,.d-out rect{stroke:var(--accent)}.diagram text{font:13px var(--sans);fill:var(--ink);text-anchor:middle}.diagram .d-sub{font:10.5px var(--mono);fill:var(--faint)}.diagram .d-note{font:11px var(--mono);fill:var(--faint)}.d-arrow{fill:none;stroke:var(--accent);stroke-width:1.5px}.stack{gap:8px;margin:0;padding:0;list-style:none;display:grid}.stack li{grid-template-columns:110px minmax(0,1fr);gap:16px;font-size:15px;display:grid}.stack span{font:13px var(--mono);color:var(--faint);padding-top:2px}@media (width<=640px){.stack li{grid-template-columns:1fr;gap:0}}@media (prefers-reduced-motion:reduce){.project-list a{transition:none}}.paper-card{z-index:20;border:1px solid var(--rule);background:var(--bg);pointer-events:none;opacity:0;border-radius:10px;width:min(340px,100vw - 24px);padding:12px 14px;transition:opacity .18s,transform .18s;position:absolute;transform:translateY(4px);box-shadow:0 14px 40px #1b241c33}.paper-card.on{opacity:1;transform:none}.pc-venue{font:11px var(--mono);color:var(--faint);margin:0 0 4px}.pc-title{font:italic 500 18px/1.3 var(--display);color:var(--accent);margin:0 0 6px}.pc-authors{color:var(--muted);margin:0;font-size:13px}@media (prefers-reduced-motion:reduce){.paper-card{transition:none}}@media (width<=640px){.intro{flex-wrap:wrap-reverse}.top-links{justify-content:flex-end;width:100%}}.pet{z-index:9;position:fixed;bottom:14px;left:24px}.pet-body{cursor:pointer;background:0 0;border:0;padding:0;display:block;position:relative}.pet-sprite{width:96px;height:75px;image-rendering:pixelated;background:url(/pets/puck.png) 0 0/200% 100% no-repeat;animation:2.4s ease-in-out infinite pet-bob;display:block}.pet.talking .pet-sprite{animation:2.4s ease-in-out infinite pet-bob,.3s step-end infinite pet-talk}@keyframes pet-bob{50%{translate:0 -2px}}@keyframes pet-talk{50%{background-position:100% 0}}.pet-bubble{border:1px solid var(--rule);background:var(--bg);border-radius:10px;width:max-content;max-width:min(300px,100vw - 32px);padding:10px 26px 10px 12px;font-size:14px;line-height:1.5;position:absolute;bottom:calc(100% + 10px);left:0;box-shadow:0 10px 30px #1b241c29}.pet-bubble:after{content:"";background:var(--bg);border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);width:10px;height:10px;position:absolute;bottom:-6px;left:26px;transform:rotate(45deg)}.pet-text{margin:0}.pet-close{font:14px var(--mono);color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0 4px;position:absolute;top:4px;right:4px}.pet-close:hover{color:var(--accent)}.pet-bubble[hidden]{display:none}.pet.dancing .pet-sprite{animation:.9s ease-in-out infinite pet-dance,.45s step-end infinite pet-talk}@keyframes pet-dance{25%{translate:0 -3px;rotate:-8deg}75%{translate:0 -3px;rotate:8deg}}.pet-letter{opacity:0;border:2px solid var(--ink);background:linear-gradient(to bottom right, transparent 45%, var(--ink) 45% 55%, transparent 55%) left / 50% 100% no-repeat, linear-gradient(to bottom left, transparent 45%, var(--ink) 45% 55%, transparent 55%) right / 50% 100% no-repeat, #fdfbf3;border-radius:1px;width:16px;height:11px;margin-left:-8px;position:absolute;bottom:2px;left:50%}.pet.delivering .pet-letter{opacity:1;transition:opacity .2s}.pet.delivering .pet-body{animation:2.6s cubic-bezier(.5,0,.75,0) forwards pet-fly}.pet.delivering .pet-sprite{animation:.16s step-end infinite pet-talk}.pet.returning .pet-body{animation:.9s cubic-bezier(.16,1,.3,1) pet-land}@keyframes pet-fly{0%{translate:0}18%{translate:0 -10px}to{translate:60px -110vh;rotate:12deg}}@keyframes pet-land{0%{translate:0 -40vh}to{translate:0}}@media (width<=640px){.pet-sprite,.pet-nap .pet-sprite{width:64px;height:50px}}@media (prefers-reduced-motion:reduce){.pet{transition:none}.pet-sprite,.pet.talking .pet-sprite,.pet.dancing .pet-sprite{animation:none}}.pet-cta{font:13px var(--mono);color:var(--accent);cursor:pointer;text-underline-offset:4px;background:0 0;border:0;margin-top:8px;padding:0;text-decoration:underline dotted}.pet-form{gap:6px;width:min(270px,100vw - 64px);display:grid}.pet-form label{font:12px var(--mono);color:var(--muted)}.pet-form label span{color:var(--faint)}.pet-form textarea,.pet-form input[type=email]{width:100%;font:14px var(--sans);color:var(--ink);background:var(--bg);border:1px solid var(--rule);resize:vertical;border-radius:6px;padding:7px 9px}.pet-form textarea:focus,.pet-form input:focus{outline:2px solid var(--accent);outline-offset:1px}.pet-form ::placeholder{color:var(--faint)}.pet-trap{position:absolute;left:-9999px}.pet-error{color:#b3261e;margin:0;font-size:13px}:root[data-theme=dark] .pet-error{color:#f2b8b5}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .pet-error{color:#f2b8b5}}.pet-send{font:14px var(--sans);color:var(--bg);background:var(--accent);cursor:pointer;border:0;border-radius:6px;justify-self:start;margin-top:4px;padding:7px 14px}.pet-send:disabled{opacity:.6;cursor:wait}.pet-nap{z-index:9;cursor:pointer;opacity:.75;background:0 0;border:0;padding:0;position:fixed;bottom:12px;left:14px}.pet-nap:hover,.pet-nap:focus-visible{opacity:1}.pet-nap .pet-sprite{background-position:100% 0;width:64px;height:50px;animation:3s ease-in-out infinite pet-breathe}.pet-z{font:14px var(--mono);color:var(--accent);animation:2.4s ease-in-out infinite pet-z;position:absolute;top:-12px;right:-4px}@keyframes pet-breathe{50%{translate:0 1px}}@keyframes pet-z{0%{opacity:0;translate:0 4px}40%{opacity:1}to{opacity:0;translate:4px -8px}}@media (prefers-reduced-motion:reduce){.pet-nap .pet-sprite,.pet-z{animation:none}}.photo-spot{font:italic 500 15px/1.3 var(--display);color:var(--muted);margin-top:2px;display:block}.photo-spot:empty{display:none}.photo-stack:focus-visible{outline:2px solid var(--accent);outline-offset:8px}.photo-line{align-items:baseline;gap:10px;display:inline-flex}.photo-line button{font:16px var(--mono);color:var(--muted);cursor:pointer;background:0 0;border:0;padding:2px 6px;line-height:1}.photo-line button:hover{color:var(--accent)}
