:root{--pink:#f34f91;--pink2:#ff86b7;--rose:#a84269;--ink:#6f3650;--cream:#fff9f4;--glass:rgba(255,248,252,.72)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#f7c9dc;color:var(--ink);font-family:Georgia,'Times New Roman',serif}button,input{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}.hidden{display:none!important}
body:before{content:"";position:fixed;inset:0;z-index:200;pointer-events:none;opacity:.15;background-image:radial-gradient(circle at 20% 30%,#fff 0 1px,transparent 2px),radial-gradient(circle at 70% 65%,#fff 0 1px,transparent 2px);background-size:130px 170px,190px 220px;mix-blend-mode:screen}
.gate{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;overflow:hidden;background:#f8c5da}.gate-photo{position:absolute;inset:0;transform:scale(1.04)}.gate-mist{position:absolute;inset:0;background:radial-gradient(circle at 50% 42%,rgba(255,255,255,.55),transparent 34%),linear-gradient(180deg,rgba(255,205,225,.18),rgba(245,98,154,.28))}.gate-card{position:relative;z-index:5;width:min(570px,calc(100% - 26px));padding:30px 24px 24px;text-align:center;border:1px solid rgba(255,255,255,.95);border-radius:34px;background:rgba(255,250,253,.88);box-shadow:0 35px 100px rgba(110,32,65,.28),inset 0 1px #fff;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.crown{font-size:30px;color:#d64c82}.tiny,.kicker{font-size:10px;letter-spacing:.24em;text-transform:uppercase;font-weight:700;color:#98466b}.gate-card h1{font-size:clamp(31px,7vw,58px);line-height:1;margin:9px 0 12px;color:#823653}.gate-card h1 em{color:var(--pink);font-style:italic}.gate-card p{max-width:440px;margin:0 auto 16px;line-height:1.6;font-size:16px}.keyhole{width:84px;height:104px;margin:10px auto 17px;border-radius:48px 48px 15px 15px;background:linear-gradient(145deg,#fff,#ffd4e5 52%,#f2639d);border:4px solid #fff;display:grid;place-items:center;color:#fff;font-size:35px;box-shadow:0 16px 35px rgba(203,55,110,.24)}.pass-row{display:flex;gap:10px;justify-content:center;align-items:stretch}.pass-row input{width:150px;height:54px;border:2px solid #ffc0d7;border-radius:16px;background:#fff;color:#71354e;-webkit-text-fill-color:#71354e;text-align:center;letter-spacing:.28em;font-size:22px;outline:none;box-shadow:inset 0 2px 12px rgba(128,38,70,.08)}.pass-row input:focus{border-color:var(--pink);box-shadow:0 0 0 4px rgba(243,79,145,.14)}.pass-row button,.cta,#printLetter,.mini-action{height:54px;border:0;border-radius:17px;padding:0 18px;color:#fff;font-weight:800;letter-spacing:.04em;background:linear-gradient(135deg,#ff77ac,#e83f7f);box-shadow:0 13px 30px rgba(210,55,107,.28)}#gateError{min-height:19px;margin-top:9px;color:#b1275d;font-size:13px}
#app{position:fixed;inset:0;overflow:hidden;background:#f7c9dc}header{position:fixed;z-index:80;top:0;left:0;right:0;height:66px;padding:0 18px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(180deg,rgba(255,248,252,.88),rgba(255,248,252,0));pointer-events:none}.brand,.chapter,header button{pointer-events:auto}.brand{font-size:11px;letter-spacing:.15em;font-weight:800;color:#914263}.brand b{font-size:19px;color:#f34f91}.chapter{font-size:11px;letter-spacing:.16em;font-weight:800;color:#88405f}header button{width:40px;height:40px;border-radius:50%;border:1px solid #fff;background:rgba(255,255,255,.7);color:#a13d68;font-size:19px;box-shadow:0 8px 20px rgba(109,38,65,.1)}
.scene{position:absolute;inset:0;overflow:hidden;opacity:0;visibility:hidden;transform:scale(1.035);transition:opacity .6s ease,transform .9s cubic-bezier(.2,.8,.2,1),visibility .6s}.scene.active{opacity:1;visibility:visible;transform:scale(1)}.photo{position:absolute;inset:-2%;background-size:cover;background-position:center;transform:scale(1.035);will-change:transform;filter:saturate(1.02) contrast(1.05)}
.bg-hero,.bg-cloud,.bg-funfair,.bg-sweet,.bg-butterfly,.bg-rabbit,.bg-atelier,.bg-secret,.bg-message,.bg-final{background-image:none}.photo:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,218,233,.16),rgba(255,153,194,.07) 48%,rgba(111,24,61,.22))}.photo-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,228,239,.18),rgba(255,161,199,.10) 45%,rgba(110,26,61,.24));pointer-events:none}.photo-shade.warm{background:linear-gradient(180deg,rgba(255,226,235,.2),rgba(246,147,171,.12) 50%,rgba(87,28,48,.34))}.final-shade{background:linear-gradient(180deg,rgba(255,212,230,.1),rgba(103,21,54,.3))}
.depth-clouds,.garden-depth,.foreground-castle,.foreground-candy{position:absolute;inset:0;pointer-events:none}.depth-clouds{background:radial-gradient(ellipse at 10% 85%,rgba(255,255,255,.6),transparent 26%),radial-gradient(ellipse at 92% 75%,rgba(255,255,255,.48),transparent 24%);filter:blur(3px)}.foreground-castle{background:linear-gradient(180deg,transparent 62%,rgba(90,25,57,.15)),radial-gradient(ellipse at 5% 95%,rgba(255,130,180,.55),transparent 20%),radial-gradient(ellipse at 95% 100%,rgba(255,143,190,.45),transparent 22%)}.foreground-candy{background:radial-gradient(circle at 10% 85%,rgba(255,184,214,.55) 0 4%,transparent 4.5%),radial-gradient(circle at 90% 78%,rgba(255,224,237,.55) 0 3%,transparent 3.5%)}
.content{position:absolute;z-index:12;left:50%;top:52%;transform:translate(-50%,-50%);width:min(920px,calc(100% - 30px));text-align:center}.content.arrival{top:54%;max-width:820px}.royal-mark{font-size:28px;color:#fff;text-shadow:0 3px 15px rgba(107,26,56,.35)}.content h2{margin:9px 0;font-size:clamp(36px,6.5vw,78px);line-height:.95;color:#fff;text-shadow:0 3px 22px rgba(71,20,45,.35)}.content h2 i{color:#ff5d9d;font-style:italic;text-shadow:0 2px 12px rgba(89,18,51,.22)}.content p{margin:14px auto 20px;color:#fff;font-size:clamp(15px,2vw,20px);line-height:1.55;text-shadow:0 2px 12px rgba(67,22,43,.35)}.cta{min-width:245px}.scene-tip{position:absolute;z-index:12;bottom:84px;left:50%;transform:translateX(-50%);font-size:10px;letter-spacing:.2em;color:#fff;text-shadow:0 2px 10px #6e2444;white-space:nowrap}
nav{position:fixed;z-index:90;left:50%;bottom:max(13px,env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;align-items:center;gap:12px;padding:8px 11px;border:1px solid rgba(255,255,255,.9);border-radius:30px;background:rgba(255,247,252,.72);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 14px 36px rgba(100,30,60,.17)}nav>button{width:42px;height:42px;border:0;border-radius:50%;background:#fff;color:#a13d68;font-size:21px;box-shadow:0 5px 15px rgba(91,29,53,.08)}#dots{display:flex;gap:6px;max-width:45vw;overflow:hidden}#dots button{width:7px;height:7px;padding:0;border:0;border-radius:50%;background:#e5a1ba}#dots button.on{background:#e73577;transform:scale(1.5)}
.floating-stage,.butterfly-stage,.rabbit-stage,.rose-stage{position:relative;width:min(800px,100%);height:min(44vh,380px);margin:18px auto 0;border-radius:28px;border:1px solid rgba(255,255,255,.72);background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,122,180,.12));box-shadow:inset 0 0 55px rgba(255,255,255,.15),0 20px 55px rgba(91,27,55,.16);overflow:hidden}.hud{display:inline-flex;gap:8px;align-items:center;margin-top:11px;padding:8px 15px;border-radius:18px;background:rgba(255,255,255,.84);box-shadow:0 8px 25px rgba(72,28,49,.14);font-size:11px;letter-spacing:.12em;color:#873b5c}.hud b{color:#e63877}
.cloud-heart{position:absolute;width:52px;height:52px;border:0;background:linear-gradient(145deg,#fff,#ffd3e3);color:#ef4c8d;font-size:28px;transform:rotate(-6deg);clip-path:polygon(50% 100%,4% 42%,10% 17%,30% 8%,50% 24%,70% 8%,90% 17%,96% 42%);filter:drop-shadow(0 8px 12px rgba(170,45,91,.25));animation:cloudHeart 3.2s ease-in-out infinite}.cloud-heart:after{content:"";position:absolute;inset:8px;border-radius:50%;background:radial-gradient(circle at 35% 25%,#fff,transparent 35%);opacity:.8}@keyframes cloudHeart{50%{translate:0 -10px;rotate:6deg}}
.game-doors{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:24px auto 0;max-width:820px}.game-card{min-height:190px;border:1px solid rgba(255,255,255,.9);border-radius:28px;background:rgba(255,249,252,.86);box-shadow:0 22px 45px rgba(82,24,51,.2),inset 0 1px #fff;color:#7e3556;padding:16px 12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;transition:transform .28s,box-shadow .28s}.game-card:hover{transform:translateY(-9px);box-shadow:0 28px 55px rgba(82,24,51,.26)}.game-card b{font-size:14px;letter-spacing:.05em}.game-card small{opacity:.7}.game-art{position:relative;width:82px;height:82px;display:block}.wheel-art{border-radius:50%;border:7px solid #fff;background:conic-gradient(#ff6d9f 0 25%,#ffd0e2 25% 50%,#e84b89 50% 75%,#ffe3ed 75%);box-shadow:0 10px 25px rgba(196,43,94,.24)}.wheel-art:before{content:"";position:absolute;inset:10px;border:2px dashed rgba(126,34,74,.4);border-radius:50%}.wheel-art:after{content:"";position:absolute;left:50%;top:50%;width:17px;height:17px;transform:translate(-50%,-50%);background:#fff;border-radius:50%;box-shadow:0 0 0 5px #ed4b89}.wheel-art i{position:absolute;top:-12px;left:50%;width:0;height:0;border-left:9px solid transparent;border-right:9px solid transparent;border-top:18px solid #9c3d63;transform:translateX(-50%)}.jewel-art i{position:absolute;width:38px;height:48px;clip-path:polygon(50% 0,100% 30%,82% 100%,18% 100%,0 30%);background:linear-gradient(135deg,#fff,#f35c9b 38%,#9e2d62);box-shadow:0 10px 20px rgba(140,30,70,.25)}.jewel-art i:nth-child(1){left:2px;top:23px;transform:rotate(-13deg)}.jewel-art i:nth-child(2){left:23px;top:7px}.jewel-art i:nth-child(3){right:1px;top:27px;transform:rotate(12deg);background:linear-gradient(135deg,#fff,#b06df4 40%,#5a347d)}.balloon-art i{position:absolute;width:39px;height:50px;border-radius:55% 55% 48% 48%;background:linear-gradient(135deg,#fff7fb 8%,#ff6a9e 35%,#d92f70);box-shadow:inset -7px -7px 12px rgba(116,24,57,.16),0 9px 17px rgba(122,31,64,.18)}.balloon-art i:after{content:"";position:absolute;left:50%;bottom:-7px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:9px solid #bd3a6a;transform:translateX(-50%)}.balloon-art i:before{content:"";position:absolute;left:50%;top:50px;width:1px;height:33px;background:#8c5570}.balloon-art i:nth-child(1){left:2px;top:18px;transform:rotate(-8deg)}.balloon-art i:nth-child(2){left:24px;top:2px}.balloon-art i:nth-child(3){right:1px;top:18px;transform:rotate(8deg);background:linear-gradient(135deg,#fff7fb 8%,#ffb3d0 35%,#ed548e)}
.sweet-items{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;max-width:850px;margin:23px auto 15px}.sweet-items button{min-height:140px;border:1px solid #fff;border-radius:25px;background:rgba(255,250,253,.86);color:#8d3c60;box-shadow:0 18px 36px rgba(93,28,56,.18);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;transition:.25s}.sweet-items button:hover{transform:translateY(-7px)}.sweet-items button.done{background:#ffe2ec;box-shadow:0 0 0 3px #ff76aa inset}.sweet-items b{font-size:10px;letter-spacing:.06em}.candy{position:relative;display:block;width:64px;height:64px}.strawberry{border-radius:50% 50% 45% 45%;background:radial-gradient(circle at 25% 30%,#fff 0 3px,transparent 4px),radial-gradient(circle at 60% 22%,#fff 0 3px,transparent 4px),radial-gradient(circle at 70% 55%,#fff 0 3px,transparent 4px),linear-gradient(135deg,#ff8db5,#df326f);clip-path:polygon(50% 100%,5% 43%,16% 16%,37% 22%,50% 6%,63% 22%,84% 16%,95% 43%)}.strawberry:after{content:"";position:absolute;left:50%;top:0;width:20px;height:14px;background:#4c9d5a;clip-path:polygon(50% 100%,0 0,100% 0);transform:translateX(-50%) rotate(180deg)}.cake{width:66px;height:45px;margin-top:12px;border-radius:8px 8px 12px 12px;background:linear-gradient(#fff4fa 0 28%,#ff83af 28% 65%,#d64a7f 65%);box-shadow:0 -9px 0 -3px #fff,inset 0 -7px rgba(126,30,62,.13)}.cake:before{content:"";position:absolute;left:10px;right:10px;top:-17px;height:20px;border-radius:50%;background:#fff0f7;box-shadow:12px 3px #ffd6e6,-12px 3px #ffd6e6}.lollipop{width:44px;height:44px;border-radius:50%;background:repeating-radial-gradient(circle,#ff6a9f 0 6px,#fff0f6 7px 11px);box-shadow:0 8px 17px rgba(127,27,66,.2);margin-bottom:15px}.lollipop:after{content:"";position:absolute;left:50%;top:43px;width:4px;height:27px;background:#6c9d69;transform:translateX(-50%);border-radius:4px}.cupcake{width:62px;height:43px;margin-top:14px;background:linear-gradient(145deg,#ff7eac,#d83e76);clip-path:polygon(12% 15%,88% 15%,76% 100%,24% 100%);border-radius:0 0 10px 10px}.cupcake:before{content:"";position:absolute;left:4px;top:-24px;width:54px;height:34px;border-radius:50% 50% 45% 45%;background:radial-gradient(circle at 30% 30%,#fff,#ffd7e7 35%,#ff77aa 70%)}.word{display:flex;justify-content:center;gap:14px;color:#fff;text-shadow:0 2px 14px #7c294e;font-size:36px;font-weight:800}.word span{display:inline-grid;place-items:center;width:45px;height:45px;border-bottom:3px solid #fff}
.butterfly-stage{height:min(45vh,400px)}#butterfly{position:absolute;width:88px;height:74px;border:0;background:transparent;filter:drop-shadow(0 10px 14px rgba(116,29,63,.28));transition:left .45s,top .45s,transform .2s}.wing{position:absolute;top:9px;width:43px;height:57px;background:linear-gradient(145deg,#fff4fa,#ff78ac 45%,#bb2f68);border:2px solid rgba(255,255,255,.65);border-radius:75% 25% 65% 35%;box-shadow:inset 0 0 0 5px rgba(255,255,255,.16)}.wing.left{left:2px;transform:rotate(15deg)}.wing.right{right:2px;transform:scaleX(-1) rotate(15deg)}.body{position:absolute;left:50%;top:18px;width:10px;height:48px;border-radius:50%;background:linear-gradient(#6e304f,#2f1c28);transform:translateX(-50%);z-index:2}.body:before,.body:after{content:"";position:absolute;width:20px;height:18px;border-top:2px solid #3c2430;border-radius:50%;top:-8px}.body:before{left:-13px;transform:rotate(-25deg)}.body:after{right:-13px;transform:rotate(25deg) scaleX(-1)}
#rabbit{position:absolute;width:86px;height:86px;border:0;border-radius:50%;background:linear-gradient(145deg,#fff,#f6e6ee);box-shadow:0 12px 25px rgba(88,31,57,.2);transition:left .4s,top .4s}.ear{position:absolute;width:25px;height:52px;top:-27px;background:linear-gradient(90deg,#fff,#ffd9e7);border:2px solid #e9c2d1;border-radius:60% 60% 40% 40%;z-index:-1}.e1{left:16px;transform:rotate(-12deg)}.e2{right:16px;transform:rotate(12deg)}.bunny-face{font-size:28px;color:#e6508d}.rabbit-stage:after{content:"";position:absolute;inset:auto 0 0;height:30%;background:linear-gradient(transparent,rgba(62,112,63,.18));pointer-events:none}
.paint-tools{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin:20px auto 12px}.paint-tools button{border:1px solid #fff;background:rgba(255,250,253,.84);color:#8b3d5d;border-radius:16px;padding:10px 14px;font-weight:800;font-size:10px;box-shadow:0 10px 20px rgba(91,28,55,.12)}.paint-tools button span{font-size:18px;margin-right:4px}.paint-tools button.done{background:#ffd5e5;transform:translateY(-3px)}.painting{width:min(700px,100%);height:150px;margin:auto;border-radius:24px;border:6px solid rgba(255,255,255,.9);overflow:hidden;position:relative;box-shadow:0 18px 42px rgba(67,27,50,.2);background:#a8dff1}.paint-sky{position:absolute;inset:0;background:linear-gradient(#9bdcf6 0 57%,#bde8ba 57%)}.paint-sky:after{content:"";position:absolute;left:10%;right:10%;bottom:12%;height:28%;background:linear-gradient(160deg,transparent 0 38%,rgba(255,196,218,.85) 39% 54%,transparent 55%);border-radius:50%}.painting #painted{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:13px;font-size:38px}.painting #painted span{animation:pop .35s both;filter:drop-shadow(0 4px 5px rgba(73,31,53,.18))}.paint-hint{color:#fff;text-shadow:0 2px 8px #6b2948;font-size:12px;margin-top:9px}@keyframes pop{from{transform:scale(.2);opacity:0}to{transform:scale(1);opacity:1}}
.rose-stage{height:min(44vh,390px)}.rose{position:absolute;width:72px;height:72px;border:0;background:transparent;filter:drop-shadow(0 8px 9px rgba(103,30,56,.22));transition:left .4s,top .4s;animation:roseSway 3s ease-in-out infinite}.rose:before{content:"";position:absolute;left:8px;top:10px;width:56px;height:56px;border-radius:50%;background:radial-gradient(circle at 50% 50%,#ffd8e7 0 8%,#ff7eae 9% 19%,#ed4b8a 20% 31%,#c92d69 32% 45%,#f86f9f 46% 58%,#bb245e 59% 72%,#e94b88 73%);box-shadow:inset 0 0 8px rgba(255,255,255,.35)}.rose:after{content:"";position:absolute;left:35px;top:62px;width:5px;height:33px;background:#4e9a59;border-radius:5px;box-shadow:10px 12px 0 -1px #65a768;transform:rotate(7deg)}.rose.caught{animation:roseOut .5s forwards}@keyframes roseSway{50%{transform:rotate(4deg) translateY(-6px)}}@keyframes roseOut{to{transform:scale(1.8) rotate(30deg);opacity:0}}
.machine{width:min(430px,100%);margin:20px auto 0;padding:22px;border-radius:27px;background:rgba(255,249,252,.9);border:1px solid #fff;box-shadow:0 22px 45px rgba(72,29,49,.2)}.machine-top{font-size:18px;font-weight:800;letter-spacing:.14em;color:#98405f}.slot{height:62px;margin:16px 0;border-radius:12px;background:linear-gradient(#eeb8cd,#fff8fb);box-shadow:inset 0 5px 14px rgba(87,28,51,.14);position:relative}.slot span{position:absolute;left:14%;right:14%;top:10px;height:36px;border-radius:6px;background:#fff7e9;box-shadow:0 5px 10px rgba(71,28,42,.12)}#printLetter{min-width:225px}.letter{width:min(650px,100%);max-height:48vh;overflow:auto;margin:17px auto 0;padding:28px 27px 24px;border-radius:7px 20px 9px 18px;background:linear-gradient(100deg,#fffdf7,#fff7e9);color:#4f3840;border:1px solid #f4e2ce;box-shadow:0 22px 48px rgba(62,29,39,.25);text-align:left;line-height:1.75;font-size:16px;position:relative}.letter:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(transparent 0 31px,rgba(183,131,128,.1) 32px);pointer-events:none}.letter p{color:#4f3840;text-shadow:none;margin:0 0 15px}.letter .seal{position:absolute;right:18px;top:-17px;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:#ed4c88;color:#fff;font-size:22px;box-shadow:0 7px 16px rgba(112,27,60,.2)}.letter .sign{text-align:right;color:#b43168;font-weight:800}
.finale{position:absolute;z-index:15;left:50%;top:50%;transform:translate(-50%,-50%);width:min(760px,calc(100% - 30px));text-align:center;color:#fff}.crown-large{font-size:48px;text-shadow:0 3px 20px rgba(82,20,49,.4)}.finale h2{font-size:clamp(39px,7vw,78px);line-height:.95;margin:8px 0;text-shadow:0 4px 25px rgba(65,18,42,.4)}.finale h2 i{color:#ff77ad}.finale p{font-size:18px;text-shadow:0 2px 12px #6e2748}.gift{position:relative;width:120px;height:120px;border:0;background:transparent;margin-top:8px;filter:drop-shadow(0 15px 20px rgba(67,18,44,.3));transition:.3s}.gift:hover{transform:translateY(-8px) scale(1.05)}.gift-box{position:absolute;left:17px;right:17px;bottom:13px;height:62px;border-radius:10px;background:linear-gradient(135deg,#ff9fc4,#e8447f);border:4px solid #fff}.gift-lid{position:absolute;left:10px;right:10px;top:33px;height:25px;border-radius:8px;background:linear-gradient(135deg,#ffc5da,#ed4c88);border:4px solid #fff;z-index:2}.gift-ribbon{position:absolute;top:30px;bottom:13px;left:50%;width:17px;background:#fff;z-index:3;transform:translateX(-50%)}.gift-msg{margin:18px auto 0;padding:20px 24px;border:1px solid #fff;border-radius:23px;background:rgba(255,249,252,.84);color:#8a3459;line-height:1.7;box-shadow:0 18px 40px rgba(63,20,45,.2)}.gift-msg strong{color:#e43777;font-size:18px}.moon-glow{position:absolute;left:50%;top:30%;width:330px;height:330px;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.4),transparent 66%);filter:blur(10px)}
.magic-sky{position:fixed;inset:0;z-index:35;pointer-events:none;background:radial-gradient(circle at 30% 35%,rgba(255,255,255,.18),transparent 17%),radial-gradient(circle at 75% 28%,rgba(255,255,255,.15),transparent 14%)}.spark-layer,.petal-layer,.heart-layer{position:fixed;inset:0;z-index:45;pointer-events:none;overflow:hidden}.spark{position:absolute;width:4px;height:4px;border-radius:50%;background:#fff;box-shadow:0 0 12px #fff;animation:spark 2.7s ease-in-out infinite}.petal{position:absolute;width:12px;height:20px;border-radius:80% 20% 80% 20%;background:linear-gradient(145deg,#fff,#ff8db6);opacity:.72;animation:fall 8s linear forwards;filter:drop-shadow(0 3px 5px rgba(103,25,55,.16))}.floating-heart{position:absolute;color:#ff78ab;font-size:21px;animation:floatHeart 8s ease-out forwards;text-shadow:0 0 10px rgba(255,119,171,.45)}@keyframes spark{0%,100%{opacity:.1;transform:scale(.6)}50%{opacity:1;transform:scale(1.5)}}@keyframes fall{from{transform:translate3d(0,-10vh,0) rotate(0)}to{transform:translate3d(14vw,110vh,0) rotate(500deg);opacity:0}}@keyframes floatHeart{from{transform:translateY(20vh) scale(.6);opacity:0}12%{opacity:.9}to{transform:translateY(-100vh) translateX(10vw) scale(1.2);opacity:0}}
.modal{position:fixed;inset:0;z-index:200;display:grid;place-items:center}.modal-backdrop{position:absolute;inset:0;background:rgba(58,18,39,.46);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}.mini-scene{position:relative;z-index:2;width:min(620px,calc(100% - 24px));max-height:min(760px,calc(100% - 32px));overflow:auto;border-radius:30px;border:1px solid rgba(255,255,255,.95);background:linear-gradient(145deg,#fffafc,#ffe8f1);box-shadow:0 30px 90px rgba(35,10,25,.35);padding:22px}.close{position:absolute;right:13px;top:11px;width:40px;height:40px;border:0;border-radius:50%;background:#fff;color:#a13a66;font-size:25px;z-index:4}.mini-inner{text-align:center;color:#7c3555;padding:10px 8px 6px}.mini-inner h3{font-size:35px;margin:8px 0;color:#873657}.mini-note{font-size:15px;line-height:1.55;max-width:500px;margin:0 auto 15px}.play-area{position:relative;width:min(430px,100%);height:270px;margin:14px auto;border-radius:24px;border:1px solid #fff;background:linear-gradient(180deg,#fbd2e3,#fff6fa);overflow:hidden;box-shadow:inset 0 0 35px rgba(255,255,255,.7)}.wheel{position:absolute;left:50%;top:50%;width:190px;height:190px;transform:translate(-50%,-50%);border-radius:50%;border:10px solid #fff;background:conic-gradient(#ff6c9f 0 45deg,#ffe0ea 45deg 90deg,#e74382 90deg 135deg,#fff0f5 135deg 180deg,#ff6c9f 180deg 225deg,#ffe0ea 225deg 270deg,#e74382 270deg 315deg,#fff0f5 315deg);box-shadow:0 18px 35px rgba(100,25,57,.22);display:grid;place-items:center;font-size:36px;color:#fff;transition:transform 1.5s cubic-bezier(.12,.74,.18,1)}.wheel:before{content:"";position:absolute;inset:17px;border:2px dashed rgba(120,30,65,.25);border-radius:50%}.wheel:after{content:"";position:absolute;left:50%;top:-25px;border-left:11px solid transparent;border-right:11px solid transparent;border-top:22px solid #843657;transform:translateX(-50%)}.prize{margin:10px auto 0;padding:10px 14px;min-height:38px;border-radius:14px;background:#fff;color:#92365b;box-shadow:0 8px 20px rgba(88,26,52,.12)}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;width:min(390px,100%);margin:18px auto}.card{height:110px;border:0;border-radius:18px;background:linear-gradient(145deg,#e94a87,#9d2e62);color:#fff;font-size:27px;box-shadow:0 12px 24px rgba(94,25,55,.18);transition:transform .3s;position:relative}.card:after{content:"";position:absolute;inset:8px;border:1px solid rgba(255,255,255,.3);border-radius:12px}.card.flipped{background:linear-gradient(145deg,#fff,#ffe3ed);color:#c5346e;transform:rotateY(180deg);font-size:32px}.catch-area{background:linear-gradient(180deg,#ffd9e7,#fff7fb)}.chase-balloon{position:absolute;width:48px;height:62px;border:0;border-radius:55% 55% 48% 48%;background:linear-gradient(135deg,#fff 5%,#ff73a8 35%,#cf2e68);box-shadow:inset -7px -8px 12px rgba(111,25,58,.18),0 8px 18px rgba(91,24,53,.18);animation:rise var(--dur) linear forwards;z-index:2}.chase-balloon:before{content:"";position:absolute;left:9px;top:10px;width:11px;height:17px;border-radius:50%;background:rgba(255,255,255,.7);filter:blur(1px)}.chase-balloon:after{content:"";position:absolute;left:50%;bottom:-43px;width:1px;height:44px;background:#7d5b70}@keyframes rise{from{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-135px) rotate(5deg)}to{transform:translateY(-360px) rotate(-4deg);opacity:.9}}
@media (max-width:700px){header{height:58px;padding:0 12px}.brand{font-size:9px}.chapter{font-size:9px}.content{width:calc(100% - 20px);top:51%}.content.arrival{top:52%}.content h2{font-size:clamp(33px,10vw,53px)}.content p{font-size:14px;margin:11px auto 15px}.scene-tip{bottom:79px;font-size:8px;max-width:92vw;text-align:center;white-space:normal}.game-doors{grid-template-columns:1fr;gap:9px;margin-top:15px;max-height:54vh;overflow:auto;padding:2px 5px}.game-card{min-height:95px;display:grid;grid-template-columns:72px 1fr;text-align:left;justify-items:start;align-content:center;padding:10px 13px}.game-art{width:62px;height:62px;grid-row:1/3}.game-card b{align-self:end}.game-card small{align-self:start}.sweet-items{grid-template-columns:repeat(2,1fr);gap:9px;margin-top:15px}.sweet-items button{min-height:106px}.candy{transform:scale(.72)}.word{font-size:29px;gap:9px}.word span{width:36px;height:38px}.floating-stage,.butterfly-stage,.rabbit-stage,.rose-stage{height:37vh;margin-top:12px}.machine{margin-top:13px}.letter{max-height:42vh;font-size:14px;padding:23px 19px}.painting{height:115px}.paint-tools{gap:6px;margin:12px auto 8px}.paint-tools button{padding:8px 9px;font-size:8px}.paint-tools button span{font-size:15px}.finale h2{font-size:clamp(34px,10vw,52px)}.finale p{font-size:15px}.gift-msg{font-size:14px;padding:16px}.mini-scene{padding:17px}.mini-inner h3{font-size:28px}.play-area{height:250px}.cards{gap:8px}.card{height:90px}.pass-row{flex-direction:column;align-items:center}.pass-row input,.pass-row button{width:min(300px,100%)}.gate-card{padding:25px 18px}.gate-card h1{font-size:34px}.keyhole{width:70px;height:88px}.bg-hero{background-position:61% 50%}.bg-message{background-position:55% center}}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
#toast{position:fixed;z-index:300;left:50%;bottom:90px;transform:translate(-50%,16px);padding:10px 15px;border-radius:16px;background:rgba(255,249,252,.94);color:#8b3558;box-shadow:0 12px 30px rgba(70,22,47,.18);font-size:13px;opacity:0;pointer-events:none;transition:.25s;white-space:nowrap}#toast.show{opacity:1;transform:translate(-50%,0)}.burst-heart{position:fixed;z-index:310;color:#ff4f95;font-size:22px;pointer-events:none;animation:burstHeart .85s ease-out forwards;text-shadow:0 0 8px rgba(255,117,170,.6)}@keyframes burstHeart{from{transform:translate(-50%,-50%) scale(.4) rotate(0);opacity:1}to{transform:translate(-50%,-50%) translateX(calc(cos(var(--a))*80px)) translateY(calc(sin(var(--a))*80px)) scale(1.2) rotate(35deg);opacity:0}}.reward-crown{font-size:45px;color:#f04c8c;text-shadow:0 6px 18px rgba(201,47,103,.2);margin-bottom:4px}

/* V7 — enchanted illustrated realm: fantasy, dimensional, never real-world stock photography */
.gate-photo{background-image:linear-gradient(180deg,rgba(255,225,239,.08),rgba(243,107,161,.12)),url("assets/fantasy-hero.svg");background-position:center;filter:saturate(1.06) contrast(1.02)}
.bg-hero{background-image:url("assets/fantasy-hero.svg");background-position:center}
.bg-cloud{background-image:url("assets/fantasy-cloud.svg");background-position:center}
.bg-funfair{background-image:url("assets/fantasy-funfair.svg");background-position:center}
.bg-sweet{background-image:url("assets/fantasy-sweet.svg");background-position:center}
.bg-butterfly{background-image:url("assets/fantasy-butterfly.svg");background-position:center}
.bg-rabbit{background-image:url("assets/fantasy-rabbit.svg");background-position:center}
.bg-atelier{background-image:url("assets/fantasy-atelier.svg");background-position:center}
.bg-secret{background-image:url("assets/fantasy-secret.svg");background-position:center}
.bg-message{background-image:url("assets/fantasy-message.svg");background-position:center}
.bg-final{background-image:url("assets/fantasy-final.svg");background-position:center}
.photo{transform:scale(1.01);filter:saturate(1.05) contrast(1.03)}
.photo:after{background:linear-gradient(180deg,rgba(255,239,247,.06),rgba(255,164,203,.04) 45%,rgba(94,32,67,.17))}
.photo-shade{background:linear-gradient(180deg,rgba(255,238,247,.04),rgba(255,180,212,.03) 48%,rgba(77,26,59,.17))}
.final-shade{background:linear-gradient(180deg,rgba(255,231,244,.03),rgba(87,25,57,.18))}

/* organic 3D rose */
.rose{position:absolute;width:82px;height:104px;padding:0;border:0;background:transparent;display:grid;place-items:start center;filter:drop-shadow(0 12px 11px rgba(79,32,58,.26));animation:roseFloat 3.5s ease-in-out infinite;transition:transform .3s,opacity .3s}
.rose-svg{width:82px;height:104px;overflow:visible}.rose:hover{transform:translateY(-7px) scale(1.07)}.rose.caught{opacity:0;transform:scale(.35) rotate(18deg);pointer-events:none}@keyframes roseFloat{50%{translate:0 -6px}}

/* cuter dimensional rabbit */
.rabbit-stage{background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(246,177,209,.13));}
#rabbit{position:absolute;width:86px;height:112px;padding:0;border:0;background:transparent;filter:drop-shadow(0 12px 14px rgba(67,29,52,.28));transition:left .45s cubic-bezier(.2,.8,.2,1),top .45s cubic-bezier(.2,.8,.2,1),transform .25s;z-index:3}
.ear{position:absolute;top:0;width:31px;height:64px;border-radius:55% 55% 40% 40%;background:linear-gradient(145deg,#fff,#f5dce8);border:3px solid #fff;box-shadow:inset 0 0 0 6px #f6b8d2}.ear.e1{left:13px;transform:rotate(-8deg)}.ear.e2{right:13px;transform:rotate(8deg)}
.bunny-face{position:absolute;left:3px;bottom:0;width:80px;height:72px;border-radius:48% 48% 44% 44%;background:radial-gradient(circle at 35% 25%,#fff 0 15%,transparent 16%),linear-gradient(145deg,#fff,#f7e7ef);border:3px solid #fff;box-shadow:0 10px 18px rgba(71,28,50,.15),inset -6px -8px 12px rgba(213,160,187,.16)}
.eye{position:absolute;top:25px;width:7px;height:10px;border-radius:50%;background:#63384d}.left-eye{left:23px}.right-eye{right:23px}.nose{position:absolute;left:50%;top:40px;width:9px;height:7px;border-radius:50% 50% 60% 60%;background:#e77aa8;transform:translateX(-50%)}.mouth{position:absolute;left:50%;top:46px;width:13px;height:7px;border-bottom:2px solid #8c526b;border-radius:50%;transform:translateX(-50%)}.cheek{position:absolute;top:41px;width:12px;height:7px;border-radius:50%;background:#f5a9c8;opacity:.7}.c1{left:10px}.c2{right:10px}

/* sky atelier becomes a little magical canvas, not a flat icon box */
.painting{position:relative;overflow:hidden;width:min(680px,100%);height:180px;margin:16px auto 0;border-radius:32px;border:2px solid rgba(255,255,255,.9);background:linear-gradient(180deg,#8fd6ff 0%,#d6eaff 52%,#a9d995 53%,#78b77f 100%);box-shadow:inset 0 0 45px rgba(255,255,255,.3),0 20px 45px rgba(75,28,53,.2)}.paint-sky{position:absolute;inset:0;overflow:hidden}.paint-sky:before,.paint-sky:after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.75);filter:blur(2px)}.paint-sky:before{width:190px;height:50px;left:10%;top:25%;box-shadow:260px 35px 0 12px rgba(255,255,255,.5)}.paint-sky:after{width:18px;height:18px;right:17%;top:23%;box-shadow:-170px 42px 0 4px #fff,-90px 86px 0 1px #fff}.paint-castle{position:absolute;left:50%;bottom:17px;width:160px;height:72px;transform:translateX(-50%);background:#fff7fb;border:3px solid #b86c96;border-radius:8px 8px 3px 3px;box-shadow:0 7px 12px rgba(78,33,57,.16)}.paint-castle:before,.paint-castle:after{content:"";position:absolute;bottom:0;width:36px;height:105px;background:#fff7fb;border:3px solid #b86c96;border-bottom:0}.paint-castle:before{left:-26px}.paint-castle:after{right:-26px}.paint-castle i{position:absolute;bottom:0;width:18px;height:42px;background:#8e597e;border-radius:12px 12px 0 0}.paint-castle i:nth-child(1){left:17px}.paint-castle i:nth-child(2){left:71px}.paint-castle i:nth-child(3){right:17px}.paint-moon{position:absolute;right:12%;top:12%;width:35px;height:35px;border-radius:50%;background:#fff8e8;box-shadow:0 0 25px rgba(255,255,255,.9)}
.painted-item{position:absolute;z-index:5;font-size:32px;filter:drop-shadow(0 5px 7px rgba(75,30,55,.18));animation:paintFloat var(--drift) ease-in-out infinite alternate}.painted-item.cloud{font-size:40px;color:#fff}.painted-item.blossom{color:#ff5b9d}.painted-item.rainbow{color:#ff86b7}.painted-item.sparkle{color:#fff5a8}.painted-item.butterfly{font-size:35px}@keyframes paintFloat{to{transform:translateY(-9px) rotate(3deg)}}
.paint-tools button{background:linear-gradient(145deg,#fff8fc,#ffd8e8);border:1px solid #fff;box-shadow:0 8px 18px rgba(79,28,52,.12)}.paint-tools button.done{background:linear-gradient(145deg,#ff8db8,#ea4d88);color:#fff;transform:translateY(-2px)}

/* richer funfair attraction cards */
.game-doors{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;max-width:720px;margin:20px auto 0}.game-card{position:relative;overflow:hidden;min-height:135px;border:1px solid rgba(255,255,255,.9);border-radius:25px;background:linear-gradient(145deg,rgba(255,250,253,.93),rgba(255,220,234,.78));box-shadow:0 17px 34px rgba(72,24,48,.2);color:#7f3656;transition:transform .28s,box-shadow .28s}.game-card:before{content:"";position:absolute;inset:-50%;background:radial-gradient(circle,#fff 0 2px,transparent 3px);background-size:55px 55px;opacity:.18;transform:rotate(12deg)}.game-card:hover{transform:translateY(-6px) scale(1.015);box-shadow:0 24px 45px rgba(72,24,48,.25)}.game-card b,.game-card small{position:relative;z-index:2}.game-art{position:relative;z-index:2}.star-art:before,.star-art:after{content:"✦";position:absolute;color:#ef4b8e;font-size:31px;text-shadow:0 5px 8px rgba(93,24,53,.2)}.star-art:before{left:9px;top:7px}.star-art:after{right:7px;bottom:7px;font-size:24px;color:#ff9ac0}.star-art i:first-child{position:absolute;left:50%;top:50%;width:62px;height:62px;transform:translate(-50%,-50%);background:radial-gradient(circle,#fff 0 10%,#ffd6e6 11% 35%,#ef5793 36% 60%,transparent 61%);clip-path:polygon(50% 0,61% 36%,100% 38%,70% 60%,80% 100%,50% 75%,20% 100%,30% 60%,0 38%,39% 36%)}
.balloon-art i{box-shadow:inset -5px -8px 10px rgba(87,25,52,.18),0 8px 12px rgba(80,24,50,.12)}

/* star mini-game */
.star-area{background:radial-gradient(circle at 50% 35%,#fff 0 3%,transparent 4%),linear-gradient(180deg,#a9dcff,#ffd4ea 65%,#f7a5c8);background-size:140px 140px,100% 100%}.falling-star{position:absolute;z-index:3;top:-42px;width:48px;height:48px;border:0;background:radial-gradient(circle,#fff 0 8%,#ffe5f0 9% 28%,#f24e91 29% 58%,transparent 59%);color:#fff;font-size:31px;filter:drop-shadow(0 4px 10px rgba(99,25,56,.24));animation:starFall var(--fall) linear forwards}.falling-star:after{content:"";position:absolute;left:50%;top:50%;width:4px;height:55px;background:linear-gradient(#fff,transparent);transform:translate(-50%,-10%) rotate(25deg);opacity:.65}@keyframes starFall{to{top:calc(100% + 50px);transform:rotate(260deg)}}

/* improve mini games visual depth */
.play-area{background:linear-gradient(180deg,#ffe7f2,#fff9fc);box-shadow:inset 0 0 50px rgba(255,255,255,.8),0 16px 30px rgba(70,24,49,.15)}.wheel{box-shadow:0 20px 40px rgba(80,23,49,.24),inset 0 0 0 4px rgba(255,255,255,.7)}.card{background:linear-gradient(145deg,#f04d8c,#8f2d61);box-shadow:0 14px 24px rgba(78,24,48,.2)}.card.flipped{background:linear-gradient(145deg,#fff,#ffe4ef);box-shadow:0 10px 20px rgba(78,24,48,.12)}

@media(max-width:700px){.game-doors{grid-template-columns:1fr;max-height:56vh}.game-card{min-height:98px;border-radius:21px}.painting{height:150px;margin-top:12px}.paint-castle{transform:translateX(-50%) scale(.85);transform-origin:bottom center}.paint-tools{position:relative;z-index:10}.rose{width:72px;height:94px}.rose-svg{width:72px;height:94px}#rabbit{width:78px;height:104px}.bunny-face{width:74px;height:67px}.ear{height:59px;width:29px}.falling-star{width:44px;height:44px}.bg-hero,.bg-cloud,.bg-funfair,.bg-sweet,.bg-butterfly,.bg-rabbit,.bg-atelier,.bg-secret,.bg-message,.bg-final{background-position:center center}}

/* V7 real fantasy artwork from free-use StockCake images, with local SVG fallback */
.gate-photo{background-image:linear-gradient(180deg,rgba(255,223,239,.08),rgba(243,107,161,.12)),url("https://images.stockcake.com/public/3/3/2/332ea553-1b38-4e3d-b95b-fb951bb7f3c1_large/dreamy-fantasy-castle-stockcake.jpg"),url("assets/fantasy-hero.svg");background-size:cover;background-position:center}
.bg-hero{background-image:url("https://images.stockcake.com/public/3/3/2/332ea553-1b38-4e3d-b95b-fb951bb7f3c1_large/dreamy-fantasy-castle-stockcake.jpg"),url("assets/fantasy-hero.svg");background-size:cover}
.bg-cloud{background-image:url("https://images.stockcake.com/public/4/0/6/406e9308-7abf-489a-aa18-ac1abef36009_large/magical-sky-castles-stockcake.jpg"),url("assets/fantasy-cloud.svg");background-size:cover}
.bg-funfair{background-image:url("https://images.stockcake.com/public/7/f/5/7f54494a-90b0-4647-aa39-887b51dca2f7_large/magical-carousel-dreams-stockcake.jpg"),url("assets/fantasy-funfair.svg");background-size:cover}
.bg-sweet{background-image:url("https://images.stockcake.com/public/8/e/6/8e63d667-8e5b-493c-aceb-bf555f3dfd37_large/enchanted-castle-cake-stockcake.jpg"),url("assets/fantasy-sweet.svg");background-size:cover}
.bg-butterfly{background-image:url("https://images.stockcake.com/public/e/1/1/e115b7c2-94fc-4c6c-b083-36cfcfd474f4_large/magical-butterfly-garden-stockcake.jpg"),url("assets/fantasy-butterfly.svg");background-size:cover}
.bg-rabbit{background-image:url("https://images.stockcake.com/public/f/4/a/f4a52e66-7d36-4980-9100-7bf93527985d_large/enchanted-bunny-garden-stockcake.jpg"),url("assets/fantasy-rabbit.svg");background-size:cover}
.bg-atelier{background-image:url("https://images.stockcake.com/public/2/8/1/2811fae4-771b-4b68-9a6d-10a0123b0148_large/enchanted-art-studio-stockcake.jpg"),url("assets/fantasy-atelier.svg");background-size:cover}
.bg-secret{background-image:url("https://images.stockcake.com/public/a/9/6/a96bef5b-9a29-4743-88fa-bcbd685ab5cb_large/enchanted-rose-castle-stockcake.jpg"),url("assets/fantasy-secret.svg");background-size:cover}
.bg-message{background-image:url("https://images.stockcake.com/public/a/d/1/ad1fb80a-3d8d-486f-bfc1-6f9ccb368705_large/enchanted-floating-library-stockcake.jpg"),url("assets/fantasy-message.svg");background-size:cover}
.bg-final{background-image:url("https://images.stockcake.com/public/0/7/4/074907fe-83c9-4f40-82e3-e775fcb71521_large/pink-castle-dreams-stockcake.jpg"),url("assets/fantasy-final.svg");background-size:cover}
.bg-butterfly,.bg-secret{filter:saturate(1.08) contrast(1.04) brightness(1.06)}
.bg-funfair{background-position:center 50%}.bg-sweet{background-position:center 54%}.bg-rabbit{background-position:center 48%}.bg-atelier{background-position:center 48%}.bg-message{background-position:center 50%}.bg-final{background-position:center 52%}

.art-credit{position:fixed;z-index:82;left:10px;bottom:9px;font:700 7px/1.2 Georgia,serif;letter-spacing:.12em;color:rgba(255,255,255,.72);text-shadow:0 1px 7px rgba(67,20,47,.35);pointer-events:none}
