/*! Happy Birthday — a cat, a flower, and a surprise — © 2026 Hasib (OVERSHOOT). All rights reserved. Licensed, not sold: see LICENSE.md. */:root{--c-room: #150e1a;--c-room-2: #241733;--c-chalk: #f6ead9;--c-mute: #a08faf;--c-petal: #ff7a52;--c-petal-2: #ff9c74;--c-eye: #ffc457;--c-stem: #6f9f6a;--ink-w: 5;--ease: cubic-bezier(.22,1,.36,1);--board-h: min(82vh, 800px)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--c-room);color:var(--c-chalk);font-family:Inter,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased;overflow:hidden}.stage{position:relative;min-height:100svh;isolation:isolate;background:radial-gradient(120% 78% at 50% 96%,var(--c-room-2) 0%,transparent 68%),radial-gradient(80% 50% at 50% 8%,#1e1428 0%,transparent 70%)}.u-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.kicker{position:absolute;inset:clamp(20px,4vh,40px) 0 auto 0;text-align:center;font-size:.78rem;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--c-mute)}.type{position:absolute;left:0;right:0;top:clamp(74px,13vh,150px);z-index:3;text-align:center;pointer-events:none;line-height:.92;font-family:Fraunces,Georgia,serif}.type__a,.type__b{display:block}.type__a{font-style:italic;font-weight:600;font-size:clamp(2.2rem,7.4vw,6rem);font-variation-settings:"SOFT" 100,"WONK" 1,"opsz" 60;letter-spacing:-.008em;color:var(--c-chalk);transform:translate(-.34em)}.type__b{font-weight:700;font-size:clamp(3.4rem,13.6vw,11.5rem);font-variation-settings:"SOFT" 100,"WONK" 1,"opsz" 144;letter-spacing:-.036em;margin-top:-.06em;color:var(--c-chalk)}.type__from{display:block;margin-top:clamp(10px,1.8vh,22px);font-family:Inter,system-ui,sans-serif;font-size:.82rem;font-weight:400;font-style:italic;letter-spacing:.06em;color:var(--c-mute);opacity:0;transition:opacity .5s var(--ease) .78s}.type .ch{display:inline-block;will-change:transform,opacity}.js .type .ch{opacity:0;transform:translateY(.42em) scale(.72) rotate(var(--r, 0deg));transition:opacity .42s var(--ease),transform .78s var(--ease);transition-delay:calc(var(--i, 0) * 34ms)}.js .type__from{opacity:0}.js [data-state=done] .type .ch{opacity:1;transform:none}.js [data-state=done] .type__from{opacity:1}.board{position:absolute;left:0;right:0;bottom:0;height:var(--board-h);z-index:2}.scene{display:block;width:100%;height:100%;overflow:visible}.ink{fill:none;stroke:var(--c-chalk);stroke-width:var(--ink-w);stroke-linecap:round;stroke-linejoin:round}.ink.dot,.ink.nose{fill:var(--c-chalk);stroke:none}.ground{stroke-width:4;opacity:.8}.whisk .ink{stroke-width:2.6;opacity:.75}.dust circle{fill:var(--c-chalk);opacity:.2}.man .ink{vector-effect:non-scaling-stroke}.man__face{opacity:0}.man__tuft{opacity:1}.cat__tail{transform-box:view-box;transform-origin:306px 638px}.cat__glee{opacity:0;transition:opacity .3s var(--ease) .2s}.cat__eyes{transition:opacity .3s var(--ease) .2s}[data-state=done] .cat__glee{opacity:1}[data-state=done] .cat__eyes{opacity:0}.zone{fill:none;stroke:var(--c-chalk);stroke-width:2;stroke-dasharray:3 12;stroke-linecap:round;opacity:0;transition:opacity .3s var(--ease),stroke .3s var(--ease)}[data-state=live] .zone{opacity:.18}[data-state=live] .zone.is-hot{opacity:.7;stroke:var(--c-petal-2)}.posy{touch-action:none}.js .posy{cursor:grab}.posy:active{cursor:grabbing}[data-state=done] .posy{cursor:default;pointer-events:none}.stem{fill:none;stroke:var(--c-stem);stroke-width:5;stroke-linecap:round}.leaf{fill:var(--c-stem)}.petal ellipse{fill:var(--c-petal);transform-box:fill-box;transform-origin:50% 100%;transform:scale(.88);transition:transform .5s var(--ease);transition-delay:calc(var(--p, 0) * 38ms)}.petal:nth-child(2n) ellipse{fill:var(--c-petal-2)}.eye{fill:var(--c-eye)}[data-state=done] .petal ellipse{transform:scale(1.06)}.posy:focus{outline:none}.posy:focus-visible .eye{stroke:var(--c-chalk);stroke-width:3.5}.posy:focus-visible .petal ellipse{transform:scale(1.02)}.fizz{position:absolute;inset:0;z-index:4;pointer-events:none}.paw{opacity:.96}.hint,.again{position:absolute;left:0;right:0;bottom:clamp(18px,4vh,38px);z-index:5;text-align:center;font-size:.84rem;letter-spacing:.04em;color:var(--c-mute);transition:opacity .4s var(--ease)}.hint{pointer-events:none;display:none}.js .hint{display:block}@media(max-width:900px){.hint,.again{top:66%;bottom:auto}.type__a{font-size:clamp(2.2rem,10vw,6rem)}.type__b{font-size:clamp(3.4rem,19vw,11.5rem)}}[data-state=live] .hint,[data-state=done] .hint{opacity:0}.again{width:fit-content;margin-inline:auto;padding:.58rem 1.4rem;border:1px solid color-mix(in srgb,var(--c-chalk) 26%,transparent);border-radius:999px;background:none;color:var(--c-chalk);font:inherit;font-size:.82rem;letter-spacing:.04em;cursor:pointer;opacity:0;visibility:hidden;transition:opacity .4s var(--ease) .9s,visibility 0s linear 1.3s,border-color .2s}.again:hover{border-color:color-mix(in srgb,var(--c-chalk) 60%,transparent)}.again:focus-visible{outline:2px solid var(--c-petal);outline-offset:4px;border-color:color-mix(in srgb,var(--c-chalk) 60%,transparent)}[data-state=done] .again{opacity:1;visibility:visible;transition:opacity .4s var(--ease) .9s,visibility 0s,border-color .2s}.grain{position:fixed;inset:0;z-index:9;pointer-events:none;background-image:url(/posy/textures/grain.png);background-size:180px;opacity:.045;mix-blend-mode:overlay}@media(prefers-reduced-motion:reduce){.js .type .ch{transition-duration:.28s;transition-delay:0s;transform:none}.type__from{transition-delay:.18s}.petal ellipse{transition-duration:.2s;transition-delay:0s}.grain{display:none}}
