.ty{--bg:#fbf6ec;--bg-2:#efe9d6;--ink:#33291f;--soft:#7a6a58;--accent:#b9492f;--leaf:#5c8a44;--bloom:#f2a7b8;--paper:#fffdf6;--line:#e6dcc6;--pot:#c4673f;--bark:#7a5236;min-height:100svh;color:var(--ink);background:linear-gradient(180deg, var(--bg) 0%, var(--bg-2) 50%, var(--bg) 100%);text-align:center;font-family:Fraunces Variable,Georgia,serif;font-size:1.08rem;overflow-x:clip}.ty[data-theme=blossom]{--bg:#fdf3f1;--bg-2:#f9dfe2;--soft:#8a6470;--accent:#b23f63;--bloom:#f58aa6;--line:#f0d3d8}.ty section{padding:4rem 1.25rem;position:relative}.ty :where(p,h1,h2,ol,figure){margin:0}.ty :where(h1,h2){color:inherit}.ty :where(button){font:inherit;-webkit-tap-highlight-color:transparent}.ty button:focus-visible{outline:3px solid var(--accent);outline-offset:5px}.ty-eyebrow{color:var(--accent);letter-spacing:.2em;text-transform:uppercase;font-size:.8rem;font-weight:650}.ty-subhead{font-size:clamp(1.75rem,7.2vw,2.4rem);font-weight:600;line-height:1.12}.ty-sprig{width:9rem;color:var(--leaf);margin:0 auto 2rem;display:block}.ty-opening{grid-template-rows:auto 1fr auto;place-items:center;gap:.5rem;min-height:100svh;display:grid;padding-top:2.2rem!important;padding-bottom:2.2rem!important}.ty-heading{min-height:8.5rem}.ty-title{margin-top:.7rem;font-size:clamp(2.2rem,min(11.5vw,8svh),4.2rem);font-weight:650;line-height:1.05}.ty-title span{color:var(--accent);overflow-wrap:anywhere;font-style:italic}.ty-title-quiet{color:var(--soft);font-style:italic;font-weight:500}.ty-tagline{max-width:22rem;color:var(--soft);margin:.7rem auto 0;font-size:clamp(1.05rem,4.6vw,1.3rem)}.ty-stage{width:min(86vw,22rem,38svh);position:relative}.ty-tree{width:100%;display:block;overflow:visible}.ty-shadow{fill:#3c28141f}.ty-pot{fill:var(--pot)}.ty-pot-rim{fill:#d9814f}.ty-sprout{fill:var(--leaf);stroke:var(--leaf);stroke-width:2.5px;stroke-linecap:round;transition:opacity .4s .6s}.ty-tree.grown .ty-sprout{opacity:0}.ty-trunk,.ty-branch{fill:none;stroke:var(--bark);stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1px}.ty-trunk{--d:.25s;stroke-width:15px}.ty-branch{stroke-width:7px}.ty-trunk,.ty-branch{opacity:0;transition:stroke-dashoffset 1s cubic-bezier(.3, .7, .3, 1) var(--d), opacity 50ms var(--d)}.ty-tree.grown .ty-trunk,.ty-tree.grown .ty-branch{opacity:1;stroke-dashoffset:0}.ty-leaf{transform-box:fill-box;transform-origin:50%;transition:transform .7s cubic-bezier(.2, 1.5, .4, 1) var(--d);transform:scale(0)}.ty-blossom{fill:var(--bloom)}.ty-tree.grown .ty-leaf{transform:scale(1)}.ty-tree.grown .ty-canopy{transform-box:fill-box;transform-origin:50% 100%;animation:7s ease-in-out 3s infinite ty-sway}.ty-ring,.ty-ring:after{aspect-ratio:1;border:2px solid var(--accent);pointer-events:none;border-radius:50%;width:46%;animation:2s ease-out infinite ty-ping;position:absolute;bottom:-2%;left:50%;translate:-50%}.ty-ring:after{content:"";width:100%;animation-delay:1s;bottom:-2px}.ty-drops{pointer-events:none;width:30%;height:34%;position:absolute;bottom:22%;left:50%;translate:-50%}.ty-drops i{opacity:0;background:#6fb3d9;border-radius:50%/62% 62% 38% 38%;width:9px;height:13px;animation:.7s ease-in forwards ty-drop;position:absolute;top:0}.ty-drops i:first-child{left:20%}.ty-drops i:nth-child(2){animation-delay:.12s;left:48%}.ty-drops i:nth-child(3){animation-delay:.24s;left:74%}.ty-water{background:var(--accent);color:#fff;min-height:3.4rem;box-shadow:0 14px 30px -12px var(--accent);cursor:pointer;border:0;border-radius:999px;align-items:center;gap:.55rem;padding:0 1.6rem;font-size:1.15rem;font-weight:650;animation:1.6s ease-in-out infinite ty-bob;display:inline-flex}.ty-water svg{fill:#cfe9f7;width:1.3rem}.ty-scroll{min-height:3.4rem;color:var(--accent);font-size:1.5rem;line-height:3.4rem;animation:1.8s ease-in-out infinite ty-bob}.ty-prints{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.2rem .9rem;max-width:26rem;margin:2.4rem auto 0;display:grid}.ty-prints[data-count="1"]{grid-template-columns:minmax(0,16rem);justify-content:center}.ty-prints[data-count="3"] .ty-print:last-child{grid-column:1/-1;justify-self:center;width:calc(50% - .45rem)}.ty-print{background:#fff;border-radius:4px;padding:7px 7px 0;box-shadow:0 1px 2px #3c28141f,0 22px 36px -22px #3c281480}.ty-print img{aspect-ratio:4/5;object-fit:cover;border-radius:2px;width:100%;display:block}.ty-print figcaption{color:var(--ink);padding:.35rem 0 .5rem;font-family:Caveat,cursive;font-size:1.45rem;font-weight:700;line-height:1.1}.ty-print img:last-child{margin-bottom:7px}.ty-thanks ol{gap:1rem;max-width:27rem;margin:2.4rem auto 0;padding:0;list-style:none;display:grid}.ty-thanks li{border:1px solid var(--line);background:var(--paper);text-align:left;opacity:.35;border-radius:16px;grid-template-columns:2.6rem 1fr;align-items:center;gap:.9rem;padding:1rem 1.1rem;transition:opacity .7s,transform .7s cubic-bezier(.2,.8,.3,1);display:grid;transform:translateY(14px);box-shadow:0 14px 26px -22px #3c281480}.ty-thanks li.seen{opacity:1;transform:none}.ty-thanks li svg{width:100%;transition:transform .7s cubic-bezier(.2,1.6,.4,1) .15s;transform:scale(.3)rotate(-30deg)}.ty-thanks li.seen svg{transform:scale(1)rotate(0)}.ty-thanks li svg path:first-child{fill:var(--leaf)}.ty-thanks li svg path:last-child{fill:none;stroke:#ffffff8c;stroke-width:1.6px;stroke-linecap:round}.ty-thanks p{font-size:1.12rem;line-height:1.4}.ty-lessons ol{gap:1.1rem;max-width:24rem;margin:2.4rem auto 0;padding:0;list-style:none;display:grid}.ty-lessons li{background:linear-gradient(#e9a9a0, #e9a9a0) 0 2.5rem / 100% 1.5px no-repeat, repeating-linear-gradient(180deg, transparent 0 1.85rem, #d7e3ee 1.85rem calc(1.85rem + 1px)) 0 2.5rem, var(--paper);text-align:left;border-radius:4px;padding:1rem 1.2rem 1.2rem;box-shadow:0 1px 2px #3c28141f,0 18px 30px -22px #3c28148c}.ty-lessons span{color:var(--accent);letter-spacing:.18em;text-transform:uppercase;font-size:.74rem;font-weight:650;line-height:1.5rem;display:block}.ty-lessons p{margin-top:.75rem;font-family:Caveat,cursive;font-size:1.6rem;font-weight:500;line-height:1.85rem}.ty-letter article{border:1px solid var(--line);background:var(--paper);text-align:left;border-radius:6px;max-width:30rem;margin:0 auto;padding:2.3rem 1.6rem 2rem;box-shadow:0 30px 50px -34px #3c281499}.ty-dear{font-family:Caveat,cursive;font-size:2rem;font-weight:700}.ty-message{white-space:pre-line;margin-top:.9rem;font-size:1.12rem;line-height:1.75}.ty-sign{text-align:right;margin-top:1.4rem;font-family:Caveat,cursive;font-size:1.8rem;font-weight:700}.ty-hug-stage{place-items:center;margin-top:2.4rem;padding-top:8rem;display:grid;position:relative}.ty-hug-button{background:var(--accent);color:#fff;min-height:4rem;box-shadow:0 16px 32px -14px var(--accent);cursor:pointer;touch-action:manipulation;border:0;border-radius:999px;align-items:center;gap:.6rem;padding:0 2rem;font-size:1.25rem;font-weight:650;transition:transform .15s;display:inline-flex}.ty-hug-button:active{transform:scale(.95)}.ty-hug-button span{font-size:1.4rem}.ty-hearts{pointer-events:none;width:100%;position:absolute;bottom:2rem;left:0}.ty-hearts i{bottom:0;left:calc(50% + var(--x));color:var(--accent);opacity:0;animation:ty-float 1.5s ease-out var(--d) forwards;font-size:1.8rem;font-style:normal;position:absolute}.ty-hearts i:nth-child(2n){color:var(--bloom);font-size:1.3rem}.ty-hug-line{min-height:2.4rem;color:var(--accent);margin-top:1.2rem;font-family:Caveat,cursive;font-size:1.7rem;font-weight:700}.ty-finale{align-content:center;justify-items:center;gap:.4rem;min-height:90svh;display:grid;padding-bottom:4.5rem!important}.ty-finale .ty-stage{width:min(70vw,17rem,40svh);margin-bottom:1.4rem}.ty-from{color:var(--accent);overflow-wrap:anywhere;font-family:Caveat,cursive;font-size:clamp(2.8rem,13vw,4.6rem);font-weight:700;line-height:1.05}.ty-made{width:100%;color:var(--soft);letter-spacing:.16em;text-transform:uppercase;opacity:.75;font-size:.72rem;position:absolute;bottom:1.2rem;left:0}@keyframes ty-sway{0%,to{transform:rotate(-1.2deg)}50%{transform:rotate(1.2deg)}}@keyframes ty-ping{0%{opacity:.85;scale:.7}to{opacity:0;scale:1.25}}@keyframes ty-drop{0%{opacity:1;transform:translateY(0)}85%{opacity:1}to{opacity:0;transform:translateY(650%)}}@keyframes ty-bob{0%,to{transform:translateY(0)}50%{transform:translateY(6px)}}@keyframes ty-float{0%{opacity:0;transform:translate(-50%)scale(.5)}15%{opacity:1}to{opacity:0;transform:translate(-50%,-9rem)scale(1.25)}}@media (prefers-reduced-motion:reduce){.ty-tree.grown .ty-canopy,.ty-ring,.ty-ring:after,.ty-water,.ty-scroll{animation:none}}
