:root{font-family:DM Sans,sans-serif;color:#f8f4f7;background:#070915;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--muted: #c4bdd0;--pink: #efb9ce;--gold: #f3d99c;--line: rgba(247, 235, 255, .2);--serif: "Playfair Display", Georgia, serif;--typewriter: "Courier New", Courier, monospace}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #ffe8b9;outline-offset:4px}.app{position:relative;isolation:isolate;min-height:100svh;overflow:hidden;background:linear-gradient(90deg,#03051357,#0405141f 48%,#05051440),url(/images/web/portal-nebula-hero.webp) center 48% / cover fixed}.app:before{content:"";position:absolute;z-index:-1;inset:-18%;pointer-events:none;opacity:.23;background:radial-gradient(ellipse at 24% 36%,rgba(135,79,161,.23),transparent 25%),radial-gradient(ellipse at 72% 27%,rgba(66,108,170,.2),transparent 29%),radial-gradient(ellipse at 55% 78%,rgba(181,93,152,.13),transparent 27%);filter:blur(48px);animation:nebula-drift 28s ease-in-out infinite alternate}@keyframes nebula-drift{to{transform:translate3d(2%,-1%,0) scale(1.06)}}.app:after{content:"";position:absolute;z-index:-1;inset:0;background:radial-gradient(ellipse at 52% 48%,transparent 34%,rgba(4,5,18,.12) 77%,rgba(4,5,18,.4));pointer-events:none}.starfield{position:absolute;z-index:-1;inset:0;overflow:hidden;pointer-events:none}.starfield i{position:absolute;width:2px;height:2px;border-radius:50%;background:#fff6e7;box-shadow:0 0 10px 2px #ffebc7a6;animation:twinkle 4.8s ease-in-out infinite}.starfield i:nth-child(3n){width:3px;height:3px;background:#d9c8ff}.starfield i:nth-child(1){top:10%;left:7%}.starfield i:nth-child(2){top:22%;left:82%;animation-delay:-1s}.starfield i:nth-child(3){top:77%;left:15%;animation-delay:-2s}.starfield i:nth-child(4){top:66%;left:91%;animation-delay:-3s}.starfield i:nth-child(5){top:35%;left:66%;animation-delay:-1.7s}.starfield i:nth-child(6){top:88%;left:49%;animation-delay:-.8s}.starfield i:nth-child(7){top:45%;left:5%;animation-delay:-2.5s}.starfield i:nth-child(8){top:9%;left:37%;animation-delay:-3.1s}.starfield i:nth-child(9){top:58%;left:73%;animation-delay:-.4s}.starfield i:nth-child(10){top:29%;left:28%;animation-delay:-2.1s}.starfield i:nth-child(11){top:71%;left:58%;animation-delay:-3.3s}.starfield i:nth-child(12){top:93%;left:27%;animation-delay:-.9s}.starfield i:nth-child(13){top:17%;left:88%;animation-delay:-2.9s}.starfield i:nth-child(14){top:41%;left:48%;animation-delay:-1.3s}.starfield i:nth-child(15){top:7%;left:18%;animation-delay:-2.3s}.starfield i:nth-child(16){top:84%;left:95%;animation-delay:-.6s}.starfield i:nth-child(17){top:54%;left:34%;animation-delay:-1.6s}.starfield i:nth-child(18){top:28%;left:71%;animation-delay:-2.7s}.starfield i:nth-child(19){top:64%;left:89%;animation-delay:-1.1s}.starfield i:nth-child(20){top:38%;left:13%;animation-delay:-3.4s}.starfield i:nth-child(21){top:96%;left:68%;animation-delay:-2s}.starfield i:nth-child(22){top:5%;left:93%;animation-delay:-.7s}.starfield i:nth-child(23){top:75%;left:39%;animation-delay:-2.6s}.starfield i:nth-child(24){top:19%;left:55%;animation-delay:-1.5s}.starfield i:nth-child(25){top:31%;left:95%;animation-delay:-1.9s}.starfield i:nth-child(26){top:81%;left:3%;animation-delay:-.2s}.starfield i:nth-child(27){top:57%;left:53%;animation-delay:-3.6s}.starfield i:nth-child(28){top:12%;left:74%;animation-delay:-1.4s}.starfield i:nth-child(29){top:91%;left:83%;animation-delay:-2.4s}.starfield i:nth-child(30){top:48%;left:25%;animation-delay:-3.1s}@keyframes twinkle{50%{opacity:.25;transform:scale(.7)}}.topbar{position:relative;z-index:4;height:74px;max-width:1440px;margin:auto;padding:0 5vw;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.12)}.brand{text-decoration:none;color:#f6edf2;font-size:10px;font-weight:700;letter-spacing:.2em}.brand-mark{color:var(--gold);font-size:17px;margin-right:10px}.anniversary{color:#ddd4e6;font-size:9px;letter-spacing:.2em}.anniversary span{color:var(--pink);padding-left:8px}.scene{position:relative;width:min(1240px,calc(100% - 80px));min-height:calc(100svh - 96px);margin:0 auto;display:flex;align-items:center}.portal-constellations{position:absolute;z-index:0;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;opacity:.55}.portal-constellation-lines{fill:none;stroke:#adbeff75;stroke-width:1;stroke-dasharray:2 7;filter:drop-shadow(0 0 5px rgba(158,185,255,.55))}.portal-constellation-stars{fill:#f5edda;filter:drop-shadow(0 0 5px rgba(189,207,255,.9))}.portal-constellation-stars circle:nth-child(4n){fill:#ffe4a3;filter:drop-shadow(0 0 8px rgba(255,220,147,.95))}.eyebrow{display:flex;align-items:center;gap:11px;color:#f2ccda;font-size:9px;font-weight:600;letter-spacing:.22em;margin:0 0 22px}.eyebrow-line{display:inline-block;width:26px;height:1px;background:#dfaabd;opacity:.85}h1{margin:0;color:#fff9f8;font:500 clamp(46px,6.2vw,78px)/1.06 var(--serif);letter-spacing:-.035em}h1 em{color:#f0b4cb;font-weight:500}.lead{margin:20px 0 0;max-width:440px;color:#eee4f1;font-size:15px;line-height:1.8}.button{display:inline-flex;align-items:center;justify-content:center;gap:14px;min-height:52px;padding:0 27px;border:0;border-radius:999px;font-size:12px;font-weight:700;cursor:pointer;transition:transform .22s,box-shadow .22s,filter .22s}.button:hover{transform:translateY(-2px);filter:brightness(1.06)}.button-primary{color:#282032;background:linear-gradient(120deg,#f8e2df,#f0bfd0 58%,#f4dda6);box-shadow:0 8px 32px #e1a9c63d}.button-primary span{font-size:16px}.button-quiet{color:#fff5f4;background:linear-gradient(145deg,#fa5c69,#d9274e 70%,#aa193e);border:1px solid rgba(255,232,230,.8);box-shadow:0 7px 24px #db274e61,inset 0 1px #ffffff52}.button-quiet:hover{box-shadow:0 10px 34px #f83b5a94,inset 0 1px #ffffff61}.portal-scene{min-height:calc(100svh - 96px)}.portal-copy{position:relative;z-index:2;width:52%;padding:10px 0 65px 3.5%}.portal-copy h1{max-width:660px;font-size:clamp(44px,5.2vw,68px)}.answer-row{display:flex;align-items:center;gap:18px;margin-top:30px;min-height:76px}.no-button{position:relative;z-index:8;transition:background .22s,left .68s cubic-bezier(.2,.85,.25,1),top .68s cubic-bezier(.2,.85,.25,1),box-shadow .22s}.no-button.in-flight{position:fixed;margin:0;box-shadow:0 12px 38px #08081873}.no-button:hover{transform:none}.cat-response{display:flex;align-items:center;gap:12px;min-height:88px;margin-top:10px;animation:cat-pop .35s ease-out both}.cat-face{width:74px;height:64px;flex:0 0 auto;filter:drop-shadow(0 4px 14px rgba(255,207,222,.2))}.speech-bubble{position:relative;margin:0;padding:12px 17px;border:1px solid rgba(255,225,232,.42);border-radius:18px 18px 18px 4px;background:#f7e8eef2;color:#47344b;font:600 15px var(--serif);box-shadow:0 8px 24px #0907163d}@keyframes cat-pop{0%{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:none}}.portal-art{position:absolute;top:50%;right:4%;width:min(42vw,505px);height:min(75vh,680px);display:grid;place-items:center;transform:translateY(-51%);perspective:1200px}.portal-halo{position:absolute;inset:15%;border-radius:50%;background:radial-gradient(ellipse,rgba(231,179,213,.29),rgba(101,126,198,.12) 43%,transparent 72%);filter:blur(14px)}.portal-door-frame{position:relative;z-index:1;width:66%;height:76%;padding:13px;border-radius:49% 49% 5px 5px;background:linear-gradient(90deg,#574339 0,#d7c6a9 2%,#fffdf2 8%,#e7ddc9 13%,#fffdf4 19%,#d8c7aa 23%,#fffdf2 29%,#eee6d6 75%,#b29b7c 93%,#fff7e6 98%,#59483a);box-shadow:0 0 0 2px #fbecd094,0 0 0 8px #4934353b,0 0 76px #edbedc57,0 30px 78px #0000007a}.door-universe{position:absolute;inset:12px;overflow:hidden;border-radius:48% 48% 1px 1px;background:linear-gradient(#08081c47,#08061b57),url(/images/majestic-nebula.jfif) center 45%/cover}.door-universe:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 23% 29%,#fff 0 1px,transparent 2px),radial-gradient(circle at 71% 39%,#fff8df 0 1px,transparent 2px),radial-gradient(circle at 36% 76%,#dcd1ff 0 1px,transparent 2px),radial-gradient(circle at 82% 71%,#fff 0 1px,transparent 2px);background-size:87px 79px,113px 97px,137px 121px,151px 133px;opacity:.85}.wood-door{position:absolute;z-index:2;inset:11px;transform-origin:3% 50%;border:2px solid #fffaf0;border-radius:47% 47% 2px 2px;overflow:hidden;background:repeating-linear-gradient(91deg,transparent 0 21px,rgba(166,128,88,.065) 22px 23px,transparent 25px 41px),repeating-linear-gradient(2deg,transparent 0 37px,rgba(154,118,82,.055) 38px 39px,transparent 41px 68px),linear-gradient(90deg,#baa689 0,#fffdf5 3%,#f8f3e7 17%,#fffdf8 34%,#eee7d9 50%,#fffdf5 69%,#f3ecdf 87%,#fffdf3 96%,#b6a285);box-shadow:inset 0 0 22px #684d3533,5px 0 18px #0000004d;transition:transform 1.42s cubic-bezier(.62,.04,.22,1),filter 1s}.wood-door:before{content:"";position:absolute;inset:10px;border:1px solid rgba(255,255,255,.94);border-radius:45% 45% 2px 2px;box-shadow:inset 0 0 12px #785f4329,0 0 0 1px #a489682e}.door-board{position:absolute;top:20%;bottom:6%;width:25%;border:1px solid rgba(153,126,95,.28);border-radius:42% 42% 4px 4px;background:linear-gradient(90deg,#aa907133,#fff9 9%,#ffffff47 88%,#987c5c2b),linear-gradient(180deg,#ffffff8c,#d9caaf1f);box-shadow:inset 2px 2px 7px #84694d1f,inset -2px -2px 5px #ffffffd9,0 1px 3px #5b433114}.board-one{left:8%}.board-two{left:37.5%}.board-three{right:8%}.door-star{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);color:#e0b85e;font-size:clamp(39px,5.5vw,64px);text-shadow:0 0 12px #fff2c2,0 0 35px #e8be78;animation:twinkle 3s infinite}.door-knob{position:absolute;right:12%;top:57%;width:10px;height:10px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff8d1,#bb9551 72%);box-shadow:0 1px 4px #82724f}.portal-ground{position:absolute;bottom:8%;width:74%;height:5%;border-radius:50%;background:#e8b7da5c;filter:blur(15px)}.door-opening .wood-door{transform:rotateY(-108deg);filter:brightness(1.12)}.door-opening .portal-door-frame{animation:enter-universe 1.55s ease-in forwards}.door-opening .door-universe{animation:universe-awakens 1.45s ease-out both}.door-opening .portal-halo{animation:halo-awakens 1.55s ease-out both}@keyframes enter-universe{0%,45%{transform:scale(1)}to{transform:scale(1.08);filter:brightness(1.26)}}@keyframes universe-awakens{0%{filter:brightness(.85) saturate(.9)}58%{filter:brightness(1.5) saturate(1.25)}to{filter:brightness(1.22) saturate(1.1)}}@keyframes halo-awakens{0%{opacity:.4;transform:scale(.86)}65%{opacity:1;transform:scale(1.18)}to{opacity:.9;transform:scale(1.08)}}.galaxy-scene{justify-content:space-between;gap:4vw}.galaxy-visual{position:relative;flex:0 1 51%;aspect-ratio:1;max-height:72vh;display:grid;place-items:center;isolation:isolate}.galaxy-visual:before{content:"";position:absolute;inset:0;z-index:-1;border-radius:50%;background:linear-gradient(#08081d0a,#08081d14),url(/images/spiral-galaxy.jfif) center 48%/cover;-webkit-mask-image:radial-gradient(ellipse,#000 40%,transparent 74%);mask-image:radial-gradient(ellipse,#000 40%,transparent 74%)}.galaxy-nebula{position:absolute;inset:15%;border-radius:50%;background:linear-gradient(135deg,#080a1d3d,#08061d66),url(/images/pink-nebula.jfif) center 53%/cover;filter:saturate(1.2);-webkit-mask-image:radial-gradient(ellipse,#000 35%,transparent 75%);mask-image:radial-gradient(ellipse,#000 35%,transparent 75%);mix-blend-mode:screen;opacity:.7}.planet{position:absolute;z-index:2;display:block;border-radius:50%;box-shadow:inset -12px -9px 18px #0507138f,0 0 26px #b1c3ff3d}.planet-one{width:clamp(44px,6vw,74px);aspect-ratio:1;right:10%;top:16%;background:radial-gradient(ellipse at 32% 29%,#e9cba9,#bc806f 48%,#55375b 72%,#111528)}.planet-one:after{content:"";position:absolute;left:-22%;right:-22%;top:37%;height:25%;border:3px solid rgba(233,209,187,.66);border-radius:50%;transform:rotate(-24deg)}.planet-two{width:clamp(30px,4vw,48px);aspect-ratio:1;left:11%;top:31%;background:radial-gradient(circle at 34% 29%,#d9ecf2,#72b3c5 43%,#263a69 78%)}.astronaut-cats{position:absolute;z-index:4;width:clamp(190px,27vw,330px);height:auto;left:12%;bottom:-7%;filter:drop-shadow(0 13px 20px rgba(5,6,22,.55));transform-origin:50% 85%;animation:kitten-starlight 6.4s ease-in-out infinite}@keyframes kitten-starlight{0%,to{transform:translateZ(0) rotate(-2deg)}50%{transform:translate3d(0,-14px,0) rotate(2deg)}}.galaxy-orbit{position:absolute;width:92%;height:33%;border:1px solid rgba(239,218,240,.57);border-radius:50%;transform:rotate(-27deg);box-shadow:0 0 22px #dec0f024}.orbit-two{width:78%;height:28%;transform:rotate(34deg);border-color:#f1ccb166}.galaxy-core{position:relative;color:#fff0c8;font-size:clamp(55px,8vw,100px);text-shadow:0 0 24px #fff,0 0 55px #edbada;animation:core-glow 4s ease-in-out infinite alternate}@keyframes core-glow{to{transform:scale(1.16);filter:brightness(1.35)}}.text-panel{width:44%;padding:30px 3% 40px 0}.text-panel h1{font-size:clamp(45px,5.5vw,70px)}.poem-text,.poem-placeholder{min-height:190px;margin:28px 0 25px;padding:22px 25px;border-left:1px solid rgba(240,192,214,.65);color:#eee3f1;font:500 17px/1.9 var(--serif);white-space:pre-line}.poem-placeholder{display:flex;align-items:center;color:#cbb8d7;font:600 9px DM Sans,sans-serif;letter-spacing:.18em;background:linear-gradient(90deg,rgba(246,217,235,.08),transparent)}.rocket{display:inline-block;font-size:20px!important;transform:rotate(-35deg)}.book-scene{flex-direction:column;justify-content:center;padding:32px 0 42px}.book-cover{position:relative;isolation:isolate;width:clamp(260px,29vw,380px);aspect-ratio:2/3;margin:auto;padding:0;overflow:hidden;border:1px solid rgba(255,236,188,.8);border-radius:8px 18px 18px 8px;color:#fff6e6;text-align:center;background:#111127;box-shadow:0 24px 75px #0000008f,0 0 0 7px #f5daab1a,inset 8px 0 10px #ffffff29;cursor:pointer;transform:perspective(1100px) rotateY(-5deg);transition:transform .55s cubic-bezier(.2,.8,.25,1),box-shadow .55s}.book-cover:hover{transform:perspective(1100px) rotateY(0) translateY(-7px) scale(1.015);box-shadow:0 34px 90px #00000094,0 0 0 8px #f5daab29,0 0 55px #d0a5dd33}.book-cover-art{position:absolute;z-index:-1;inset:0;background:linear-gradient(180deg,#0d0a1f05 22%,#0c081c2e 47%,#080718e0),url(/images/web/black-cat-moon-cover.webp) center 43%/cover}.book-cover:before{content:"";position:absolute;z-index:1;inset:0 auto 0 0;width:23px;border-right:1px solid rgba(255,240,206,.55);background:linear-gradient(90deg,#371f2ee6,#f2d39d73 18%,#24182b40 53%,#0a081c6b);box-shadow:4px 0 12px #00000038}.book-cover:after{content:"";position:absolute;inset:10px;border:1px solid rgba(247,224,174,.42);border-radius:4px 13px 13px 4px;pointer-events:none}.book-cover-title{position:absolute;left:12%;right:8%;bottom:23%;font:500 clamp(28px,3.2vw,42px)/1.1 var(--serif);letter-spacing:.01em;text-shadow:0 3px 22px rgba(0,0,0,.8)}.book-cover-dedication{position:absolute;left:12%;right:8%;bottom:16%;color:#f1d6a7;font:600 9px DM Sans,sans-serif;letter-spacing:.18em;text-transform:uppercase;text-shadow:0 2px 12px #080716}.book-cover-hint{position:absolute;left:0;right:0;bottom:6%;font:600 8px DM Sans,sans-serif;letter-spacing:.17em;text-transform:uppercase;color:#fff6e1d6}.book-cover-hint span{color:#ffe5a2;padding-left:6px}.book-spread{width:min(1080px,100%);perspective:1600px;filter:drop-shadow(0 25px 45px rgba(0,0,0,.4))}.book-open-pages{position:relative;display:grid;grid-template-columns:.68fr 1fr;gap:0;min-height:min(60svh,610px);padding:12px;border:1px solid rgba(249,230,195,.78);border-radius:12px 20px 20px 12px;background:linear-gradient(90deg,#aa8b69 0,#f0e4d0 1.5%,#fbf3e5 4%,#e8dac3 48.7%,#ae9272 50%,#f4e8d6 51.5%,#fff8ec 96%,#ad8e6f);box-shadow:inset 0 0 0 4px #ffffff59,0 8px 24px #00000040;animation:book-opens .82s cubic-bezier(.18,.78,.25,1) both;transform-origin:left center}@keyframes book-opens{0%{opacity:.55;transform:perspective(1500px) rotateY(-20deg) scaleX(.84);filter:brightness(.76)}to{opacity:1;transform:perspective(1500px) rotateY(0) scaleX(1);filter:none}}.book-left-page{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;padding:30px;text-align:center;color:#67536b;background:linear-gradient(90deg,#f8f0e3,#f4ead8 84%,#e1d1bb);box-shadow:inset -18px 0 24px -22px #49303594}.book-left-page:before,.book-left-page:after{content:"✧";position:absolute;color:#b28a66;font-size:18px;opacity:.72}.book-left-page:before{top:22px;left:22px}.book-left-page:after{bottom:22px;right:22px}.book-left-page>p{margin:20px 0;color:#6e5872;font:500 clamp(20px,2.5vw,32px)/1.55 var(--serif)}.book-left-page .book-verse{white-space:pre-line}.book-verse-space{min-height:140px;display:grid;place-items:center;color:#bd9c7c;letter-spacing:.7em}.book-ending-art{padding:50px 25px 80px;text-align:center;color:#765b78;max-width:460px}.book-ending-art h2{margin:15px 0 20px;font:500 clamp(27px,3.4vw,43px)/1.15 var(--serif)}.book-ending-art p{white-space:pre-line;font:500 18px/1.8 var(--serif);margin:0 0 25px}.ending-crescent{color:#b18a54;font-size:80px;line-height:1;text-shadow:0 0 25px rgba(238,201,128,.6)}.book-page-ornament,.book-page-number{color:#bb9561;font-size:24px}.book-photo-page{position:relative;height:min(60svh,585px);min-height:380px;overflow:hidden;display:grid;place-items:center;padding:18px;background:linear-gradient(90deg,#e8dac3,#fff8ec 10%,#faf1e3 93%,#d3c0a5);box-shadow:inset 18px 0 24px -22px #493035a8;transform-origin:left center;backface-visibility:hidden}.book-photo-page:after{content:"";position:absolute;z-index:1;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(76,50,52,.12),transparent 8%),linear-gradient(180deg,rgba(49,34,46,.1),transparent 18%,transparent 82%,rgba(49,34,46,.15))}.book-photo-page img{position:absolute;inset:18px;width:auto;height:auto;max-width:calc(100% - 36px);max-height:calc(100% - 36px);object-fit:contain;background:#191327;box-shadow:0 8px 24px #31222e3d}.page-kicker{position:absolute;z-index:2;top:22px;left:24px;padding:8px 11px;border:1px solid rgba(255,255,255,.47);border-radius:999px;color:#fff8e8;font-size:8px;letter-spacing:.16em;text-transform:uppercase;background:#19112285;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.page-kicker i{padding:0 8px;font-style:normal}.book-controls{position:absolute;z-index:2;left:0;right:0;bottom:17px;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:0 24px}.page-control{display:inline-flex;align-items:center;gap:10px;padding:12px 15px;border:1px solid rgba(255,255,255,.27);border-radius:999px;background:#0c0a1c6e;color:#fff7f5;font-size:10px;font-weight:600;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.page-control:hover:not(:disabled){color:#ffe0ec;background:#894e7b9e}.page-control:disabled{opacity:.35;cursor:default}.book-continue{margin-top:19px}.flip-forward .book-photo-page{animation:turn-forward .72s cubic-bezier(.36,.06,.26,1) both}.flip-backward .book-photo-page{transform-origin:left center;animation:turn-backward .72s cubic-bezier(.36,.06,.26,1) both}@keyframes turn-forward{0%{transform:rotateY(65deg);opacity:.5;filter:brightness(.75)}70%{transform:rotateY(-8deg);opacity:1}to{transform:rotateY(0);filter:none}}@keyframes turn-backward{0%{transform:rotateY(-65deg);opacity:.5;filter:brightness(.75)}70%{transform:rotateY(8deg);opacity:1}to{transform:rotateY(0);filter:none}}.star-scene{justify-content:space-between;gap:5%}.star-copy{width:39%;padding:0 0 20px 2%;z-index:1}.star-copy h1{font-size:clamp(42px,5.4vw,68px)}.star-copy .lead{color:#dbcee4}.star-copy>.button{margin-top:19px}.star-reveal{min-height:138px;margin-top:22px}.star-reveal h2{margin:0 0 7px;color:#ffe2ad;font:500 30px var(--serif)}.star-reveal p{margin:0;color:#e2d5e8;font-size:12px;line-height:1.7}.detail-list{display:flex;flex-wrap:wrap;gap:8px 15px;margin-top:12px;color:#c3b1d0;font-size:9px}.sky-board{position:relative;width:min(60%,700px);aspect-ratio:1.15;overflow:hidden;border:1px solid rgba(233,213,244,.26);border-radius:50%;background:linear-gradient(#06081c61,#07081d7a),url(/images/andromeda-planets.jfif) center 48%/cover;box-shadow:inset 0 0 90px #030412a6,0 0 85px #9e97e726}.sky-board:after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.65;background:radial-gradient(circle at 14% 31%,#fff 0 1px,transparent 2px),radial-gradient(circle at 84% 33%,#fff 0 1px,transparent 2px),radial-gradient(circle at 68% 84%,#fff2d0 0 1px,transparent 2px),radial-gradient(circle at 29% 76%,#d5d1ff 0 1px,transparent 2px);background-size:79px 71px,101px 89px,127px 113px,149px 131px}.sky-board:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 45% 50%,transparent 24%,rgba(6,7,24,.5) 78%)}.reference-sky{position:absolute;inset:8%;width:84%;height:84%;object-fit:contain;z-index:1}.constellation-art{position:absolute;z-index:1;inset:2%;width:96%;height:96%;overflow:visible}.constellation-lines path{fill:none;stroke:#e5deff9e;stroke-width:1.1;stroke-dasharray:2 5;filter:drop-shadow(0 0 4px #bdc9ff)}.constellation-dots circle{fill:#fff4d3;filter:drop-shadow(0 0 5px #e8d7ff)}.moon{position:absolute;z-index:2;top:14%;right:17%;width:clamp(55px,9vw,98px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 32% 30%,#fffef0,#eee4c7 56%,#b7a9c1);box-shadow:0 0 35px #f6ebcd8c,inset -9px -9px 17px #574d733b}.moon:after{content:"";position:absolute;inset:4px -9px 3px 16px;border-radius:50%;background:#111027;opacity:.6;filter:blur(2px)}.ana-star{position:absolute;z-index:3;left:51%;top:47%;display:flex;flex-direction:column;align-items:center;gap:5px;border:0;background:none;color:#fff1c8;cursor:pointer;transform:translate(-50%,-50%)}.ana-star i{font-size:clamp(35px,5vw,58px);font-style:normal;line-height:1;text-shadow:0 0 11px #fff,0 0 35px #f5d68e,0 0 62px #ceb2ff;animation:named-star 3.5s ease-in-out infinite alternate}.ana-star span{color:#fff4de;font:600 10px DM Sans,sans-serif;letter-spacing:.14em;text-shadow:0 0 9px #171125}.ana-star.selected i{color:#fff;transform:scale(1.24)}@keyframes named-star{to{filter:brightness(1.45);transform:scale(1.17)}}.sky-note{position:absolute;z-index:2;left:50%;bottom:12%;transform:translate(-50%);width:max-content;max-width:82%;color:#e7def1bf;font-size:8px;letter-spacing:.14em;text-align:center}.date-scene{justify-content:center;gap:8%;padding:38px 0 45px}.date-visual{width:min(34vw,390px);display:flex;flex-direction:column;align-items:center;gap:24px}.realistic-moon{display:block;width:100%;height:auto;filter:drop-shadow(0 0 42px rgba(226,231,255,.27))}.moon-caption{color:#eee3ef;text-align:center;font:italic 21px/1.6 var(--serif);text-shadow:0 2px 14px #080916}.date-card{width:min(510px,53%);padding:30px 34px;border:1px solid rgba(255,233,246,.26);border-radius:20px;background:linear-gradient(145deg,#1a162df2,#0a0c1eed);box-shadow:0 24px 80px #00000059;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.date-card .eyebrow{margin-bottom:13px}.date-card h1{font-size:clamp(36px,3.8vw,49px)}.date-card .lead{margin:12px 0 20px;font-size:13px}.calendar{border:1px solid rgba(242,220,239,.2);border-radius:13px;padding:10px;background:#ffffff06}.calendar-header{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:0 0 8px}.calendar-header>span{text-transform:capitalize;font:500 20px var(--serif);color:#f7dfeb}.calendar-header button{width:36px;height:36px;border:1px solid rgba(255,255,255,.17);border-radius:50%;background:#ffffff0a;color:#ffe4f1;font-size:25px;cursor:pointer}.calendar-header button:disabled{opacity:.25;cursor:default}.calendar-weekdays,.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;text-align:center}.calendar-weekdays{color:#c6adc8;font-size:10px;line-height:28px}.calendar-days button{min-height:36px;padding:4px;border:1px solid transparent;border-radius:9px;background:transparent;color:#f6eef6;font-size:13px;cursor:pointer}.calendar-days button:hover:not(:disabled){background:#efb9ce29;border-color:#efb9ce4d}.calendar-days button.selected{background:linear-gradient(140deg,#ffe2df,#eab7d1);color:#38253e;border-color:#fff1df;box-shadow:0 3px 16px #eba8cc40;font-weight:700}.calendar-days button:disabled{color:#6e667e;cursor:default}.date-summary{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 2px;color:#c8b5cd;font-size:11px}.date-summary strong{color:#ffe3ef;font-size:13px;font-weight:500}.time-picker{display:flex;align-items:flex-end;justify-content:center;gap:12px;margin:0 0 20px;padding:13px 18px 16px;border:1px solid rgba(242,220,239,.2);border-radius:13px}.time-picker legend{padding:0 8px;color:#d5bfd9;font-size:11px}.time-picker label{display:grid;gap:7px;color:#bfa7c7;font-size:10px}.time-picker select{width:94px;padding:10px 12px;border:1px solid rgba(238,220,243,.3);border-radius:9px;background:#29243c;color:#fff2f6;font-size:21px;letter-spacing:.08em;color-scheme:dark}.time-picker select:focus-visible{outline:3px solid #ffe8b9;outline-offset:3px}.time-separator{padding-bottom:11px;font-size:23px;color:#dcbfd9}.date-confirm{width:100%}.date-confirm:disabled{opacity:.45;cursor:default;transform:none;filter:none}.invitation-scene{isolation:isolate;flex-direction:column;justify-content:center;padding:22px 0 40px}.heart-invitation{position:relative;width:min(710px,100%);aspect-ratio:800/720;filter:drop-shadow(0 20px 60px rgba(5,5,20,.46));animation:invitation-arrives .9s cubic-bezier(.2,.8,.25,1) both}.heart-paper{position:absolute;inset:0;width:100%;height:100%}.invitation-copy{position:absolute;top:27%;left:17%;right:17%;text-align:center;color:#73465f}.invitation-copy .eyebrow{display:block;margin:0 0 12px;font-size:9px;letter-spacing:.18em;color:#915b79}.invitation-copy h1{color:#643e5b;font-size:clamp(27px,4.5vw,48px);line-height:1.08;letter-spacing:-.025em;outline:none}.invitation-copy>p:not(.eyebrow){margin:17px 0;color:#82556f;font:500 21px/1.55 var(--serif)}.invitation-copy time{display:block;color:#80516b;font-size:15px;line-height:1.5}.invitation-copy time strong{display:block;margin-top:4px;color:#603c5b;font:500 29px var(--serif)}.invitation-seal{display:block;margin-top:15px;color:#b0778d;font-size:26px}.invitation-kittens{position:absolute;left:-3%;bottom:1%;width:31%;height:auto;filter:drop-shadow(0 8px 17px rgba(30,16,39,.2));animation:kitten-starlight 6s ease-in-out infinite}.invitation-confetti{position:absolute;z-index:-1;inset:0;pointer-events:none}.invitation-confetti span{position:absolute;font-size:23px;color:#f7d7e7;text-shadow:0 0 16px #e4badc;animation:invitation-sparkle 4s ease-in-out infinite}.invitation-edit{margin:8px 0 22px;padding:10px 17px;border:1px solid rgba(255,235,246,.25);border-radius:999px;background:#0a0a1c80;font-size:12px}.final-extra{width:min(480px,100%);border:1px solid rgba(247,214,235,.45);border-radius:13px;background:#100e23de;box-shadow:0 16px 40px #00000038}.final-extra summary{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 22px;cursor:pointer;list-style:none;color:#fae3ef;font:500 22px var(--serif)}.final-extra summary::-webkit-details-marker{display:none}.envelope-icon{display:grid;place-items:center;width:45px;height:33px;border:1px solid #d7b4c4;border-radius:4px;color:#835777;font:20px var(--serif);background:linear-gradient(150deg,#fae9df,#e5bfd2);box-shadow:inset 0 -10px #be8ca821}.final-extra-paper{margin:0 16px 16px;padding:25px;border-radius:7px;background:#f6e9e2;color:#795570;text-align:center;font:19px/1.7 var(--serif);white-space:pre-line}.final-extra-paper>span{color:#b38b60}.final-extra-paper p{margin:12px 0 0}@keyframes invitation-arrives{0%{opacity:0;transform:translateY(20px) scale(.94) rotate(-2deg)}to{opacity:1;transform:none}}@keyframes invitation-sparkle{50%{opacity:.3;transform:translateY(-14px) rotate(10deg)}}.bottom-nav{position:relative;z-index:2;width:min(1240px,calc(100% - 80px));margin:-7px auto 0;padding:0 3% 20px;display:flex;justify-content:space-between;align-items:center}.text-button{padding:11px 0;border:0;background:none;color:#e1d6e7;font-size:10px;cursor:pointer}.text-button:hover{color:#fff}.nav-spacer{width:70px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.no-final-overlay{position:fixed;z-index:10;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1vh;padding:5vh 5vw;background:radial-gradient(ellipse at 50% 38%,#53407bf7,#08081bfc 70%),radial-gradient(ellipse at 18% 75%,rgba(124,67,137,.28),transparent 38%);text-align:center;animation:final-arrive .55s ease-out both}@keyframes final-arrive{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.final-yes-button{width:min(86vw,1120px);min-height:min(57vh,560px);border:2px solid rgba(255,244,218,.7);border-radius:34px;color:#33233d;background:linear-gradient(130deg,#ffe9e3,#efb8d2 52%,#f8dfa1);box-shadow:0 0 80px #ffdae966,inset 0 0 32px #ffffffb3;font:600 clamp(88px,19vw,230px)/1 var(--serif);letter-spacing:.04em;cursor:pointer;transition:transform .2s,box-shadow .2s}.final-yes-button:hover{transform:scale(1.015);box-shadow:0 0 110px #ffdae994}.final-kitty{display:flex;align-items:center;gap:12px;color:#ffe9d4}.final-kitty .cat-face{width:68px;height:58px}.final-kitty p{margin:0;font:500 clamp(23px,3vw,36px) var(--serif)}@media(max-width:760px){.app{background-attachment:scroll;background-position:58% center}.topbar{height:62px;padding:0 20px}.brand{font-size:8px;letter-spacing:.13em}.brand-mark{margin-right:6px}.anniversary{font-size:7px;letter-spacing:.1em}.scene{width:calc(100% - 36px);min-height:calc(100svh - 78px)}.portal-scene{align-items:flex-start;min-height:calc(100svh - 78px)}.portal-copy{width:100%;padding:9vh 3% 38vh}.portal-copy h1{max-width:540px;font-size:clamp(43px,11.5vw,66px)}.portal-copy .lead{max-width:330px;font-size:13px}.portal-art{top:auto;right:-8%;bottom:-7%;width:min(83vw,380px);height:min(62vh,510px);transform:none;opacity:.95}.portal-door-frame{width:53%;height:80%}.answer-row{position:relative;align-items:center;gap:11px;margin-top:23px}.button{min-height:48px;padding:0 21px}.no-button{font-size:11px}.cat-response{margin-top:5px}.cat-face{width:62px;height:54px}.speech-bubble{font-size:13px}.galaxy-scene{flex-direction:column;justify-content:center;align-items:stretch;gap:0;padding:10px 0 35px}.galaxy-visual{flex:none;width:min(78vw,370px);max-height:none;margin:0 auto -5vh}.text-panel{width:100%;padding:0 4% 24px}.text-panel h1{font-size:47px}.poem-text,.poem-placeholder{min-height:145px;margin:19px 0;font-size:15px}.book-scene{justify-content:center;padding:25px 0 38px}.book-cover{width:min(70vw,370px)}.book-spread{width:100%}.book-open-pages{grid-template-columns:1fr;min-height:0;padding:8px;border-radius:12px}.book-left-page{display:none}.book-photo-page{height:min(57svh,600px);min-height:0;border-radius:5px;box-shadow:inset 0 0 0 1px #97785a24}.book-photo-page .page-kicker{top:12px;left:12px;font-size:8px}.book-controls{bottom:10px;padding:0 10px}.page-control{font-size:9px;gap:6px;padding:10px 12px}.book-continue{margin-top:13px}.star-scene{flex-direction:column;justify-content:center;align-items:stretch;gap:10px;padding:20px 0 28px}.star-copy{width:100%;padding:0 3%}.star-copy h1{font-size:45px}.star-reveal{min-height:60px;margin-top:12px}.star-copy>.button{margin-top:5px}.sky-board{align-self:center;width:min(88vw,490px);aspect-ratio:1.05;margin-top:2px}.sky-note{font-size:7px}.date-scene{flex-direction:column;justify-content:center;gap:22px;padding:25px 0 35px}.date-visual{width:min(46vw,230px);margin:0 auto;gap:10px}.moon-caption{font-size:16px}.date-card{width:100%;padding:25px 20px}.date-card h1{font-size:38px}.calendar-days button{min-height:38px}.calendar-header>span{font-size:19px}.invitation-scene{padding:30px 0 35px}.heart-invitation{aspect-ratio:auto;min-height:440px}.invitation-copy{top:26%;left:15%;right:15%}.invitation-copy .eyebrow{font-size:7px;margin-bottom:11px}.invitation-copy h1{font-size:30px}.invitation-copy>p:not(.eyebrow){font-size:17px;margin:13px 0}.invitation-copy time{font-size:12px}.invitation-copy time strong{font-size:25px}.invitation-seal{margin-top:10px}.invitation-kittens{width:32%;left:-2%;bottom:2%}.final-extra summary{padding:17px;font-size:20px}.invitation-edit{margin:10px 0 23px}.bottom-nav{width:calc(100% - 36px);margin-top:-3px;padding:0 3% 12px}.final-yes-button{width:92vw;min-height:52vh;border-radius:24px;font-size:clamp(86px,23vw,150px)}.final-kitty .cat-face{width:55px;height:50px}}@media(max-width:760px){.book-left-page.has-verse{display:flex;padding:18px 24px;gap:5px}.book-left-page.has-verse>p{margin:3px 0;font-size:20px;line-height:1.5}.book-left-page.has-verse .book-page-ornament,.book-left-page.has-verse .book-page-number{font-size:15px}.book-ending-art{padding:45px 18px 65px}.book-ending-art h2{font-size:32px}.book-ending-art p{font-size:17px}}.galaxy-scene{gap:4%;padding:35px 0 45px}.galaxy-visual{flex-basis:39%}.text-panel.poem-sheet{position:relative;width:57%;padding:38px 40px 30px;border:1px solid #dfcdb2;border-radius:3px 13px 4px 8px;color:#4d3c48;background:linear-gradient(105deg,#f9f1e2,#f3e8d5 70%,#e9dcc6);box-shadow:0 22px 65px #03041266,inset 0 0 32px #aa855314}.poem-sheet:before{content:"";position:absolute;inset:12px;border:1px solid rgba(157,122,83,.18);border-radius:2px 7px 2px 5px;pointer-events:none}.poem-sheet .eyebrow{color:#8b6579}.poem-sheet .eyebrow-line{background:#b28b8d}.poem-sheet h1{color:#624762;font-size:clamp(37px,4.5vw,57px)}.poem-sheet .poem-text{min-height:0;padding:0;margin:24px 0 27px;border:0;color:#51414a;font:400 clamp(14px,1.2vw,16px)/1.9 var(--typewriter);white-space:pre-line;overflow-wrap:break-word}.poem-sheet .button{position:relative;border:1px solid rgba(134,82,115,.18);box-shadow:0 5px 20px #7d556924}.book-spread{--book-height:clamp(520px,68svh,670px)}.book-open-pages{grid-template-columns:1fr 1fr;min-height:0}.book-left-page{height:var(--book-height);padding:28px 34px;gap:17px}.book-photo-page{height:var(--book-height);min-height:0}.book-photo-page img{inset:22px 22px 73px;width:calc(100% - 44px);height:calc(100% - 95px);max-width:none;max-height:none;background:transparent;box-shadow:none}.fitted-page-text{--reading-max:22;--reading-min:15;flex:1;min-height:0;width:100%;display:flex;align-items:center;justify-content:center;color:#493b47;font-family:var(--typewriter);font-size:22px;line-height:1.55;text-align:left;overflow-wrap:break-word}.fitted-page-text p{width:100%;margin:0;font:inherit;white-space:pre-line}.intro-page .fitted-page-text{--reading-max:26;text-align:center}.book-page-ornament,.book-page-number{flex:none}.book-left-page.closing-letter-page{display:flex;gap:15px}.closing-letter-page h2{margin:0;color:#6a4a60;font:600 23px/1.4 var(--typewriter);text-align:left}.closing-spread .book-photo-page.closing-letter-right{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:15px;padding:36px 34px 76px}.closing-signature{flex:none;margin:5px 0 0;color:#8e5c73;font:600 17px/1.5 var(--typewriter);text-align:right}.book-next-chapter{width:min(650px,100%);margin-top:24px}.book-next-chapter .final-extra-paper{font-family:var(--typewriter);font-size:17px;line-height:1.8}.star-scene{display:grid;grid-template-columns:minmax(0,.83fr) minmax(0,1.17fr);gap:38px;padding:35px 0}.star-copy{width:100%;padding:0}.star-copy h1{font-size:clamp(39px,4.5vw,59px)}.star-copy .lead{color:#fbf0f5;font-size:16px;text-shadow:0 2px 15px #050714}.star-reveal{min-height:0;margin-top:0;outline:none}.star-reveal.revealed{margin-top:23px;padding:22px 24px;border:1px solid #ebd6b8;border-radius:14px;background:linear-gradient(130deg,#fff4e7,#f1e1d1);box-shadow:0 16px 46px #0505144d;animation:cat-pop .35s ease-out both}.star-reveal.revealed h2{color:#67415e;font-size:36px;margin-bottom:12px}.star-reveal.revealed>p{color:#675266;font-size:15px}.star-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0}.star-facts>div{min-width:0;padding:12px;border:1px solid rgba(133,99,99,.16);border-radius:8px;background:#ffffff85}.star-facts>div:last-child{grid-column:1/-1}.star-facts dt{margin:0 0 5px;color:#85677d;font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.star-facts dd{margin:0;color:#51334d;font-size:clamp(17px,1.7vw,23px);font-weight:600;line-height:1.4;overflow-wrap:break-word}.sky-board.reference-map{width:100%;aspect-ratio:1354/652;border-radius:16px;border:1px solid rgba(240,215,180,.52);background:#03040b;box-shadow:0 18px 70px #0000006b,0 0 45px #c2b5df1a}.reference-map:before,.reference-map:after{display:none}.reference-map .reference-sky{inset:0;width:100%;height:100%;object-fit:contain}.reference-map .ana-star{left:80%;top:72%;min-width:54px;min-height:54px}.reference-map .ana-star i{font-size:clamp(23px,3vw,37px)}.reference-map .ana-star span{padding:4px 10px;border:1px solid rgba(255,227,178,.38);border-radius:999px;color:#fff4d8;background:#080717d1;font-size:12px;font-weight:700}@media(min-width:761px)and (max-width:1000px){.book-spread{--book-height:680px}.book-left-page{padding-left:28px;padding-right:28px;gap:13px}.closing-spread .book-photo-page.closing-letter-right{padding-left:28px;padding-right:28px}}@media(max-width:760px){.galaxy-scene{gap:30px;padding:15px 0 35px}.galaxy-visual{width:min(73vw,320px);margin:0 auto}.text-panel.poem-sheet{width:100%;padding:30px 26px 25px}.poem-sheet .poem-text{font-size:14px;line-height:1.9;margin:21px 0}.poem-sheet h1{font-size:43px}.book-open-pages{grid-template-columns:1fr}.book-left-page.has-verse,.book-left-page.closing-letter-page{display:flex;height:auto;min-height:170px;padding:25px 26px;gap:15px}.fitted-page-text{--reading-max:18;--reading-min:16;flex:none;min-height:0;height:auto;line-height:1.7}.intro-page .fitted-page-text{--reading-max:23}.book-photo-page{height:clamp(360px,58svh,600px)}.book-photo-page img{inset:15px 15px 65px;width:calc(100% - 30px);height:calc(100% - 80px)}.closing-spread .book-photo-page.closing-letter-right{height:auto;min-height:350px;padding:28px 26px 80px}.closing-letter-page h2{font-size:22px}.closing-signature{font-size:17px}.star-scene{grid-template-columns:1fr;gap:24px;padding:26px 0 35px}.star-copy{padding:0 3%}.star-copy h1{font-size:44px}.star-copy>.button{margin-top:20px}.star-reveal.revealed{padding:20px;margin-top:22px}.star-facts dd{font-size:20px}.sky-board.reference-map{width:100%;aspect-ratio:1354/652;margin:0}.reference-map .ana-star i{font-size:26px}.reference-map .ana-star span{font-size:10px}.book-next-chapter .final-extra-paper{font-size:16px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}button,a,select,summary{touch-action:manipulation}.page-control,.calendar-header button,.calendar-days button{min-height:44px}.calendar-header button{min-width:44px}@media(max-width:360px){.topbar{padding:0 12px;gap:10px}.brand{letter-spacing:.07em}.anniversary{white-space:nowrap}.time-picker{padding-left:10px;padding-right:10px;gap:9px}.time-picker select{width:82px}.star-facts{grid-template-columns:1fr}}
