:root{--bg:#e6e0d6;--bg-deep:#d8d0c3;--paper:#f4f0ea;--stone:#b8ad9e;--taupe:#9a8d7d;--clay:#b58f74;--sage:#a3a68f;--ink:#35302b;--ink-soft:#6b6258;--flame:#f2b25c;--serif:"Fraunces", Georgia, serif;--sans:"Inter Tight", system-ui, sans-serif;--ease:cubic-bezier(.22, 1, .36, 1)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:50;opacity:.35;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.4 0 0 0 0 0.37 0 0 0 0 0.33 0 0 0 .18 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}button{font:inherit;color:inherit}.eyebrow{letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 1rem;font-size:.75rem}.pill{border:1px solid var(--ink);background:var(--ink);color:var(--paper);cursor:pointer;transition:transform .3s var(--ease), background .3s;border-radius:999px;padding:.7rem 1.3rem;font-size:.9rem}.pill:hover{transform:translateY(-2px)}.pill.ghost{color:var(--ink);background:0 0}.pill[disabled]{opacity:.5;cursor:default;transform:none}.menu-btn{z-index:43;background:var(--paper);cursor:pointer;width:44px;height:44px;transition:transform .3s var(--ease);border:1px solid #35302b33;border-radius:50%;flex:none;place-content:center;gap:4px;display:grid;position:relative}.menu-btn:hover{transform:scale(1.06)}.menu-btn:focus-visible{outline:2px dashed var(--ink-soft);outline-offset:3px}.menu-btn.floating{top:max(16px, env(safe-area-inset-top));position:fixed;right:16px}.menu-btn span{background:var(--ink);width:18px;height:1.5px;transition:transform .35s var(--ease), opacity .2s;border-radius:1px;display:block}.menu-close{top:max(16px, env(safe-area-inset-top));position:absolute;right:16px}.menu-close span:first-child{transform:translateY(2.75px)rotate(45deg)}.menu-close span:nth-child(2){transform:translateY(-2.75px)rotate(-45deg)}.menu-open{overflow:hidden}.menu-backdrop{z-index:44;opacity:0;visibility:hidden;transition:opacity .4s var(--ease), visibility .4s;background:#35302b40;position:fixed;inset:0}.menu-open .menu-backdrop{opacity:1;visibility:visible}.menu-panel{z-index:45;background:var(--paper);visibility:hidden;width:min(100%,360px);transition:transform .5s var(--ease), visibility .5s;padding:5.5rem 1.6rem 2rem;position:fixed;top:0;bottom:0;right:0;overflow-y:auto;transform:translate(100%);box-shadow:-10px 0 40px #35302b1f}.menu-open .menu-panel{visibility:visible;transform:none}.menu-panel ul{margin:0;padding:0;list-style:none}.menu-panel ul+.eyebrow{border-top:1px solid #35302b26;margin-top:1.6rem;padding-top:1.4rem}.menu-panel a{color:var(--ink);font-family:var(--serif);transition:color .2s, transform .3s var(--ease);align-items:baseline;gap:.8rem;padding:.55rem 0;font-size:1.35rem;line-height:1.2;text-decoration:none;display:flex}.menu-panel a:hover{color:var(--clay);transform:translate(4px)}.menu-panel a[aria-current=page]{color:var(--clay);font-style:italic}.menu-panel a.done:after{content:"✦";color:var(--clay);margin-left:auto;font-size:.9rem}.menu-num{font-family:var(--sans);font-variant-numeric:tabular-nums;letter-spacing:.15em;color:var(--ink-soft);font-size:.72rem}body.locked{height:100dvh;overflow:hidden}body.locked .menu-btn{display:none}#confetti{pointer-events:none;z-index:40;width:100%;height:100%;position:fixed;inset:0}.hint{color:var(--ink-soft);margin-top:1.25rem;font-size:.9rem;animation:2.4s ease-in-out infinite breathe}@keyframes breathe{50%{opacity:.45}}.gift-scene{z-index:30;text-align:center;background:radial-gradient(ellipse at 50% 45%, var(--paper) 0%, var(--bg) 55%, var(--bg-deep) 100%);transition:opacity .9s var(--ease), visibility .9s;place-content:center;justify-items:center;padding:16px;display:grid;position:fixed;inset:0}.gift-scene.gone{opacity:0;visibility:hidden}.gift{cursor:pointer;background:0 0;border:0;width:min(70vw,300px);padding:0;animation:3.2s ease-in-out infinite wobble}.gift:focus-visible{outline:2px dashed var(--ink-soft);outline-offset:12px;border-radius:12px}.gift svg{width:100%;overflow:visible}@keyframes wobble{0%,70%,to{transform:rotate(0)}75%{transform:rotate(-3deg)}80%{transform:rotate(3deg)}85%{transform:rotate(-2deg)}90%{transform:rotate(1deg)}}.paper{fill:var(--stone)}.paper-lid{fill:var(--taupe)}.crease{stroke:#35302b14;stroke-width:2px}.ribbon{fill:var(--clay)}.ribbon-knot{fill:#a07c62}.gift-shadow{fill:#35302b24}.gift-lid,.bow{transform-box:fill-box;transform-origin:bottom;transition:transform .9s var(--ease), opacity .6s}.gift.opening{animation:none}.gift.opening .bow{opacity:0;transition-duration:.45s;transform:scale(0)rotate(40deg)}.gift.opening .gift-lid{opacity:0;transition-delay:.3s;transform:translate(40px,-180px)rotate(28deg)}main{opacity:0;transition:opacity 1.2s var(--ease) .3s}main.shown{opacity:1}section{padding:clamp(4rem,12vh,8rem) 16px}.section-head{text-align:center;max-width:36rem;margin:0 auto 2.5rem}h2{font-family:var(--serif);letter-spacing:-.02em;margin:0;font-size:clamp(2.4rem,7vw,4.2rem);font-weight:400;line-height:1}.lede{color:var(--ink-soft);margin:1rem 0 0}.hero{text-align:center;place-content:center;min-height:100dvh;display:grid;position:relative}.issue{letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 2rem;font-size:.8rem}.headline{font-family:var(--serif);letter-spacing:-.045em;font-variation-settings:"opsz" 144;margin:0;font-size:clamp(4.2rem,18vw,13rem);font-weight:300;line-height:.88}.headline .line{display:block}.headline .italic{color:var(--clay);padding-left:.5em;font-style:italic}.headline .sub{letter-spacing:-.02em;white-space:pre-wrap;margin-top:.35em;font-size:max(.3em,1.5rem);line-height:1.1}.headline .ch{opacity:0;transition:transform 1.1s var(--ease), opacity .8s;display:inline-block;transform:translateY(110%)rotate(8deg)}.shown .headline .ch{opacity:1;transform:none}.headline .ch:hover{color:var(--taupe);transition-duration:.3s;transform:translateY(-6px)rotate(-4deg)}.to{font-family:var(--serif);color:var(--ink-soft);margin:1.6rem 0 0;font-size:clamp(1.3rem,3.5vw,2rem);font-style:italic}.countdown{letter-spacing:.15em;text-transform:uppercase;color:var(--ink-soft);border:1px solid #35302b40;border-radius:999px;justify-self:center;margin:1.4rem 0 0;padding:.45rem 1rem;font-size:.8rem}.scroll-cue{letter-spacing:.15em;text-transform:uppercase;color:var(--ink-soft);white-space:nowrap;font-size:.8rem;text-decoration:none;position:absolute;bottom:2rem;left:50%;transform:translate(-50%)}.scroll-cue:after{content:"↓";text-align:center;margin-top:.4rem;animation:1.6s ease-in-out infinite bob;display:block}@keyframes bob{50%{transform:translateY(6px)}}.marquee{background:var(--paper);border-block:1px solid #35302b33;padding:1rem 0;overflow:hidden}.marquee-track{width:max-content;animation:40s linear infinite marquee;display:flex}.marquee span{font-family:var(--serif);white-space:nowrap;padding-right:.5em;font-size:clamp(1.3rem,3vw,2rem);font-style:italic}@keyframes marquee{to{transform:translate(-50%)}}.facts{background:#35302b2e;border:1px solid #35302b2e;grid-template-columns:repeat(auto-fit,minmax(min(100%,11rem),1fr));gap:1px;max-width:860px;margin:0 auto;display:grid}.fact{background:var(--bg);text-align:center;flex-direction:column-reverse;gap:.6rem;padding:1.6rem 1.2rem;display:flex}.fact dt{letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);font-size:.72rem}.fact dd{font-family:var(--serif);letter-spacing:-.02em;overflow-wrap:anywhere;margin:0;font-size:clamp(1.8rem,4.5vw,2.6rem);line-height:1}.fact dd.tabular{font-variant-numeric:tabular-nums;font-size:clamp(1.4rem,3.4vw,1.9rem)}.facts-foot{text-align:center;color:var(--ink-soft);font-family:var(--serif);margin:1.6rem 0 0;font-style:italic}#golden em{color:var(--clay);font-family:var(--serif)}.cake-wrap{justify-items:center;gap:1.2rem;display:grid}#cakeSvg{width:min(92vw,460px);overflow:visible}.plate{fill:var(--paper)}.plate-shadow{fill:#35302b1f}.tier-1{fill:var(--stone)}.tier-2{fill:var(--taupe)}.drip{fill:var(--paper)}.candle-number{font-family:var(--serif);fill:var(--paper);stroke:var(--clay);stroke-width:2.5px;paint-order:stroke;font-size:64px;font-weight:500}.wick{stroke:var(--ink);stroke-width:1.6px;stroke-linecap:round}.candle{cursor:pointer}.flame{fill:var(--flame);transform-box:fill-box;transform-origin:bottom;transition:opacity .3s,transform .3s;animation:.18s ease-in-out infinite alternate flicker}.flame-core{fill:#fff6e3}.glow{fill:var(--flame);opacity:.25;filter:blur(6px);transition:opacity .3s}@keyframes flicker{0%{transform:scale(1)skew(-2deg)}to{transform:scale(.94,1.08)skew(3deg)}}.candle.out .flame,.candle.out .flame-core,.candle.out .glow{opacity:0;animation:none;transform:scale(.2)}.smoke{fill:none;stroke:var(--taupe);stroke-width:2px;stroke-linecap:round;opacity:0}.candle.out .smoke{animation:1.8s ease-out forwards smoke}@keyframes smoke{0%{opacity:.7;transform:translateY(0)}to{opacity:0;transform:translateY(-30px)}}.wish-msg{font-family:var(--serif);text-align:center;min-height:2rem;margin:0;font-size:1.5rem;font-style:italic}.section-head{position:relative}.stamp{width:4.6rem;height:4.6rem;font-family:var(--serif);color:#35302b59;border:1.5px dashed #35302b4d;border-radius:50%;place-items:center;margin-top:1.4rem;font-size:.95rem;font-style:italic;text-decoration:none;transition:color .3s,border-color .3s;display:inline-grid;transform:rotate(-8deg)}.stamp.done{border:2px solid var(--clay);color:var(--clay);box-shadow:inset 0 0 0 4px var(--bg), inset 0 0 0 5px var(--clay);animation:stamp-in .5s var(--ease)}@keyframes stamp-in{0%{opacity:0;transform:scale(1.8)rotate(-20deg)}}body.locked .tracker{display:none}.tracker{left:50%;bottom:max(16px, env(safe-area-inset-bottom));z-index:35;background:var(--paper);letter-spacing:.1em;color:var(--ink-soft);cursor:pointer;transition:opacity .4s, translate .4s var(--ease);border:1px solid #35302b33;border-radius:999px;align-items:center;gap:.7rem;padding:.55rem 1rem;font-size:.8rem;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 6px 20px #35302b1a}.tracker.away{opacity:0;pointer-events:none;translate:0 12px}.tracker-dots{gap:.35rem;display:flex}.tracker-dots span{border:1.5px dashed #35302b59;border-radius:50%;width:10px;height:10px;transition:background .3s,border-color .3s}.tracker-dots span.done{background:var(--clay);border:1.5px solid var(--clay);animation:stamp-in .5s var(--ease)}.tracker.complete{color:var(--clay)}.finale-scene{justify-items:center;padding-bottom:8rem;display:grid}.passport{background:var(--paper);text-align:center;border-radius:14px;width:min(100%,26rem);padding:1.6rem 1.6rem 1.4rem;box-shadow:0 14px 40px #35302b1f}.passport-head{letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 1rem;font-size:.75rem}.passport-stamps{flex-wrap:wrap;justify-content:center;gap:.4rem 1.2rem;max-width:17rem;margin:0 auto;display:flex}.passport-stamps .stamp{margin-top:.4rem}.passport-stamps .stamp:nth-child(2n){transform:rotate(7deg)}.passport-stamps .stamp.done{box-shadow:inset 0 0 0 4px var(--paper), inset 0 0 0 5px var(--clay)}.passport-sign{font-family:var(--serif);color:var(--clay);visibility:hidden;margin:1.4rem 0 0;font-style:italic}.passport.complete .passport-sign{visibility:visible;animation:rise .7s var(--ease)}@keyframes rise{0%{opacity:0;transform:translateY(16px)}}.day-scene{background:var(--bg-deep)}.newspaper{background:var(--paper);border-radius:4px;max-width:760px;margin:0 auto;padding:clamp(1.2rem,4vw,2.2rem);transform:rotate(-.6deg);box-shadow:0 14px 40px #35302b1f}.np-mast{border-bottom:3px double var(--ink);text-align:center;padding-bottom:.8rem}.np-meta{letter-spacing:.15em;text-transform:uppercase;color:var(--ink-soft);border-bottom:1px solid #35302b4d;flex-wrap:wrap;justify-content:space-between;gap:.2rem 1rem;margin:0 0 .6rem;padding-bottom:.5rem;font-size:.68rem;display:flex}.np-title{font-family:var(--serif);letter-spacing:-.03em;margin:0;font-size:clamp(2rem,7vw,3.4rem);font-weight:600;line-height:1}.np-headline{font-family:var(--serif);text-align:center;letter-spacing:-.02em;margin:1.3rem 0 .4rem;font-size:clamp(1.6rem,5vw,2.5rem);font-weight:500;line-height:1.05}.np-dek{text-align:center;max-width:34rem;font-family:var(--serif);color:var(--ink-soft);margin:0 auto 1.4rem;font-style:italic}.np-cols{columns:15rem;column-rule:1px solid #35302b33;column-gap:1.6rem}.np-item{break-inside:avoid;margin:0 0 1.1rem}.np-item h4{letter-spacing:.2em;text-transform:uppercase;color:var(--clay);margin:0 0 .25rem;font-size:.7rem}.np-item p{font-family:var(--serif);margin:0;font-size:1rem;line-height:1.45}.day-sub,.twins h3{font-family:var(--serif);text-align:center;margin:4.5rem 0 1.6rem;font-size:clamp(1.6rem,4.5vw,2.2rem);font-weight:400}.timeline{gap:.6rem;max-width:40rem;margin:0 auto;padding:0;list-style:none;display:grid}.year-card{text-align:left;cursor:pointer;width:100%;transition:background .3s, border-color .3s, transform .3s var(--ease);background:0 0;border:1px dashed #35302b4d;border-radius:12px;grid-template-columns:4.6rem 1fr;align-items:baseline;gap:1rem;padding:.9rem 1.1rem;display:grid}.year-card:hover{transform:translate(4px)}.year-card:focus-visible{outline:2px dashed var(--ink-soft);outline-offset:3px}.year-card .year{font-family:var(--serif);color:var(--clay);font-variant-numeric:tabular-nums;font-size:1.5rem;line-height:1}.year-card .event{color:#35302b59;letter-spacing:.1em;text-transform:uppercase;font-size:.85rem}.year-card.revealed{background:var(--paper);cursor:default;border:1px solid #0000;transform:none}.year-card.you .year{font-weight:600}.year-card.you.revealed{background:var(--clay)}.year-card.you.revealed .year,.year-card.you.revealed .event{color:var(--paper)}.year-card.revealed .event{color:var(--ink);font-family:var(--serif);letter-spacing:0;text-transform:none;animation:rise .6s var(--ease);font-size:1.05rem;line-height:1.45}.twins{text-align:center;max-width:44rem;animation:rise .8s var(--ease);margin:0 auto}.twins h3{margin-bottom:0}.twins ul{background:#35302b2e;border:1px solid #35302b2e;grid-template-columns:repeat(auto-fit,minmax(min(100%,12.5rem),1fr));gap:1px;margin:1.6rem 0 0;padding:0;list-style:none;display:grid}.twins li{background:var(--bg);gap:.2rem;padding:1rem;display:grid}.twins strong{font-family:var(--serif);font-size:1.15rem;font-weight:500}.twins span{color:var(--ink-soft);font-size:.85rem}.deck-scene{background:var(--bg-deep);justify-items:center;display:grid}.deck{width:min(100%,30rem);margin-bottom:1.6rem;position:relative}.deck:before,.deck:after{content:"";background:var(--paper);opacity:.6;border-radius:14px;position:absolute;inset:0;transform:rotate(-3deg)translateY(8px)}.deck:after{opacity:.35;transform:rotate(4deg)translateY(14px)}.deck-card{z-index:1;background:var(--paper);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:14px;flex-direction:column;gap:1rem;min-height:13rem;margin:0;padding:1.6rem 1.6rem 1.8rem;display:flex;position:relative;box-shadow:0 10px 30px #35302b1a}.deck-card.flip{animation:flip-in .55s var(--ease)}@keyframes flip-in{0%{opacity:0;transform:rotateY(70deg)translate(30px)}}.deck-num{letter-spacing:.2em;text-transform:uppercase;color:var(--clay);font-size:.72rem}.deck-text{font-family:var(--serif);font-size:clamp(1.25rem,3.2vw,1.6rem);line-height:1.35}.planets{flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:1.5rem;max-width:980px;margin:0 auto;padding:0;list-style:none;display:flex}.planet{--size:50px;--c:var(--stone);cursor:pointer;text-align:center;background:0 0;border:0;justify-items:center;gap:.35rem;width:9.5rem;padding:.4rem;display:grid}.planet:focus-visible{outline:2px dashed var(--ink-soft);outline-offset:4px;border-radius:12px}.orb{width:var(--size);height:var(--size);margin:calc((84px - var(--size)) / 2) 0 calc((84px - var(--size)) / 2 + .4rem);background:radial-gradient(circle at 32% 30%, #ffffff80, transparent 45%), var(--c);transition:transform .4s var(--ease);border-radius:50%;animation:5s ease-in-out infinite drift;box-shadow:0 8px 20px #35302b26}.planet:hover .orb{transform:scale(1.08)}.planets li:nth-child(2n) .orb{animation-delay:-2.5s}@keyframes drift{50%{translate:0 -6px}}.planet-name{letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);font-size:.75rem}.planet-age{font-family:var(--serif);font-size:1.5rem;line-height:1.1}.planet:not(.revealed) .planet-age{color:#35302b4d}.planet-note{color:var(--ink-soft);font-size:.85rem;line-height:1.4}.planet.revealed .planet-age,.planet.revealed .planet-note{animation:rise .6s var(--ease)}.rough{text-align:center;max-width:36rem;animation:rise .8s var(--ease);margin:3.5rem auto 0}.rough h3{font-family:var(--serif);margin:0 0 1.2rem;font-size:1.6rem;font-weight:400}.rough ul{color:var(--ink-soft);gap:.7rem;margin:0;padding:0;list-style:none;display:grid}.rough strong{font-family:var(--serif);color:var(--ink);font-size:1.25rem;font-weight:500}.footer{color:var(--ink-soft);justify-items:center;gap:1rem;padding:4rem 16px 6rem;font-size:.85rem;display:grid}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
