@import "https://fonts.googleapis.com/css2?family=Fredoka:wght@500;600;700&family=Noto+Serif+SC:wght@500;700;900&display=swap";:root{--pink:#ff7db7;--hot:#f74186;--rose:#ef315e;--cream:#fff3df;--yellow:#ffd75c;--ink:#2a2028}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}html.fairytale-lock,html.fairytale-lock body{overscroll-behavior:none;overflow:hidden}body{color:var(--ink);background:var(--pink);font-family:Fredoka,PingFang SC,sans-serif}button,a,input,textarea{color:inherit;font:inherit;-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:0}a{text-decoration:none}img{width:100%;display:block}.fairytale{background:var(--pink);min-height:100svh;overflow:hidden}.fairytale-player{z-index:-10;opacity:.01;pointer-events:none;border:0;width:1px;height:1px;position:fixed}.fairytale-grain{z-index:100;opacity:.12;pointer-events:none;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg viewBox=%270 0 180 180%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cfilter id=%27n%27%3E%3CfeTurbulence type=%27fractalNoise%27 baseFrequency=%27.9%27 numOctaves=%273%27 stitchTiles=%27stitch%27/%3E%3C/filter%3E%3Crect width=%27100%25%27 height=%27100%25%27 filter=%27url%28%23n%29%27 opacity=%27.18%27/%3E%3C/svg%3E");position:fixed;top:0;bottom:0;left:0;right:0}.fairytale-header{z-index:80;min-height:74px;padding:max(14px,env(safe-area-inset-top))4vw 12px;grid-template-columns:1fr auto 1fr;align-items:center;display:grid;position:fixed;top:0;left:0;right:0}.fairytale-logo{color:#fff;text-shadow:0 2px #2a202847;background:0 0;align-items:center;gap:8px;width:max-content;padding:0;font-size:14px;font-weight:700;display:flex}.fairytale-logo svg{width:17px;color:var(--yellow)}.header-chapter{color:#fff;letter-spacing:.25em;text-shadow:0 2px #2a202833;margin:0;font-size:10px;font-weight:700}.music-tools{justify-self:end;gap:7px;display:flex}.music-tools a,.music-tools button{border:2px solid var(--ink);background:var(--cream);min-height:39px;box-shadow:3px 4px 0 var(--ink);border-radius:999px;justify-content:center;align-items:center;display:flex}.music-tools a{gap:7px;padding:0 13px;font-size:11px}.music-tools button{width:41px}.music-tools svg{width:17px}.fairytale-cover{z-index:20;isolation:isolate;background:#ff986b;transition:opacity .7s,visibility .7s,transform 1s cubic-bezier(.16,1,.3,1);position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden}.fairytale.is-open .fairytale-cover{visibility:hidden;opacity:0;pointer-events:none;transform:scale(1.12)}.fairytale-cover>img{z-index:-3;object-fit:cover;object-position:center;height:100%;animation:11s ease-in-out infinite alternate coverBreath;position:absolute;top:0;bottom:0;left:0;right:0}.fairytale-cover:after{z-index:-2;content:"";background:linear-gradient(#ef315e0a,#0000 38%,#76144394);position:absolute;top:0;bottom:0;left:0;right:0}.cloud{z-index:-1;filter:drop-shadow(0 7px #2a20281a);background:radial-gradient(ellipse at 8% 90%,var(--pink)0 26%,transparent 27%),radial-gradient(ellipse at 24% 82%,var(--pink)0 37%,transparent 38%),radial-gradient(ellipse at 48% 95%,var(--pink)0 36%,transparent 37%),radial-gradient(ellipse at 72% 86%,var(--pink)0 41%,transparent 42%),radial-gradient(ellipse at 93% 96%,var(--pink)0 34%,transparent 35%);height:22vh;position:absolute;left:-5vw;right:-5vw}.cloud--top{top:-14vh;transform:rotate(180deg)}.cloud--bottom{bottom:-9vh}.cover-copy{z-index:3;color:#fff;text-align:center;text-shadow:0 3px #2a202838;width:min(90vw,780px);position:absolute;bottom:9vh;left:50%;transform:translate(-50%)}.cover-copy>p{letter-spacing:.35em;margin:0 0 5px;font-size:12px;font-weight:700}.cover-copy h1{letter-spacing:-.08em;margin:0;font:900 max(52px,min(7vw,104px))/1 Noto Serif SC,serif}.cover-copy h1 i{color:var(--yellow);font-style:normal}.cover-copy>span{letter-spacing:.16em;margin-top:12px;font:700 max(15px,min(1.7vw,23px))/1.5 Noto Serif SC,serif;display:block}.cover-copy button,.open-invite{border:3px solid var(--ink);color:#fff;background:var(--rose);box-shadow:6px 7px 0 var(--ink);border-radius:999px;align-items:center;gap:9px;margin-top:22px;padding:14px 24px;transition:all .2s;display:inline-flex}.cover-copy button:hover,.open-invite:hover{box-shadow:3px 4px 0 var(--ink);transform:translate(2px,2px)}.cover-copy button svg,.open-invite svg{width:20px}.cover-sticker{z-index:4;border:3px solid var(--ink);background:var(--yellow);width:112px;height:112px;box-shadow:6px 7px 0 var(--ink);text-align:center;border-radius:50%;place-items:center;font-size:11px;line-height:1.05;display:grid;position:absolute;top:22%;right:7%;transform:rotate(9deg)}.cover-sticker b{color:var(--rose);font-size:21px}.cover-scroll{z-index:4;color:#fff;letter-spacing:.12em;background:0 0;align-items:center;gap:7px;padding:0;font-size:10px;display:flex;position:absolute;bottom:25px;left:3vw}.cover-scroll svg{width:17px;animation:1.5s ease-in-out infinite nudge}.cover-halo{z-index:-1;aspect-ratio:1;border:2px solid #ffd75c8c;border-radius:50%;width:min(68vw,760px);animation:22s linear infinite halo;position:absolute;top:48%;left:50%;transform:translate(-50%,-50%)}.cover-halo i{border:inherit;border-radius:inherit;position:absolute;top:14%;bottom:14%;left:14%;right:14%}.cover-halo i:nth-child(2){top:29%;bottom:29%;left:29%;right:29%}.cover-halo i:nth-child(3){top:43%;bottom:43%;left:43%;right:43%}.cover-sparkles i{clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%);background:#fff;width:10px;height:10px;animation:2.7s ease-in-out infinite sparkle;position:absolute}.cover-sparkles i:first-child{top:20%;left:22%}.cover-sparkles i:nth-child(2){animation-delay:-.8s;top:32%;right:20%}.cover-sparkles i:nth-child(3){animation-delay:-1.6s;bottom:31%;left:17%}.cover-sparkles i:nth-child(4){animation-delay:-2.2s;bottom:22%;right:12%}.comic-experience{z-index:10;visibility:hidden;opacity:0;background:var(--pink);touch-action:none;transition:opacity .65s .25s,visibility .65s;position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden}.fairytale.is-open .comic-experience{visibility:visible;opacity:1}.fairytale-world,.fairytale-world canvas{width:100%;height:100%}.fairytale-world{position:absolute;top:0;bottom:0;left:0;right:0}.fairytale-world canvas{cursor:grab;touch-action:none;display:block}.fairytale-world canvas:active{cursor:grabbing}.world-loader{z-index:20;color:#fff;background:var(--pink);place-content:center;justify-items:center;gap:12px;transition:opacity .65s,visibility .65s;display:grid;position:absolute;top:0;bottom:0;left:0;right:0}.world-loader svg{width:42px;color:var(--rose);animation:1.1s ease-in-out infinite beat}.world-loader span{letter-spacing:.16em;font-size:11px}.world-loader.is-ready{visibility:hidden;opacity:0}.comic-copy{z-index:8;pointer-events:none;width:min(35vw,510px);animation:.8s cubic-bezier(.16,1,.3,1) both copyIn;position:absolute;top:17vh;left:5vw}.comic-index,.scene-number{border:3px solid var(--ink);color:#fff;background:var(--rose);width:66px;height:66px;box-shadow:5px 6px 0 var(--ink);border-radius:50%;place-items:center;font-size:26px;display:grid}.comic-copy>p{letter-spacing:.24em;margin:25px 0 8px;font-size:11px;font-weight:700}.comic-copy h2{letter-spacing:-.07em;margin:0;font:900 max(45px,min(4.9vw,78px))/1.04 Noto Serif SC,serif}.comic-copy h2 strong{color:#fff;text-shadow:3px 4px 0 var(--rose)}.comic-description{max-width:480px;margin-top:18px;font:500 13px/1.85 Noto Serif SC,serif;display:block}.comic-copy blockquote{border:2px solid var(--ink);background:var(--cream);box-shadow:4px 5px 0 var(--ink);margin:21px 0 0;padding:9px 14px;font-size:12px;display:inline-block;transform:rotate(-2deg)}.comic-bubble{z-index:9;border:3px solid var(--ink);color:#fff;background:var(--rose);max-width:230px;box-shadow:5px 6px 0 var(--ink);text-align:center;pointer-events:none;border-radius:50%;padding:14px 18px;font-size:13px;animation:2.8s cubic-bezier(.16,1,.3,1) both bubbleIn;position:absolute;top:17%;right:4.5%;transform:rotate(5deg)}.comic-bubble b{color:var(--yellow);font-size:22px;display:block}.comic-label{z-index:8;border:3px solid var(--ink);color:#fff;background:var(--rose);box-shadow:4px 5px 0 var(--ink);letter-spacing:.16em;pointer-events:none;padding:10px 16px;font-size:10px;position:absolute;bottom:17%;right:8%;transform:rotate(-5deg)}.open-invite{z-index:12;margin:0;animation:.7s cubic-bezier(.16,1,.3,1) both copyIn;position:absolute;bottom:25%;right:8%}.gesture-hint{z-index:8;letter-spacing:.15em;align-items:center;gap:8px;margin:0;font-size:10px;font-weight:700;display:flex;position:absolute;bottom:27px;left:4vw}.gesture-hint i{border:2px solid var(--ink);border-radius:999px;width:28px;height:38px;display:block}.gesture-hint i:after{content:"";background:var(--ink);border-radius:9px;width:4px;height:9px;margin:6px auto;animation:1.8s ease-in-out infinite wheel;display:block}.comic-controls{z-index:9;bottom:max(18px,env(safe-area-inset-bottom));border:2px solid var(--ink);box-shadow:4px 5px 0 var(--ink);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fff3dfeb;border-radius:999px;grid-template-columns:42px minmax(170px,280px) 42px;align-items:center;gap:12px;padding:8px;display:grid;position:absolute;left:50%;transform:translate(-50%)}.comic-controls button{border:2px solid var(--ink);color:#fff;background:var(--rose);border-radius:50%;place-items:center;width:38px;height:38px;display:grid}.comic-controls button:disabled{opacity:.25}.comic-controls svg{width:18px}.comic-controls>div{gap:6px;display:grid}.comic-controls b{letter-spacing:.15em;text-align:center;font-size:9px}.comic-controls i{background:#e9bdce;border-radius:999px;height:4px;overflow:hidden}.comic-controls em{border-radius:inherit;background:linear-gradient(90deg,var(--hot),var(--yellow));height:100%;transition:width .5s cubic-bezier(.16,1,.3,1);display:block}.chapter-rail{z-index:9;gap:10px;display:grid;position:absolute;top:50%;right:22px;transform:translateY(-50%)}.chapter-rail button{background:#2a20283d;border:2px solid #fff;border-radius:50%;width:9px;height:9px;padding:0;transition:all .25s;box-shadow:0 1px 3px #0003}.chapter-rail button.active{background:var(--yellow);transform:scale(1.7)}.fairy-confetti{z-index:70;pointer-events:none;position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden}.fairy-confetti i{top:-7vh;left:var(--left);opacity:0;width:12px;height:18px;transform:scale(var(--scale));animation:fall var(--duration)var(--delay)linear infinite;background:#ffd4e1;border-radius:90% 0;position:absolute}.fairy-confetti .confetti-1{background:var(--yellow);border-radius:50%;width:10px;height:10px}.fairy-confetti .confetti-2{clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);background:#fff}.fairy-transition{z-index:95;visibility:hidden;pointer-events:none;position:fixed;top:0;bottom:0;left:0;right:0}.fairytale.is-open .fairy-transition{animation:1.05s step-end both hideTransition}.fairy-transition i{aspect-ratio:1;background:var(--hot);border-radius:50%;width:54vw;position:absolute;top:50%;transform:translateY(-50%)scale(0)}.fairy-transition i:first-child{left:-15vw}.fairy-transition i:nth-child(2){right:-15vw}.fairytale.is-open .fairy-transition i{animation:.95s cubic-bezier(.65,0,.35,1) both burst}.fairy-transition strong{color:var(--yellow);opacity:0;font-size:80px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.fairytale.is-open .fairy-transition strong{animation:.95s both heartBurst}.invitation-drawer{z-index:120;visibility:hidden;opacity:0;background:#ff8dbd;grid-template-columns:.72fr 1.08fr .82fr;align-items:center;gap:max(24px,min(4vw,65px));padding:100px 5vw 72px;transition:all .6s cubic-bezier(.16,1,.3,1);display:grid;position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto;transform:translateY(7%)}.invitation-drawer.is-open{visibility:visible;opacity:1;transform:none}.drawer-close{z-index:3;top:max(22px,env(safe-area-inset-top));border:3px solid var(--ink);background:var(--cream);width:46px;height:46px;box-shadow:4px 5px 0 var(--ink);border-radius:50%;place-items:center;display:grid;position:fixed;right:24px}.drawer-close svg{width:22px}.finale-heading,.invite-card,.rsvp-card{z-index:2;position:relative}.finale-heading>p{letter-spacing:.23em;margin:25px 0 9px;font-size:11px;font-weight:700}.finale-heading h2{letter-spacing:-.07em;margin:0;font:900 max(40px,min(4vw,68px))/1.04 Noto Serif SC,serif}.finale-heading h2 strong{color:#fff;text-shadow:3px 4px 0 var(--rose)}.finale-heading>span:last-child{margin-top:20px;font:500 13px/1.85 Noto Serif SC,serif;display:block}.invite-card,.rsvp-card{border:4px solid var(--ink);background:var(--cream);box-shadow:11px 13px 0 var(--ink)}.invite-card{transform:rotate(-1.5deg)}.invite-illustration{padding:12px 12px 47px;position:relative}.invite-illustration img{border:3px solid var(--ink);object-fit:cover;object-position:center 34%;height:min(43vh,470px)}.invite-illustration>span{text-align:center;letter-spacing:.12em;font-size:9px;position:absolute;bottom:11px;left:18px;right:18px}.invite-illustration b,.invite-details small{color:var(--rose)}.invite-details{border-top:4px solid var(--ink);background:#fff8ea;padding:21px 23px 24px}.invite-details small{letter-spacing:.2em;font-size:10px}.invite-details h3{margin:7px 0 16px;font:900 max(24px,min(2.3vw,36px))/1.25 Noto Serif SC,serif}.invite-details dl{gap:9px;margin:0;display:grid}.invite-details dl div{grid-template-columns:24px 40px 1fr;align-items:center;gap:5px;display:grid}.invite-details dl svg{width:17px;color:var(--rose)}.invite-details dt{font-size:10px;font-weight:700}.invite-details dd{margin:0;font-size:11px}.invite-actions{gap:8px;margin-top:18px;display:flex}.invite-actions a,.invite-actions button{border:2px solid var(--ink);background:var(--yellow);min-height:40px;box-shadow:3px 4px 0 var(--ink);border-radius:999px;flex:1;justify-content:center;align-items:center;gap:6px;font-size:10px;display:flex}.invite-actions button{color:#fff;background:var(--rose)}.invite-actions svg{width:15px}.rsvp-card{background:#fff8ea;padding:25px;transform:rotate(1.3deg)}.rsvp-title{align-items:center;gap:11px;margin-bottom:16px;display:flex}.rsvp-title>svg{width:33px;color:var(--rose)}.rsvp-title span{color:var(--rose);letter-spacing:.2em;font-size:9px}.rsvp-title h3,.rsvp-success h3{margin:2px 0 0;font:900 25px/1.2 Noto Serif SC,serif}.rsvp-card label{gap:6px;margin-top:12px;font-size:10px;font-weight:700;display:grid}.rsvp-card input,.rsvp-card textarea{border:2px solid var(--ink);background:#fff;border-radius:12px;outline:0;width:100%;font:12px/1.5 inherit}.rsvp-card input{height:41px;padding:0 11px}.rsvp-card textarea{resize:vertical;min-height:68px;padding:9px 11px}.rsvp-card fieldset{border:0;gap:7px;margin:13px 0 0;padding:0;display:flex}.rsvp-card legend{margin-bottom:6px;font-size:10px;font-weight:700}.rsvp-card fieldset button{border:2px solid var(--ink);background:#fff;border-radius:999px;flex:1;min-height:34px;font-size:9px}.rsvp-card fieldset button.selected{color:#fff;background:var(--rose);box-shadow:2px 3px 0 var(--ink)}.rsvp-submit{border:2px solid var(--ink);color:#fff;background:var(--rose);width:100%;min-height:42px;box-shadow:4px 5px 0 var(--ink);border-radius:999px;justify-content:center;align-items:center;gap:8px;margin-top:15px;display:flex}.rsvp-submit svg{width:16px}.rsvp-submit:disabled{opacity:.65}.rsvp-success{text-align:center;place-content:center;min-height:280px;display:grid}.rsvp-success svg{border:3px solid var(--ink);color:#fff;background:var(--rose);border-radius:50%;width:50px;height:50px;margin:0 auto 14px;padding:10px}.rsvp-success p{margin:8px 0 0;font-size:11px}.invitation-drawer footer{text-align:center;letter-spacing:.22em;font-size:9px;position:absolute;bottom:18px;left:0;right:0}.fairytale-toast{z-index:160;border:2px solid var(--ink);color:#fff;background:var(--ink);opacity:0;pointer-events:none;border-radius:999px;padding:12px 20px;transition:all .28s;position:fixed;bottom:28px;left:50%;transform:translate(-50%,25px)}.fairytale-toast.show{opacity:1;transform:translate(-50%)}@keyframes coverBreath{to{transform:scale(1.05)}}@keyframes nudge{50%{transform:translateY(5px)}}@keyframes sparkle{50%{opacity:.45;transform:scale(1.9)rotate(45deg)}}@keyframes halo{to{transform:translate(-50%,-50%)rotate(1turn)}}@keyframes copyIn{0%{opacity:0;transform:translateY(35px)rotate(-2deg)}to{opacity:1;transform:none}}@keyframes bubbleIn{0%,18%{opacity:0;transform:rotate(14deg)scale(.2)}32%,82%{opacity:1;transform:rotate(5deg)scale(1)}to{opacity:.92;transform:rotate(5deg)scale(.96)}}@keyframes wheel{0%{opacity:0;transform:translateY(0)}35%{opacity:1}to{opacity:0;transform:translateY(13px)}}@keyframes beat{50%{transform:scale(1.18)rotate(-7deg)}}@keyframes fall{0%{opacity:0;transform:translate3d(0,-8vh,0)rotate(0)scale(var(--scale))}12%{opacity:.75}to{opacity:0;transform:translate3d(var(--drift),115vh,0)rotate(500deg)scale(var(--scale))}}@keyframes burst{0%{transform:translateY(-50%)scale(0)}48%,68%{transform:translateY(-50%)scale(1.55)}to{transform:translateY(-50%)scale(0)}}@keyframes heartBurst{0%,20%{opacity:0;transform:translate(-50%,-50%)scale(.1)}50%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-50%)rotate(28deg)scale(1.8)}}@keyframes hideTransition{0%,96%{visibility:visible}to{visibility:hidden}}@media (max-width:720px){.fairytale-header{grid-template-columns:1fr auto;min-height:66px;padding-inline-start:18px;padding-inline-end:18px}.header-chapter{display:none}.fairytale-logo{font-size:13px}.music-tools a{width:41px;padding:0}.music-tools a span{display:none}.fairytale-cover>img{object-position:55% center}.fairytale-cover:after{background:linear-gradient(#ef315e0d,#0000 35%,#67113c9e)}.cover-copy{bottom:12vh}.cover-copy h1{font-size:max(42px,min(13vw,62px))}.cover-copy>span{letter-spacing:.11em;padding-inline-start:8vw;padding-inline-end:8vw;font-size:13px}.cover-sticker{width:82px;height:82px;font-size:9px;top:17%;right:5%}.cover-sticker b{font-size:15px}.cover-scroll{display:none}.comic-copy{width:86vw;top:11.5vh;left:7vw}.comic-index{width:50px;height:50px;box-shadow:4px 5px 0 var(--ink);font-size:20px}.comic-copy>p{margin:15px 0 5px;font-size:9px}.comic-copy h2{max-width:76vw;font-size:max(35px,min(10vw,48px))}.comic-description,.comic-copy blockquote{display:none}.comic-bubble{max-width:180px;padding:9px 12px;font-size:10px;top:auto;bottom:22%;right:7vw}.comic-bubble b{font-size:17px}.comic-label{padding:7px 10px;font-size:8px;bottom:28%;left:7vw;right:auto}.open-invite{white-space:nowrap;bottom:20%;right:50%;transform:translate(50%)}.open-invite:hover{transform:translate(calc(50% + 2px),2px)}.gesture-hint{display:none}.comic-controls{bottom:max(15px,env(safe-area-inset-bottom));grid-template-columns:37px minmax(120px,43vw) 37px;gap:7px}.comic-controls button{width:33px;height:33px}.chapter-rail{gap:9px;display:flex;top:auto;bottom:76px;right:50%;transform:translate(50%)}.chapter-rail button{width:7px;height:7px}.invitation-drawer{grid-template-columns:1fr;gap:29px;padding:85px 22px 72px}.drawer-close{top:max(16px,env(safe-area-inset-top));right:17px}.finale-heading h2{font-size:max(39px,min(12vw,56px))}.invite-card,.rsvp-card{box-shadow:8px 9px 0 var(--ink);transform:none}.invite-illustration img{aspect-ratio:4/5;height:auto}.invitation-drawer footer{margin-top:12px;position:static}}@media (prefers-reduced-motion:reduce){.fairytale-cover>img,.fairy-confetti i,.cover-sparkles i,.cover-halo,.world-loader svg,.gesture-hint i:after{animation:none}.comic-copy,.comic-bubble,.open-invite{animation-duration:.01ms}}