:root{--bg:#f0ece6;--plate:#f6f3ee;--paper:#fcfbf8;--ink:#1f1b18;--ink-soft:#8a837b;--ink-faint:#a8a198;--line:#cdc6bc;--line-soft:#e0dad2;--dot:#d6d0c6;--accent:#7fabdd;--accent-dark:#5f8fc8;--accent-ink:#4a7fbf;--flash:#dfe9f5;--sans:"Inter", system-ui, sans-serif;--hand:"Caveat", cursive;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}.root{isolation:isolate}body{background:var(--bg);min-height:100vh;color:var(--ink);font:400 14px / 20px var(--sans);letter-spacing:-.09px;font-optical-sizing:auto;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}a{color:inherit}::selection{background:#d6e4f4}:focus-visible{outline:2px solid var(--accent-ink);outline-offset:3px;border-radius:3px}[tabindex="-1"]:focus{outline:none}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.meta{color:var(--ink-soft);font-size:12px;line-height:16px}.page{max-width:582px;margin:0 auto;padding:0 16px 80px}.icon{vertical-align:-.14em;width:1em;height:1em;display:inline-block}.back-link .icon{margin-right:4px}.btn .icon{margin-left:4px}.back-link{color:var(--ink-faint);text-decoration:none;transition:color .15s}.back-link:hover{color:var(--ink)}.back-link--inline{display:none}.toc{width:168px;font-size:13px;line-height:16px;position:fixed;top:84px;left:80px}.toc ol{margin:52px 0 0;padding:0;list-style:none}.toc li{margin-bottom:8px}.toc li:first-child{margin-bottom:16px}.toc a{color:var(--ink-faint);text-decoration:none;transition:color .15s}.toc a:hover,.toc .is-active a{color:var(--ink)}@media (width<=1180px){.toc{display:none}.back-link--inline{margin-top:12px;padding:12px 12px 12px 0;display:inline-block}}.letter-head{margin:84px 0 36px}.letter-head h1{margin:0;font-size:14px;font-weight:500;line-height:20px}.letter-date{color:var(--ink-soft);margin:4px 0 0}.dek{color:var(--ink-soft);margin:16px 0 0}.prose p,.lede{text-wrap:pretty;margin:0 0 16px}.prose strong,.lede strong,.coda strong{font-weight:600}.prose h2{align-items:center;gap:8px;margin:56px 0 28px -8px;scroll-margin-top:84px;font-size:14px;font-weight:500;display:flex}.prose h2 span{border-radius:8px;padding:6px 8px;transition:background .6s}.prose h2:after{content:"";border-top:1px solid var(--line-soft);flex:1}.prose h2.is-flash span{animation:2s flash}@keyframes flash{0%,60%{background:var(--flash)}to{background:0 0}}.prose blockquote{border-left:1px solid var(--accent);margin:24px 0;padding-left:14px;font-style:italic}.prose blockquote p{margin:0}.letter .prose>*{animation:.7s both rise}.fig{margin:2em 0}.plate{border:1px solid var(--line-soft);background-color:var(--plate);background-image:radial-gradient(circle, var(--dot) .8px, transparent 1.2px);background-position:9px 9px;background-size:18px 18px;border-radius:4px;overflow:hidden}.plate img{width:100%;height:auto;display:block}.fig figcaption{color:var(--ink-soft);margin-top:10px;font-size:12px;line-height:16px}.fig figcaption b{color:var(--ink);font-weight:500}.prose{counter-reset:fig}.prose .fig{counter-increment:fig}.prose .fig-n:empty:before{content:"Fig " counter(fig) "."}.plate-button{all:unset;box-sizing:border-box;cursor:pointer;-webkit-tap-highlight-color:transparent;width:100%;padding:24px 12%;display:block}.plate-button:focus-visible{outline:2px solid var(--accent-ink);outline-offset:-6px;border-radius:4px}.env{width:100%;max-width:360px;margin:0 auto;display:block;overflow:visible}.env :is(rect,path,circle){vector-effect:non-scaling-stroke;stroke:var(--line);stroke-width:1px;stroke-linejoin:round}.env-back,.env-front,.env-flap,.env-flap-open{fill:var(--plate)}.env-front,.env-flap{stroke:#a39b91!important}.env-fold{fill:none}.env-paper rect{fill:var(--paper)}.env-paper path{fill:none;stroke:var(--line-soft)!important}.env-flap,.env-flap-open,.env-paper,.env-seal{transform-box:fill-box;transition:transform .3s,opacity .3s}.env-flap{transform-origin:50% 0}.env-flap-open{transform-origin:50% 100%;transform:scaleY(0)}.env-seal{transform-origin:50%}.env-seal circle{fill:var(--accent);stroke:var(--accent-dark)!important}.env-seal .env-seal-ring{fill:none;stroke:#ffffff59!important}.env-seal .env-seal-heart{fill:#f1f6fc;stroke:none!important}@media (hover:hover){.plate-button:hover .env--sealed .env-flap{transform:scaleY(.93)}.plate-button:hover .env--sealed .env-seal{transform:rotate(-8deg)scale(1.05)}}.plate-button:focus-visible .env--sealed .env-flap{transform:scaleY(.93)}.env--opening .env-seal{animation:.45s forwards crack}.env--opening .env-flap,.env--open .env-flap{transition-delay:.3s;transform:scaleY(0)}.env--opening .env-flap-open,.env--open .env-flap-open{transition-delay:.6s;transform:scaleY(1)}.env--opening .env-paper,.env--open .env-paper{transition:transform .6s cubic-bezier(.2,.8,.3,1) .85s;transform:translateY(-64px)}.env--open .env-seal{opacity:0}.env--open .env-flap,.env--open .env-flap-open,.env--open .env-paper{transition-delay:0s}@keyframes crack{35%{transform:scale(1.15)rotate(-10deg)}60%{opacity:1;transform:scale(1.1)rotate(10deg)}to{opacity:0;transform:scale(0)rotate(45deg)}}.sealed{margin-top:84px}.sealed-envelope{all:unset;box-sizing:border-box;cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:8px;width:min(320px,100%);margin-top:-8px;padding:12px;display:block}.sealed-envelope:focus-visible{outline:2px solid var(--accent-ink);outline-offset:4px}.sealed-envelope .env-back,.sealed-envelope .env-front,.sealed-envelope .env-flap,.sealed-envelope .env-flap-open{fill:var(--bg)}.sealed-view .landing-sub{margin-bottom:0}.sealed-hint{color:var(--accent-ink);transition:opacity .3s}.sealed-hint.is-hidden{opacity:0}@media (hover:hover){.sealed-envelope:hover .env--sealed .env-flap{transform:scaleY(.93)}.sealed-envelope:hover .env--sealed .env-seal{transform:rotate(-8deg)scale(1.05)}}.sealed-envelope:focus-visible .env--sealed .env-flap{transform:scaleY(.93)}.sign{color:var(--ink-soft);margin:40px 0 0}.sign .hand{font:600 30px / 1.1 var(--hand);letter-spacing:0;color:var(--accent-ink);margin-top:2px;display:block}.song{border-top:1px solid var(--line-soft);margin:36px 0 0;padding-top:12px}.song .meta{margin-right:6px}.pager{border-top:1px solid var(--line-soft);grid-template-columns:1fr 1fr;gap:16px;margin-top:56px;padding-top:16px;display:grid}.pager a{gap:2px;padding:8px 0;text-decoration:none;display:grid}.pager a:hover{color:var(--accent-ink)}.pager-next{text-align:right}.coda{margin-top:48px}.coda p{margin:0 0 14px}.btn{font:500 13px / 1 var(--sans);color:var(--paper);background:var(--ink);cursor:pointer;touch-action:manipulation;border:0;border-radius:999px;min-height:40px;padding:10px 16px;transition:background .2s,transform .15s}.btn:hover{background:var(--accent-ink)}.btn:active{transform:scale(.97)}.landing{grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0,1fr);max-width:880px;min-height:100svh;margin:0 auto;padding:20px 16px;display:grid;overflow-x:clip}.landing-bar{color:var(--ink-faint);justify-content:space-between;font-size:13px;display:flex}.landing-bar span:first-child{color:var(--ink);font-weight:500}.landing-code{letter-spacing:.06em;font:400 12px/1 Geist Mono,ui-monospace,monospace}.landing-center{text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.landing-month{letter-spacing:-.035em;margin:0;font-size:clamp(28px,6vw,40px);font-weight:500;line-height:1.15}.landing-sub{min-height:20px;color:var(--ink-soft);margin:8px 0 40px}.landing-sub.has-letter{color:var(--ink)}.landing-wrap{width:100%;max-width:808px;padding:0 24px}.landing-hit{cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;justify-content:center;padding:28px 0 14px;display:flex}.landing-hit.on-letter{cursor:pointer}.landing-hit:focus-visible{outline-offset:4px;border-radius:4px}.landing-ticks{position:relative}.tick{background:var(--line);border-radius:1px;width:1.5px;transition:height .2s cubic-bezier(.2,.8,.3,1),background .2s;position:absolute;bottom:0}.tick--focus{background:var(--ink)}.tick--letter{background:#8fae96;width:2px}.tick--letter.tick--focus{background:#6f9478}.orchid{pointer-events:none;width:30px;height:30px;transition:bottom .2s cubic-bezier(.2,.8,.3,1),scale .3s cubic-bezier(.2,.8,.3,1.3);position:absolute;overflow:visible;translate:-50% 40%}.orchid.is-focus{scale:1.25}.orchid-petals,.orchid-bud{transform-box:fill-box;transform-origin:50%}.orchid-petals{animation:1s cubic-bezier(.2,.8,.3,1.2) both bloom,7s ease-in-out 1s infinite sway}.orchid-bud{transform-origin:50% 100%;animation:5s ease-in-out infinite sway}@keyframes bloom{0%{opacity:0;transform:scale(.2)rotate(-40deg)}}@keyframes sway{0%,to{rotate:-4deg}50%{rotate:4deg}}.landing-years{height:14px;color:var(--ink-faint);margin:10px auto 0;font-size:11px;line-height:1;position:relative}.landing-years span{transition:color .2s;position:absolute;top:0;translate:-50%}.landing-years span:first-child{translate:0}.landing-years .is-active{color:var(--ink);font-weight:500}.landing-cta{min-height:44px;color:var(--ink-faint);margin:24px 0 0;font-size:13px}.landing-cta a{color:var(--accent-ink);padding:12px 8px;text-decoration:none;display:inline-block}.landing-cta>span{padding:12px 8px;display:inline-block}.landing-cta a:hover{text-underline-offset:3px;text-decoration:underline}.landing-next{text-align:center;color:var(--ink-faint);font-size:13px}.mystery{letter-spacing:.02em;color:var(--ink);white-space:pre;cursor:default;-webkit-tap-highlight-color:transparent;margin:-10px -4px;padding:10px 4px;font:400 12px/1 Geist Mono,ui-monospace,monospace;display:inline-block}.rolling-word{white-space:nowrap;display:inline-block}.rolling{--roll-y:60%;--roll-blur:3px;--roll-ms:.32s}.rolling-ch{animation:roll var(--roll-ms) cubic-bezier(.16, 1, .3, 1) both;animation-delay:calc(var(--i,0) * 14ms);display:inline-block}@keyframes roll{0%{transform:translateY(var(--roll-y)) scaleY(1.08);opacity:0;filter:blur(var(--roll-blur))}60%{filter:blur()}}@keyframes rise{0%{opacity:0;transform:translateY(12px)}}.burst-heart{z-index:30;pointer-events:none;color:var(--accent);font-size:calc(1rem * var(--s));animation:1.2s cubic-bezier(.15,.7,.3,1) forwards burst;position:fixed;translate:-50% -50%}.burst-heart svg{display:block}@keyframes burst{0%{opacity:1;transform:translate(0)scale(.3)}to{transform:translate(var(--dx), var(--dy)) scale(1);opacity:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
