:root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#663747;background:#f8e4e9;font-synthesis:none;--rose:#c64069;--muted:#a77d89;--line:#f0dce3}
*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer}button,a,input{-webkit-tap-highlight-color:transparent}button{border:0}button:focus-visible,input:focus-visible,article:focus-visible{outline:3px solid #b02d60;outline-offset:4px}[hidden]{display:none!important}.screen{height:100svh;min-height:620px;position:relative;overflow:hidden}.cover{background:#fde7ec}.hero-art{position:absolute;height:100%;width:57%;right:0;object-fit:cover;object-position:50% 62%}.cover-wash{position:absolute;inset:0;background:linear-gradient(90deg,#fff3f4 0%,#ffedf0 30%,#ffedf0ee 42%,#ffedf000 67%)}.brand{position:absolute;left:6.5%;top:5.5%;display:flex;gap:12px;align-items:center;font-size:14px;letter-spacing:2px;font-weight:600}.brand img{width:44px;height:44px;mix-blend-mode:multiply;border-radius:50%}.brand span{display:block;font-size:10px;font-weight:400;letter-spacing:3px;margin-top:5px;color:#ae7d89}.hero-copy{position:absolute;left:10%;top:25%;width:48%;max-width:650px}.eyebrow{font-size:12px;letter-spacing:5px;color:#b86980;display:flex;align-items:center;gap:12px;margin:0 0 24px}.eyebrow>span{height:1px;width:30px;background:#c17b91}h1{font-family:"Songti SC","STSong","Noto Serif CJK SC",serif;font-weight:700;font-size:clamp(44px,4.5vw,74px);line-height:1.45;margin:0;letter-spacing:5px;color:#ae2952}h1>span{display:block;font-size:.82em}h1 b{font-weight:700;color:#cc4b70}.title-slash{font-family:Georgia,serif;font-weight:400;color:#dca3b1;font-size:.8em}.title-rule{display:flex;align-items:center;gap:12px;width:235px;margin:24px 0 18px;color:#cc8199}.title-rule i{height:1px;background:#dfb5c1;flex:1}.hero-subtitle{font-size:14px;line-height:2;letter-spacing:3px;color:#a76c7f;margin:0 0 25px}.enter-button{background:#b9345d;color:white;min-height:52px;padding:0 26px;border-radius:30px;font-size:14px;letter-spacing:2px;box-shadow:0 9px 25px #c64c7127;transition:transform .2s,background .2s}.enter-button span{margin-left:38px;font-size:22px;font-weight:300}.enter-button:hover{transform:translateY(-3px);background:#a92c54}.guest-invitation{font-size:11px;color:#b28795;letter-spacing:1px;margin-top:15px}.organizers{position:absolute;left:6.5%;bottom:5%;font-size:11px;line-height:2;color:#916c79;letter-spacing:.5px}.organizers p{margin:2px 0}.organizers p>span{color:#b0788b;margin-right:12px}.organizers em{font-style:normal;margin-left:61px}.scroll-hint{position:absolute;bottom:5%;left:54%;background:none;color:#af7187;font-size:24px;display:grid;gap:2px}.scroll-hint span{font-size:10px;letter-spacing:3px}.cover-page{position:absolute;bottom:5%;right:5%;font-size:12px;letter-spacing:3px;color:#ad758b}.cover-page i{font-style:normal;margin:0 8px;opacity:.5}
@media(min-width:1600px){.hero-copy{top:28%}.hero-art{object-fit:contain;background:#f8d5e4}.cover-wash{background:linear-gradient(90deg,#fff3f4 0%,#ffedf0 40%,#ffedf000 70%)}}
@media(max-width:700px){.screen{min-height:0}.cover{min-height:600px}.hero-art{width:100%;height:100%;object-position:center center}.cover-wash{background:linear-gradient(180deg,#fff2f400 0%,#fff2f400 22%,#ffedf02e 35%,#ffedf000 62%,#fff3f400 82%,#fff6f3ed 96%)}.brand{top:max(19px,env(safe-area-inset-top));left:22px;font-size:11px;gap:9px;letter-spacing:1.5px}.brand img{width:33px;height:33px}.brand span{font-size:8px;letter-spacing:1px;margin-top:4px}.hero-copy{left:0;top:23%;width:100%;max-width:none;text-align:center}.eyebrow{font-size:9px;letter-spacing:4px;justify-content:center;gap:9px;margin:0 0 13px}.eyebrow>span{width:18px}h1{font-size:clamp(34px,10.5vw,51px);line-height:1.45;letter-spacing:3px;text-shadow:0 2px 15px #fffa}h1>span{font-size:.85em}.title-rule{width:145px;margin:10px auto 8px;gap:8px;font-size:12px}.hero-subtitle{font-size:10px;line-height:1.9;letter-spacing:3px;margin:0 0 15px}.enter-button{min-height:43px;padding:0 22px;font-size:12px;letter-spacing:2px}.enter-button span{margin-left:25px;font-size:20px}.guest-invitation{font-size:9px;margin-top:9px;letter-spacing:1px}.organizers{left:0;right:0;bottom:max(17px,env(safe-area-inset-bottom));text-align:center;font-size:8px;line-height:1.8;letter-spacing:0}.organizers p>span{margin-right:7px}.organizers em{margin-left:40px}.scroll-hint{display:none}.cover-page{right:18px;bottom:84px;font-size:8px;letter-spacing:1px}.cover-page i{margin:0 4px}}
@media(max-width:700px) and (max-height:730px){.cover{min-height:560px}.hero-copy{top:22%}.hero-subtitle{display:none}.title-rule{margin-bottom:12px}h1{font-size:36px}.brand{top:16px}}

/* Use layout alignment instead of text glyph baselines for button arrows. */
.enter-button { display:inline-flex; align-items:center; justify-content:center; gap:30px; line-height:1.4; }
.enter-button .button-label { margin:0; font-size:inherit; font-weight:inherit; line-height:1.4; }
.enter-button svg { display:block; width:23px; height:23px; fill:none; stroke:currentColor; stroke-width:1.8; flex-shrink:0; }
.cover .scroll-hint { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px; left:50%; bottom:max(98px,calc(env(safe-area-inset-bottom) + 90px)); transform:translateX(-50%); padding:8px 16px; line-height:1.4; z-index:1; color:#b15b7a; }
.cover .scroll-hint > span:last-child { font-size:9px; letter-spacing:2px; white-space:nowrap; }
.up-arrows { display:flex; flex-direction:column; align-items:center; gap:0; height:20px; animation:swipe-up 1.7s infinite ease-in-out; }
.up-arrows i { display:block; width:11px; height:11px; border-top:1.5px solid currentColor; border-left:1.5px solid currentColor; transform:rotate(45deg); }
.up-arrows i + i { margin-top:-4px; opacity:.5; }
@keyframes swipe-up { 0% { transform:translateY(7px); opacity:.3; } 30%,60% { opacity:1; } 100% { transform:translateY(-6px); opacity:.3; } }
@media(max-width:700px) { .enter-button { gap:25px; min-height:46px; } .enter-button svg { width:20px; height:20px; } }
html,body { height:100%; overflow:hidden; }
#app { height:100svh; overflow-x:hidden; overflow-y:auto; scroll-snap-type:y mandatory; overscroll-behavior-y:contain; scrollbar-width:none; }
#app::-webkit-scrollbar { display:none; }
#app > .screen { height:100svh; min-height:0; scroll-snap-align:start; scroll-snap-stop:always; }
