/* Motion references: React Bits Fade Content, Magnet, Click Spark and Star Border.
   Native adaptation for this static game; see REACT-BITS-NOTICE.md. */
*{box-sizing:border-box}html,body{margin:0;min-width:280px;background:#eddec7;color:#50403e}body{font-family:"Microsoft YaHei","PingFang SC",sans-serif;-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button{font:inherit}button,a{touch-action:manipulation}a:focus-visible,button:focus-visible{outline:3px solid #83618f;outline-offset:7px}.welcome{isolation:isolate;position:relative;min-height:760px;height:100svh;overflow:hidden;background:#eddec7}.collage{position:absolute;z-index:-3;inset:0 0 0 auto;width:65%;overflow:hidden}.collage img{width:100%;height:100%;object-fit:cover;object-position:50% 31%;display:block}.collage-soften{position:absolute;inset:0;background:linear-gradient(90deg,#eddec7 0%,#eddec7a6 8%,transparent 30%),linear-gradient(0deg,#eddec74d,transparent 12%)}.paper-light{position:absolute;z-index:-2;inset:0;background:linear-gradient(90deg,#eddec7 0%,#eddec7 26%,#eddec7ee 34%,#eddec7a8 41%,transparent 56%);pointer-events:none}.masthead{position:absolute;top:clamp(26px,5vh,52px);left:5vw;right:4vw;display:flex;align-items:center;justify-content:space-between;z-index:3}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;width:max-content}.brand b{background:#6f557d;color:#f7ebd6;font-size:25px;letter-spacing:-1px;padding:4px 8px 5px;line-height:1.1;border-radius:3px;transform:rotate(-3deg)}.brand>span{font-weight:600;font-size:15px;letter-spacing:2px}.brand small{display:block;letter-spacing:1.3px;font-size:7px;margin-top:4px;font-weight:500;color:#75615c}.motion-switch{display:flex;align-items:center;gap:6px;border:0;background:#eddec7c9;color:#6b535f;border-radius:30px;padding:9px 12px;font-size:12px;cursor:pointer;backdrop-filter:blur(6px)}.motion-switch svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.4}.invitation{position:absolute;z-index:2;left:8vw;top:50%;transform:translateY(-44%);width:48%;max-width:680px}.intro-note{display:flex;align-items:center;gap:9px;font-size:13px;letter-spacing:2px;color:#806e65;margin-bottom:26px}.little-line{width:23px;height:1px;background:#aa8c8c;display:block}h1{font-weight:600;line-height:1.23;letter-spacing:-2px;font-size:clamp(52px,5.5vw,90px);margin:0 0 27px;font-family:"STKaiti","KaiTi","Microsoft YaHei",sans-serif}.title-line{display:block;width:max-content;max-width:100%}.title-purple{position:relative;color:#80618b}.period{margin-left:-.12em}.title-star{position:absolute;right:-.21em;top:-.18em;width:.32em;height:.32em;fill:#ad8b60;stroke:#ad8b60;stroke-width:1;transform:rotate(9deg)}.welcome-copy{font-size:16px;line-height:1.95;margin:0;color:#826e64;letter-spacing:1px}.phone-break{display:none}.entry-actions{margin-top:31px;width:max-content;max-width:100%}.magnetic-area{padding:14px;margin:-14px;display:inline-block;position:relative}.magnetic{will-change:transform}.enter-button{position:relative;display:flex;align-items:center;justify-content:center;gap:36px;min-width:280px;min-height:66px;padding:16px 30px;border-radius:36px;text-decoration:none;background:#876b98;color:#fff0db;box-shadow:0 9px 22px -10px #76588070,inset 0 1px 0 #b6a0c4;font-weight:500;font-size:18px;letter-spacing:2px;transition:background .2s,box-shadow .2s;overflow:hidden}.enter-button:hover{background:#7e5f90;box-shadow:0 13px 28px -10px #7658807d,inset 0 1px 0 #b6a0c4}.enter-button:active{background:#765889}.enter-arrow{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.5;transition:transform .3s}.enter-button:hover .enter-arrow{transform:translateX(3px)}.star-border{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:.65}.star-border rect{fill:none;stroke:#efd6a1;stroke-width:1.3;stroke-linecap:round;stroke-dasharray:5 95;animation:border-wander 9s linear infinite}.entry-note{font-size:11px;color:#937e76;text-align:center;margin:16px 0 0;letter-spacing:1.4px}.entry-note span{padding:0 8px}.handwritten{display:flex;align-items:center;gap:8px;font-family:"STKaiti","KaiTi",serif;font-size:16px;color:#9b8178;letter-spacing:2px;margin-top:24px;margin-left:5px;transform:rotate(-3deg);width:max-content}.handwritten svg{width:44px;height:24px;fill:none;stroke:#aa8b7d;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}.handwritten i{font-style:normal;font-size:22px;color:#9a7e9e}.welcome-footer{position:absolute;bottom:27px;left:5vw;right:4vw;display:flex;justify-content:space-between;align-items:center;color:#99877a;font-size:9px;letter-spacing:2.4px;z-index:2}.welcome-footer small{letter-spacing:1px;font-size:10px;background:#eddec7b5;padding:4px 7px;border-radius:4px}.little-sky{position:absolute;inset:0;pointer-events:none;z-index:1}.twinkle{position:absolute;font-style:normal;line-height:1;color:#b29362;font-size:26px;animation:twinkle 6s ease-in-out infinite}.t1{left:4%;top:32%;animation-delay:-2s;font-size:30px}.t2{left:43%;top:16%;animation-delay:-4s;font-size:13px;color:#9570a1}.t3{left:34%;bottom:18%;animation-delay:-1s;font-size:22px}.t4{right:9%;top:9%;animation-delay:-3s;font-size:13px;color:#886891}.reveal{animation:soft-arrive .85s cubic-bezier(.2,.65,.3,1) both;animation-delay:var(--delay,0ms)}.spark-layer{position:fixed;inset:0;z-index:10;pointer-events:none;overflow:hidden}.click-spark{position:absolute;width:8px;height:8px;background:var(--spark-color,#ac8cba);clip-path:polygon(50% 0,60% 37%,100% 50%,60% 61%,50% 100%,40% 61%,0 50%,40% 37%);pointer-events:none}.sr-only{position:absolute;overflow:hidden;width:1px;height:1px;clip-path:inset(50%);white-space:nowrap}.welcome.leaving{animation:page-away .38s ease-in both;pointer-events:none}.welcome.leaving .enter-button{background:#765485}.welcome.leaving .enter-arrow{transform:translateX(7px)}
@keyframes soft-arrive{from{opacity:0;filter:blur(3px);translate:0 12px}to{opacity:1;filter:blur(0);translate:0 0}}@keyframes border-wander{to{stroke-dashoffset:-100}}@keyframes twinkle{0%,100%{opacity:.28;transform:scale(.85) rotate(-6deg)}50%{opacity:.7;transform:scale(1.06) rotate(6deg)}}@keyframes page-away{to{opacity:0;filter:blur(3px);transform:scale(1.01)}}
body[data-motion="off"] .reveal{animation:none;opacity:1;filter:none;translate:0 0}body[data-motion="off"] .star-border rect,body[data-motion="off"] .twinkle{animation:none}body[data-motion="off"] .twinkle{opacity:.35}body[data-motion="off"] .star-border{opacity:.24}body[data-motion="off"] .welcome.leaving{animation:none}body[data-motion="off"] .enter-arrow{transition:none}.paused *{animation-play-state:paused!important}
@media(min-width:1700px){.collage{width:61%}.paper-light{background:linear-gradient(90deg,#eddec7 0%,#eddec7 32%,#eddec7c9 39%,transparent 56%)}.invitation{left:10vw}}
@media(max-width:1000px) and (min-width:701px){.invitation{left:6vw;width:53%}h1{font-size:clamp(50px,6.5vw,68px)}.collage{width:69%}.paper-light{background:linear-gradient(90deg,#eddec7 0%,#eddec7f0 28%,#eddec7b0 40%,transparent 63%)}.intro-note{font-size:11px;letter-spacing:1px}.welcome-copy{font-size:14px}.enter-button{min-width:250px;gap:26px}}
@media(max-width:700px){.welcome{height:100svh;min-height:680px}.collage{inset:0;width:100%}.collage img{width:100%;height:auto;object-fit:contain;object-position:center top}.collage-soften{background:linear-gradient(180deg,#eddec72e 0%,transparent 10%,transparent 35%,#eddec766 48%,#eddec7ed 68%,#eddec7 89%)}.paper-light{background:linear-gradient(0deg,#eddec7 0%,#eddec7fa 14%,#eddec7cc 32%,#eddec75c 48%,transparent 62%)}.masthead{top:max(22px,env(safe-area-inset-top));left:22px;right:18px}.brand{gap:9px}.brand b{font-size:21px;background:#6f557dea}.brand>span{font-size:13px}.brand small{font-size:6px}.motion-switch{font-size:10px;padding:8px 9px;background:#f1dfc9bf}.motion-switch svg{width:13px}.invitation{left:27px;right:27px;width:auto;max-width:none;top:auto;bottom:max(81px,calc(env(safe-area-inset-bottom) + 60px));transform:none;text-align:center}.intro-note{justify-content:center;font-size:11px;letter-spacing:1.3px;gap:6px;margin-bottom:15px}.little-line{width:17px}h1{font-size:44px;line-height:1.18;letter-spacing:0;margin:0 0 17px}.title-line{display:inline;width:auto}.title-purple{margin-left:-.1em}.title-star{right:-.16em;top:-.26em;width:.29em;height:.29em}.welcome-copy{font-size:13px;line-height:1.8;letter-spacing:.8px}.entry-actions{margin:23px auto 0;width:min(100%,290px)}.magnetic-area{width:calc(100% + 28px)}.enter-button{min-width:0;width:100%;min-height:61px;font-size:16px;letter-spacing:2px;gap:36px;padding:16px 24px}.entry-note{font-size:10px;margin-top:13px}.handwritten{justify-content:center;margin:22px auto 0;font-size:14px;letter-spacing:1px}.handwritten svg{width:35px;height:20px}.welcome-footer{left:22px;right:18px;bottom:max(21px,env(safe-area-inset-bottom));font-size:7px;letter-spacing:1px}.welcome-footer small{font-size:9px}.t1{left:8%;top:52%;font-size:23px}.t2{left:87%;top:48%;font-size:12px}.t3{left:13%;bottom:17%;font-size:15px}.t4{right:11%;top:14%;font-size:11px}}
@media(max-width:380px){h1{font-size:39px}.invitation{left:22px;right:22px}.intro-note{letter-spacing:.7px}}
@media(max-height:700px) and (min-width:701px){.welcome{min-height:580px}.masthead{top:24px}.invitation{transform:translateY(-43%)}h1{font-size:58px;margin-bottom:20px}.intro-note{margin-bottom:18px}.entry-actions{margin-top:21px}.handwritten{margin-top:18px}}
@media(max-height:700px) and (max-width:700px){.welcome{min-height:560px}.invitation{bottom:64px}h1{font-size:36px;margin-bottom:11px}.intro-note{margin-bottom:11px;font-size:10px}.entry-actions{margin-top:17px}.enter-button{min-height:56px}.handwritten{margin-top:14px}.welcome-copy{font-size:12px}.entry-note{margin-top:10px}.welcome-footer{bottom:17px}}
@font-face{font-family:Outfit;src:url('assets/fonts/Outfit.ttf') format('truetype');font-style:normal;font-weight:100 900;font-display:swap}
body{font-family:Outfit,"Trebuchet MS",Arial,sans-serif}.brand>span{font-size:13px;font-weight:500;letter-spacing:1.2px}.brand small{font-size:8px;letter-spacing:1.6px}.intro-note{font-size:10px;letter-spacing:2.7px}h1{font-family:Outfit,"Trebuchet MS",Arial,sans-serif;font-size:clamp(48px,5.5vw,82px);font-weight:500;letter-spacing:-.055em;line-height:1.07;margin-bottom:27px}.title-line{display:block;white-space:nowrap}.title-purple{margin-top:5px}.title-star{right:-.36em;top:-.15em;width:.28em;height:.28em}.welcome-copy{font-size:16px;letter-spacing:.15px;line-height:1.7}.enter-button{font-size:18px;font-weight:500;letter-spacing:.3px}.entry-note{font-size:12px;letter-spacing:.5px}.handwritten{font-family:Outfit,"Trebuchet MS",Arial,sans-serif;font-size:13px;letter-spacing:.1px;transform:none}.motion-switch{font-size:11px;letter-spacing:.2px}.welcome-footer{font-size:9px;letter-spacing:2px}.welcome-footer small{font-size:10px;letter-spacing:.4px}
@media(max-width:1000px) and (min-width:701px){h1{font-size:clamp(46px,5.8vw,60px)}}
@media(max-width:700px){h1{font-size:46px;line-height:1.05;margin-bottom:18px}.title-line{display:block}.title-purple{margin-left:0;margin-top:2px}.title-star{right:.2em;top:-.1em;width:.23em;height:.23em}.intro-note{font-size:9px;letter-spacing:2px;margin-bottom:17px}.welcome-copy{font-size:13px;line-height:1.65}.handwritten{font-size:12px;letter-spacing:0}.entry-note{font-size:11px}.brand>span{font-size:11px;letter-spacing:.6px}.brand small{font-size:6px;letter-spacing:1.5px}.motion-switch{font-size:10px}.entry-actions{margin-top:22px}.welcome-footer{font-size:7px;letter-spacing:1px}}
@media(max-width:380px){h1{font-size:40px}.intro-note{font-size:8px;letter-spacing:1.9px}}
@media(max-height:700px) and (max-width:700px){h1{font-size:36px;margin-bottom:12px}.intro-note{margin-bottom:12px}.welcome-copy{font-size:12px}.handwritten{margin-top:13px}.entry-actions{margin-top:16px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reveal{opacity:1!important;filter:none!important;translate:none!important}.twinkle{opacity:.35}.star-border{opacity:.24}.magnetic{transform:none!important}}
