:root{--world-width: 1983px;--world-height: 793px;--cream: #fff4d2;--ink: #293441;--rose: #bd526d;--green: #385b46;--gold: #d99d42}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0}body{overflow:hidden;color:var(--ink);background:#172338;font-family:Georgia,Times New Roman,serif}button{font:inherit}[hidden]{display:none!important}.viewport{position:relative;width:100vw;height:100dvh;overflow:hidden;touch-action:none;overscroll-behavior:none}.viewport:before,.viewport:after{content:"";position:fixed;z-index:16;inset:0;opacity:0;pointer-events:none}.viewport:before{background:radial-gradient(circle at 50% 52%,transparent 38%,rgb(10 17 24 / 58%) 115%)}.viewport:after{left:-65%;width:42%;background:linear-gradient(105deg,transparent,rgb(255 242 205 / 16%),transparent);transform:skew(-12deg)}.viewport.is-started:not(.is-ready):before{animation:cinematic-vignette 3.6s ease-in-out both}.viewport.is-started:not(.is-ready):after{animation:cinematic-light-sweep 3.6s ease-in-out both}.opening-screen{position:fixed;z-index:60;inset:0;display:grid;place-items:center;padding:clamp(18px,4vw,48px);overflow:auto;color:#fffaf0;background:linear-gradient(90deg,#0f1922b8,#1e17218a),radial-gradient(circle at 78% 42%,rgb(189 82 109 / 18%),transparent 42%);cursor:pointer;clip-path:circle(145% at 50% 50%);transition:clip-path 1.15s cubic-bezier(.7,0,.3,1),opacity .9s ease,visibility 0s linear 1.15s;backdrop-filter:blur(3px);-webkit-tap-highlight-color:transparent}.opening-screen:focus-visible{outline:4px solid #ffe59b;outline-offset:-8px}.opening-card{width:min(92vw,690px);padding:clamp(27px,5vh,52px) clamp(24px,5vw,58px);background:#192229c7;border:1px solid rgb(255 239 203 / 55%);border-radius:22px;box-shadow:0 28px 90px #00000061;text-align:center;text-shadow:0 2px 3px rgb(0 0 0 / 24%);transform:translateY(0) scale(1);transition:transform .95s cubic-bezier(.22,1,.36,1),opacity .65s ease,filter .8s ease}.opening-kicker,.opening-date{margin:0;font:11px Arial,sans-serif;letter-spacing:.2em;text-transform:uppercase}.opening-card>h1{margin:7px 0 5px;font-size:clamp(30px,5vw,48px);font-weight:500}.opening-rule{display:block;width:80px;height:1px;margin:22px auto;background:#e8c784}.opening-card>h2{margin:7px 0 18px;color:#f5c8d3;font-size:clamp(23px,4vw,34px);line-height:1.15}.opening-card>p:not(.opening-kicker,.opening-date,.opening-cta){margin:11px auto;max-width:570px;line-height:1.55}.opening-degree{display:grid;gap:4px;margin:20px auto;padding:13px;max-width:480px;background:#fff4d21a;border-block:1px solid rgb(255 229 167 / 35%);font-size:13px}.opening-cta{display:flex;justify-content:center;align-items:center;gap:14px;margin:26px 0 0;color:#ffe59b;font:700 12px Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase;animation:opening-pulse 1.7s ease-in-out infinite}.opening-cta i{font-size:22px;font-style:normal}.viewport.is-started .opening-screen{clip-path:circle(0 at 50% 54%);visibility:hidden;opacity:0;pointer-events:none}.viewport.is-started .opening-card{opacity:0;filter:blur(5px);transform:translateY(-22px) scale(.94)}.game-ui,.story-spot,.character{transition:opacity .65s ease}.viewport:not(.is-started) .game-ui,.viewport:not(.is-started) .story-spot,.viewport:not(.is-started) .character,.viewport:not(.is-started) .ambient{opacity:0}.viewport.is-started:not(.is-ready) .game-ui{opacity:0;pointer-events:none}.viewport.is-ready .game-ui{opacity:1}.world{position:absolute;left:0;top:0;width:var(--world-width);height:var(--world-height);transform-origin:left top;will-change:transform}.viewport.is-started:not(.is-ready) .world{animation:cinematic-focus 3.6s ease-out both}.map{position:absolute;inset:0;width:100%;height:100%;user-select:none;pointer-events:none}.character{position:absolute;z-index:8;left:25px;bottom:245px;width:72px;height:102px;transform-origin:center bottom;filter:drop-shadow(0 7px 3px rgb(20 25 20 / 25%));will-change:left,transform;pointer-events:none}.character.facing-left{transform:scaleX(-1)}.character-sprite{position:absolute;left:50%;bottom:0;display:block;width:auto;height:100%;max-width:none;transform:translate(-50%);image-rendering:pixelated;user-select:none}.story-spot{--label-lift: 8px;--motion-delay: 0s;position:absolute;z-index:6;padding:0;color:#fff;background:transparent;border:0;border-radius:14px;cursor:default;outline:0}.story-spot.is-near{cursor:pointer}.story-spot--intro{--motion-delay: -.4s;left:105px;bottom:219px;width:130px;height:190px}.story-spot--journey{--motion-delay: -1.1s;left:325px;bottom:207px;width:130px;height:145px}.story-spot--day{--motion-delay: -1.8s;left:590px;bottom:215px;width:150px;height:200px}.story-spot--partner{--label-lift: 38px;--motion-delay: -2.5s;left:870px;bottom:213px;width:150px;height:135px}.story-spot--thanks{--motion-delay: -3.2s;left:1080px;bottom:215px;width:110px;height:150px}.story-spot--gallery{--motion-delay: -.9s;left:1200px;bottom:213px;width:120px;height:220px}.story-spot--dress{--motion-delay: -1.6s;left:1385px;bottom:210px;width:130px;height:195px}.story-spot--request{--motion-delay: -2.3s;left:1600px;bottom:210px;width:120px;height:190px}.story-spot--rsvp{--motion-delay: -3s;left:1805px;bottom:211px;width:130px;height:245px}.story-spot:before{content:attr(data-icon);position:absolute;z-index:3;left:50%;bottom:calc(100% + var(--label-lift) + 43px);display:grid;place-items:center;width:32px;height:32px;transform:translate(-50%);color:#4b3822;background:linear-gradient(145deg,#fff1ad,#e6a84a);border:3px solid #fff5cd;border-radius:9px 9px 9px 3px;box-shadow:0 0 0 2px #43331fad,0 0 14px 3px #ffdc698c;font:700 17px/1 Georgia,serif;text-shadow:0 1px #fff2bd;animation:checkpoint-float 3.2s ease-in-out var(--motion-delay) infinite;pointer-events:none}.story-spot:after{content:"";position:absolute;inset:-4px;border:3px dashed rgb(255 245 194 / 0%);border-radius:16px;box-shadow:0 0 0 1px #44311c00;transition:border-color .25s ease,background .25s ease,box-shadow .25s ease;pointer-events:none}.story-spot.is-near:hover:after,.story-spot.is-near:focus-visible:after,.story-spot.is-near:after{background:linear-gradient(145deg,#fff8d347,#e1a45629);border-color:#fff7cff5;box-shadow:0 0 0 2px #4e351c61,inset 0 0 0 2px #ffe59d3d,inset 0 0 26px #ffe6a033,0 0 20px 4px #ffd37052}.story-spot.is-near:after{border-color:#fff9d5fa;animation:checkpoint-zone-glow 1.8s ease-in-out infinite}.spot-label{position:absolute;left:50%;bottom:calc(100% + var(--label-lift));display:flex;align-items:center;width:max-content;padding:7px 10px 7px 7px;transform:translate(-50%);color:#fff;background:#1c2a2ad1;border:1px solid rgb(255 244 210 / 70%);border-radius:20px;box-shadow:0 4px 12px #00000038;font:13px/1 Arial,sans-serif;text-shadow:0 1px 2px #000;transition:transform .2s,background .2s;animation:label-drift 3.8s ease-in-out var(--motion-delay) infinite;pointer-events:none}.spot-label:before,.spot-label:after{content:"";position:absolute;width:4px;height:4px;background:#fff3a2;box-shadow:0 0 7px 2px #ffe170bf;animation:checkpoint-spark 2.4s steps(2,end) var(--motion-delay) infinite}.spot-label:before{left:-10px;top:8px}.spot-label:after{right:-9px;bottom:7px;animation-delay:calc(var(--motion-delay) - 1.2s)}.spot-label b{display:grid;place-items:center;width:25px;height:25px;margin-right:7px;color:#303725;background:#ffe59b;border-radius:50%;font-size:10px;text-shadow:none}.story-spot.is-near:hover .spot-label,.story-spot.is-near:focus-visible .spot-label,.story-spot.is-near .spot-label{transform:translate(-50%,-5px);background:#8f4152eb}.story-spot.is-visited .spot-label b{color:#fff;background:#4f8c65}.story-spot.is-visited .spot-label b:after{content:"✓";font-size:14px}.story-spot.is-visited .spot-label b{font-size:0}.story-spot.is-visited:before{content:"✓";color:#fff;background:linear-gradient(145deg,#75ad7f,#39704d);border-color:#dff3dc;box-shadow:0 0 0 2px #284c33bf,0 0 13px 2px #76ce8973}.bench-partner-stage{position:absolute;z-index:1;left:50%;bottom:60px;display:block;width:56px;height:auto;overflow:visible;transform:translate(-50%);pointer-events:none}.bench-partner{display:block;width:100%;height:auto;image-rendering:pixelated;filter:drop-shadow(0 3px 2px rgb(20 25 20 / 20%));pointer-events:none;user-select:none}.interaction-hint{position:absolute;z-index:12;bottom:340px;width:max-content;max-width:280px;padding:9px 13px;transform:translate(-50%);color:#fff;background:#1f2830e5;border:2px solid rgb(255 244 210 / 80%);border-radius:9px;font:14px/1.3 Arial,sans-serif;animation:hint-bob 1.2s ease-in-out infinite alternate;pointer-events:none}kbd{padding:2px 6px;color:#2c3440;background:#fff8df;border:1px solid #a89d7d;border-radius:4px;box-shadow:0 2px #8e8264;font:12px Arial,sans-serif}.title-card,.guide,.chapter-progress{position:fixed;z-index:20}.title-card{top:18px;left:50%;padding:9px 20px;transform:translate(-50%);color:#fff9e8;background:#1f283094;border:1px solid rgb(255 244 210 / 35%);border-radius:12px;text-align:center;text-shadow:0 2px 2px rgb(0 0 0 / 30%);backdrop-filter:blur(5px);pointer-events:none}.title-card p{margin:0 0 3px;font-size:11px;letter-spacing:.18em;text-transform:uppercase}.title-card h1{margin:0;font-size:clamp(18px,2.4vw,29px);font-weight:500;white-space:nowrap}.title-card>span{display:block;margin-top:2px;font:10px Arial,sans-serif;letter-spacing:.14em}.chapter-progress{top:20px;right:20px;display:grid;gap:6px;width:165px;padding:9px 12px;color:#fff;background:#141b22ab;border-radius:9px;font:11px Arial,sans-serif;backdrop-filter:blur(4px)}.progress-track{height:5px;overflow:hidden;background:#ffffff40;border-radius:9px}.progress-track i{display:block;width:0;height:100%;background:#f4c35e;transition:width .35s}.guide{left:50%;bottom:24px;padding:9px 14px;transform:translate(-50%);color:#fff;background:#141b22b8;border-radius:8px;text-align:center;font:13px Arial,sans-serif;transition:opacity .5s;pointer-events:none}.guide.is-hidden{opacity:0}.mobile-guide{display:none}.mobile-controls{position:fixed;z-index:30;right:20px;bottom:18px;display:flex;gap:12px}.mobile-controls button{width:64px;height:64px;color:#fff;background:#1f2830ad;border:2px solid rgb(255 255 255 / 65%);border-radius:50%;box-shadow:0 4px 10px #0003;cursor:pointer;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.mobile-controls svg{width:34px;height:34px;fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.mobile-controls button.is-active{transform:scale(.93);background:#bd526de0}.mobile-interact-button{display:none}.story-menu-button{position:fixed;z-index:25;left:20px;top:112px;display:grid;grid-template-columns:auto auto;align-items:center;gap:0 8px;padding:9px 13px;color:#fff;background:#19232ec7;border:1px solid rgb(255 244 210 / 55%);border-radius:11px;box-shadow:0 6px 18px #0000002e;cursor:pointer;backdrop-filter:blur(5px)}.story-menu-button>span{grid-row:1 / 3;color:#ffe59b;font-size:24px}.story-menu-button b{font:700 12px Arial,sans-serif}.story-menu-button small{color:#ddd5c8;font:10px Arial,sans-serif;text-align:left}.story-menu-button:disabled{cursor:default;opacity:.42}.story-menu-button:not(:disabled):hover,.story-menu-button:not(:disabled):focus-visible{background:#8f4152eb;outline:2px solid #fff1bb}.checkpoint-dialog{width:min(92vw,570px);padding:28px;color:var(--ink);background:#fff9e9;border:4px double #c99a68;border-radius:18px;box-shadow:0 24px 80px #0000007a}.checkpoint-dialog::backdrop{background:#0f161ead;backdrop-filter:blur(4px)}.checkpoint-dialog-header{display:flex;justify-content:space-between;align-items:start;gap:18px}.checkpoint-dialog-header h2{margin:4px 0 0;color:var(--rose);font:500 30px Georgia,serif}.checkpoint-dialog-header>button{width:36px;height:36px;color:#61584d;background:#f4ead1;border:0;border-radius:50%;font-size:26px;cursor:pointer}.checkpoint-dialog-note{margin:15px 0 18px;color:#71695f;font-size:13px;line-height:1.5}.checkpoint-picker{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.checkpoint-picker button{display:grid;grid-template-columns:32px 1fr;gap:2px 9px;padding:11px;color:#948b80;background:#eee7da;border:1px solid #ddd3c2;border-radius:10px;text-align:left}.checkpoint-picker b{grid-row:1 / 3;display:grid;place-items:center;color:#8c8173;background:#ddd4c5;border-radius:50%;font:700 10px Arial,sans-serif}.checkpoint-picker span{font-size:13px;font-weight:700}.checkpoint-picker i{font: 10px Arial,sans-serif}.checkpoint-picker button.is-unlocked{color:#fff;background:linear-gradient(145deg,#54765f,#365a45);border-color:#d8ebd9;cursor:pointer}.checkpoint-picker button.is-unlocked b{color:#34543f;background:#e3f1df}.checkpoint-picker button.is-unlocked:hover,.checkpoint-picker button.is-unlocked:focus-visible{transform:translateY(-2px);outline:2px solid #e8ad4f}.story-dialog{width:min(92vw,620px);max-height:min(86dvh,720px);padding:0;overflow:auto;color:var(--ink);background:#fff9e9;border:5px double #c99a68;border-radius:18px;box-shadow:0 24px 80px #0000007a}.story-dialog::backdrop{background:#0f161ead;backdrop-filter:blur(4px)}.story-panel{padding:42px 42px 36px;text-align:center}.story-panel h2{margin:5px 0 16px;color:var(--rose);font-size:clamp(26px,5vw,36px);line-height:1.08}.story-panel>p{line-height:1.6}.eyebrow{margin:0;color:#826c54;letter-spacing:.13em;text-transform:uppercase;font:11px Arial,sans-serif}.close-button{position:sticky;z-index:8;top:10px;display:flex;align-items:center;justify-content:center;gap:10px;width:calc(100% - 28px);margin:10px 14px -3px;padding:11px 16px;color:#fff;background:linear-gradient(135deg,#bd526d,#983e57);border:2px solid #ffe2e8;border-radius:99px;box-shadow:0 7px 20px #6f2b3c47;font:700 13px Arial,sans-serif;cursor:pointer;overflow:hidden;isolation:isolate;animation:close-cta-pulse 1.9s ease-in-out infinite}.close-button:before{position:absolute;z-index:-1;top:-70%;left:-30%;width:18%;height:240%;background:linear-gradient(90deg,transparent,rgb(255 255 255 / 72%),transparent);content:"";transform:rotate(18deg);animation:close-cta-shine 2.8s ease-in-out infinite;pointer-events:none}.close-button b{font-size:19px;transition:transform .2s;animation:close-cta-arrow .9s ease-in-out infinite}.close-button:hover,.close-button:focus-visible{background:linear-gradient(135deg,#ca6079,#a6445d);outline:3px solid rgb(232 173 79 / 45%);animation-play-state:paused}.close-button:hover b,.close-button:focus-visible b{transform:translate(4px);animation-play-state:paused}.pixel-stamp{display:inline-block;margin-top:12px;padding:8px 12px;color:#fff;background:var(--green);border:3px double #fff;box-shadow:0 0 0 3px var(--green);font:700 11px monospace;letter-spacing:.12em;transform:rotate(-2deg)}.journey-list{display:grid;gap:13px;margin:24px 0 0;padding:0;text-align:left;list-style:none;counter-reset:journey}.journey-list li{position:relative;padding:14px 15px 14px 55px;background:#f4ead1;border-left:4px solid var(--gold);border-radius:8px;counter-increment:journey}.journey-list li:before{content:counter(journey);position:absolute;left:15px;top:15px;display:grid;place-items:center;width:27px;height:27px;color:#fff;background:var(--green);border-radius:50%;font:700 12px Arial,sans-serif}.journey-list b,.journey-list span{display:block}.journey-list span{margin-top:4px;color:#5e625e;font:14px/1.45 Arial,sans-serif}.partner-portrait{display:grid;place-items:end center;width:180px;height:220px;margin:18px auto;overflow:hidden;background:linear-gradient(#f8cfda,#f7e8c3);border:7px solid white;border-radius:50% 50% 12px 12px;box-shadow:0 4px 20px #4e323033}.partner-portrait img{width:130px;image-rendering:pixelated}.gallery-note{margin:-4px auto 19px;color:#6e6b63;font-size:14px}.gallery-albums{display:flow-root}.gallery-album-content{margin-top:32px;scroll-margin-top:70px}.gallery-album-content:first-child{margin-top:24px}.gallery-album-heading{display:flex;align-items:baseline;justify-content:center;gap:9px;margin-bottom:13px}.gallery-album-heading p{margin:0;color:var(--rose);font:700 12px monospace}.gallery-album-heading h3{margin:0;color:#514a42;font-size:17px}.gallery-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.gallery-grid figure{margin:0;padding:8px 8px 11px;overflow:hidden;background:#fff;border:1px solid #decba9;box-shadow:0 4px 9px #41302021}.gallery-grid figure:nth-child(3n+1){transform:rotate(-1deg)}.gallery-grid figure:nth-child(3n){transform:rotate(1deg)}.gallery-grid img{display:block;width:100%;height:190px;object-fit:cover;background:linear-gradient(145deg,#f8dce4,#e8e4bd);opacity:0;transition:opacity .35s ease}.gallery-grid img[src]{opacity:1}.gallery-empty{grid-column:1 / -1;margin:0;padding:34px 20px;color:#746b62;background:linear-gradient(145deg,#fffdf5,#faeced);border:1px dashed #d6a9b3;border-radius:12px;line-height:1.6;text-align:center}.gallery-empty span{display:block;margin-top:5px;color:var(--rose);font-size:22px}.gallery-grid figcaption{padding-top:8px;color:#605b52;font:12px Arial,sans-serif}.event-card{display:grid;gap:5px;margin:20px auto;padding:16px;background:#f2e4c6;border-block:1px solid #cba976}.rsvp-form{display:grid;gap:10px}.name-field{display:grid;gap:7px;text-align:left}.name-field span,.attendance-field legend{color:#5c5549;font:600 13px Arial,sans-serif}.name-field input,.name-field textarea{width:100%;padding:12px 13px;color:var(--ink);background:#fff;border:2px solid #d9cab1;border-radius:9px;font:15px Arial,sans-serif}.name-field textarea{resize:vertical;min-height:92px}.name-field input:focus,.name-field textarea:focus{border-color:#b77b3d;outline:3px solid rgb(232 173 79 / 30%)}.event-card--large{gap:9px;padding:20px;font-size:17px}.palette{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:24px 0}.swatch{display:grid;place-items:end center;min-height:92px;padding:10px 6px;border:4px solid #fff;border-radius:12px;box-shadow:0 4px 12px #38322b2e;font:700 12px Arial,sans-serif}.swatch--blue{background:#bfe3ef}.swatch--grey{background:#c9cdd1}.swatch--white{background:#fff;border-color:#e8dfcf}.request-panel strong{color:var(--rose)}.closing-note{display:grid;gap:8px;margin-top:28px;padding-top:22px;border-top:1px solid #decba9;color:#77634d;font-size:13px}.closing-note b{color:var(--rose);letter-spacing:.12em}.gallery-grid small{color:#8b8174;line-height:1.35}.attendance-field{display:grid;gap:9px;margin:2px 0 0;padding:0;border:0;text-align:left}.attendance-field legend{margin-bottom:7px}.attendance-option{cursor:pointer}.attendance-option input{position:absolute;opacity:0}.attendance-option span{display:block;padding:12px;background:#fff;border:2px solid #d9cab1;border-radius:9px;transition:border-color .2s,background .2s}.attendance-option input:checked+span{color:#254f39;background:#e1f0e3;border-color:#4f8c65}.attendance-option input:focus-visible+span{outline:3px solid #e8ad4f;outline-offset:2px}.rsvp-button{margin-top:5px;padding:12px 18px;color:#fff;background:var(--rose);border:0;border-radius:8px;cursor:pointer}.rsvp-button:hover{background:#a63f59}.rsvp-button:disabled{cursor:wait;opacity:.65}.rsvp-status{min-height:1.5em;margin:2px 0 0;color:#3d6f50;font-weight:700}.rsvp-confirmation{position:relative;margin-top:22px;padding:30px 26px 25px;overflow:hidden;background:linear-gradient(145deg,#fffdf5,#f5e8cf);border:1px solid #d9bd8d;border-radius:16px;box-shadow:0 12px 30px #4a36251f}.confirmation-heart{display:grid;place-items:center;width:52px;height:52px;margin:0 auto 13px;color:#fff;background:var(--rose);border:4px double #ffe8ec;border-radius:50%;font-size:29px;box-shadow:0 5px 16px #bd526d40}.rsvp-confirmation h3{margin:7px 0 12px;color:var(--rose);font-size:clamp(25px,5vw,34px);font-weight:500}.confirmation-greeting{margin:0 auto 20px;max-width:460px;line-height:1.55}.confirmation-details{display:grid;gap:1px;margin:0;overflow:hidden;background:#ddccb0;border:1px solid #ddccb0;border-radius:11px;text-align:left}.confirmation-details div{display:grid;grid-template-columns:145px 1fr;gap:14px;padding:12px 14px;background:#fffdf7f0}.confirmation-details dt{color:#84725f;font:700 11px Arial,sans-serif;letter-spacing:.05em;text-transform:uppercase}.confirmation-details dd{margin:0;line-height:1.45;white-space:pre-line}.confirmation-details .is-attending{color:var(--green);font-weight:700}.confirmation-details .is-not-attending{color:var(--rose);font-weight:700}.confirmation-event{display:grid;gap:5px;margin-top:17px;padding:14px;color:#52483e;background:#e3efe2ad;border-radius:10px;font-size:13px}.confirmation-note{margin:15px 0 12px;color:#80776c;font-size:12px;line-height:1.45}.edit-rsvp-button{padding:10px 17px;color:var(--rose);background:transparent;border:1px solid var(--rose);border-radius:8px;cursor:pointer}.edit-rsvp-button:hover,.edit-rsvp-button:focus-visible{color:#fff;background:var(--rose);outline:none}.petal,.firefly{position:absolute;display:block;pointer-events:none}.petal{width:7px;height:11px;background:#f7a8bd;border-radius:70% 20%;animation:petal-fall 7s linear infinite}.petal-1{left:1100px;top:120px;animation-delay:-1s}.petal-2{left:1240px;top:220px;animation-delay:-4s;animation-duration:9s}.petal-3{left:1400px;top:80px;animation-delay:-6s}.petal-4{left:1510px;top:250px;animation-delay:-2s;animation-duration:8s}.petal-5{left:1660px;top:130px;animation-delay:-5s}.petal-6{left:1770px;top:300px;animation-delay:-3s;animation-duration:10s}.firefly{width:5px;height:5px;background:#fff3a1;border-radius:50%;box-shadow:0 0 10px 3px #ffe76f;animation:glow 2.2s ease-in-out infinite alternate}.firefly-1{left:970px;top:420px}.firefly-2{left:1190px;top:510px;animation-delay:-.8s}.firefly-3{left:1510px;top:450px;animation-delay:-1.5s}.firefly-4{left:1740px;top:530px;animation-delay:-.4s}@keyframes petal-fall{to{transform:translate(-70px,420px) rotate(540deg);opacity:.15}}@keyframes glow{to{opacity:.2;transform:translate(10px,-14px)}}@keyframes hint-bob{to{transform:translate(-50%,-5px)}}@keyframes checkpoint-float{0%,to{translate:0 0;rotate:-2deg}50%{translate:0 -6px;rotate:2deg}}@keyframes label-drift{0%,to{translate:0 0;box-shadow:0 4px 12px #00000038}50%{translate:0 -3px;box-shadow:0 8px 17px #00000047}}@keyframes checkpoint-spark{0%,35%,to{opacity:.2;scale:.7}45%,65%{opacity:1;scale:1.35}}@keyframes checkpoint-zone-glow{0%,to{box-shadow:0 0 0 2px #4e351c61,inset 0 0 0 2px #ffe59d3d,inset 0 0 26px #ffe6a033,0 0 18px 3px #ffd37047}50%{box-shadow:0 0 0 2px #4e351c75,inset 0 0 0 2px #ffeaaa52,inset 0 0 31px #ffecb147,0 0 26px 6px #ffd87770}}@keyframes mobile-action-pulse{0%,to{transform:translate(-50%) scale(1);box-shadow:0 7px 20px #00000047,0 0 0 5px #fff4ca2e,0 0 22px #ffcd6957}50%{transform:translate(-50%) scale(1.07);box-shadow:0 9px 24px #0000004d,0 0 0 10px #fff4ca14,0 0 30px #ffcd697a}}@keyframes opening-pulse{50%{opacity:.55;transform:translateY(3px)}}@keyframes close-cta-pulse{0%,to{box-shadow:0 7px 20px #6f2b3c47,0 0 #de658161}50%{box-shadow:0 10px 25px #6f2b3c61,0 0 0 7px #de658100}}@keyframes close-cta-shine{0%,18%{left:-30%;opacity:0}28%{opacity:.85}48%,to{left:115%;opacity:0}}@keyframes close-cta-arrow{0%,to{transform:translate(0)}50%{transform:translate(5px)}}@keyframes cinematic-vignette{0%{opacity:0}24%{opacity:1}78%{opacity:.65}to{opacity:0}}@keyframes cinematic-light-sweep{0%,16%{opacity:0;transform:translate(0) skew(-12deg)}38%{opacity:1}76%,to{opacity:0;transform:translate(420%) skew(-12deg)}}@keyframes cinematic-focus{0%{filter:blur(5px) brightness(.78) saturate(.82)}32%{filter:blur(2px) brightness(.9) saturate(1.08)}to{filter:blur(0) brightness(1) saturate(1)}}@media(hover:none)and (pointer:coarse){.interaction-hint{display:none!important}.desktop-guide{display:none}.mobile-guide{display:inline}.mobile-controls{right:max(16px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));gap:16px}.mobile-controls button{width:76px;height:76px;background:#19232ed1;border-width:3px;box-shadow:0 6px 18px #0000004d}.mobile-controls svg{width:40px;height:40px}.mobile-interact-button{position:fixed;z-index:32;left:50%;bottom:calc(max(18px,env(safe-area-inset-bottom)) + 96px);display:grid;place-items:center;width:72px;height:72px;padding:0;transform:translate(-50%);color:#49341e;background:linear-gradient(145deg,#fff1b5,#e9ae58);border:3px solid rgb(255 249 220 / 95%);border-radius:50%;animation:mobile-action-pulse 1.8s ease-in-out infinite;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.mobile-interact-button svg{width:39px;height:39px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}}@media(pointer:fine){.mobile-controls{opacity:.75}}@media(max-width:760px){.story-menu-button{top:83px;left:12px}.title-card{top:10px;left:12px;width:calc(100% - 24px);padding:7px 180px 7px 10px;transform:none;text-align:left}.title-card h1{font-size:17px;white-space:nowrap}.chapter-progress{top:17px;right:19px;width:155px;padding:7px 9px}.desktop-guide{display:none}.mobile-guide{display:inline}.guide{left:14px;bottom:18px;transform:none}.mobile-controls{right:14px}.mobile-controls button{width:76px;height:76px}.story-panel{padding:38px 22px 28px}.gallery-grid{gap:9px}.gallery-grid img{height:150px}}@media(max-width:520px){.checkpoint-dialog{padding:22px 17px}.checkpoint-picker{grid-template-columns:1fr}.opening-screen{place-items:start center;padding:14px}.opening-card{width:100%;padding:25px 20px;border-radius:17px}.opening-card>h1{font-size:29px}.opening-card>h2{font-size:22px}.opening-card>p:not(.opening-kicker,.opening-date,.opening-cta){font-size:14px}.opening-rule,.opening-degree{margin-block:16px}.opening-cta{margin-top:19px}.rsvp-confirmation{padding:25px 17px 20px}.confirmation-details div{grid-template-columns:1fr;gap:5px}.title-card{padding-right:118px}.title-card h1{overflow:hidden;text-overflow:ellipsis}.chapter-progress{width:105px}.chapter-progress #progressText{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.guide{max-width:calc(100% - 164px);font-size:11px}}@media(prefers-reduced-motion:reduce){.petal,.firefly,.interaction-hint,.story-spot:before,.story-spot:after,.spot-label,.spot-label:before,.spot-label:after{animation:none}.mobile-interact-button,.opening-cta{animation:none}.close-button,.close-button:before,.close-button b{animation:none}.viewport.is-started:not(.is-ready):before,.viewport.is-started:not(.is-ready):after,.viewport.is-started:not(.is-ready) .world{animation:none}*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}
