
:root{--paper:#faf3e5;--ink:#522837;--pink:#d44465;--blush:#f2c2c7;--green:#356959;--gold:#d49d36;--line:#dbc9ba;--serif:Georgia,'Times New Roman',serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:85px}body{margin:0;color:var(--ink);background:var(--paper);font-family:Arial,sans-serif;background-image:radial-gradient(#52283709 .8px,transparent .8px);background-size:5px 5px}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible{outline:3px solid var(--green);outline-offset:5px}button:disabled{cursor:default}header{position:sticky;top:0;z-index:10;background:#faf3e5f5;border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}nav{max-width:1180px;margin:auto;padding:19px 28px;display:flex;align-items:center;justify-content:space-between;gap:18px}.brand{text-decoration:none;font-family:var(--serif);font-weight:bold;font-size:21px}.brand span{color:var(--pink)}.links{display:flex;gap:26px;align-items:center;font-size:11px;font-weight:bold;letter-spacing:1.5px;text-transform:uppercase}.links a{text-decoration:none}.links a:hover{color:var(--pink)}.nav-ticket{border:1px solid var(--ink);padding:10px 15px;border-radius:3px}.hero{text-align:center;position:relative;overflow:hidden;padding:82px 20px 0}.eyebrow{text-transform:uppercase;letter-spacing:3px;font-size:11px;font-weight:bold}.hero .eyebrow{color:var(--green)}h1{font-family:var(--serif);font-size:clamp(62px,9.5vw,124px);font-weight:normal;letter-spacing:-5px;line-height:.96;margin:24px 0 26px}h1 em{color:var(--pink);font-weight:normal}.hero-copy{font-size:16px;line-height:1.8;max-width:490px;margin:0 auto 26px}.pill{display:inline-block;border:1px solid var(--line);border-radius:30px;padding:11px 19px;font-size:11px;letter-spacing:1.3px;background:#fff7}.btn{display:inline-flex;align-items:center;justify-content:center;gap:20px;background:var(--pink);color:white;border:1px solid var(--pink);border-radius:5px;padding:16px 24px;font-size:13px;font-weight:bold;text-decoration:none;box-shadow:0 4px 0 #a3334e;transition:transform .2s,box-shadow .2s}.btn:hover{transform:translateY(-2px);box-shadow:0 6px 0 #a3334e}.btn:active{transform:translateY(2px);box-shadow:0 2px 0 #a3334e}.hero .btn{margin-top:26px}.star{position:absolute;color:var(--gold);font-size:38px;animation:twinkle 4s ease-in-out infinite}.s1{top:130px;left:12%}.s2{top:245px;right:11%;font-size:60px;animation-delay:1s}.s3{top:345px;left:22%;font-size:22px}.bunting{position:absolute;top:7px;left:-3%;width:106%;height:60px;display:flex;justify-content:space-around;transform:rotate(-2deg);border-top:1px solid var(--ink)}.bunting i{width:30px;height:39px;background:var(--pink);clip-path:polygon(0 0,100% 0,50% 100%)}.bunting i:nth-child(3n){background:var(--green)}.bunting i:nth-child(3n + 1){background:var(--gold)}.scene{width:min(1040px,110%);height:auto;display:block;margin:8px auto -1px;position:relative;left:50%;transform:translateX(-50%);margin-left:0}.wheel-art{transform-origin:770px 170px;animation:rotate 65s linear infinite}.steam{animation:steam 4s ease-in-out infinite}.marquee{overflow:hidden;background:var(--green);color:var(--paper);padding:17px 0;font-size:11px;font-weight:bold;letter-spacing:2.5px;border-top:3px double var(--paper);border-bottom:3px double var(--paper)}.marquee-track{display:flex;gap:35px;width:max-content;animation:marquee 32s linear infinite}.marquee span{white-space:nowrap}.marquee b{color:#efbd62;margin:0 28px}.section{max-width:1120px;margin:auto;padding:78px 28px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:25px;margin-bottom:30px}h2{font-family:var(--serif);font-weight:normal;font-size:clamp(36px,4.3vw,55px);letter-spacing:-1.7px;line-height:1.08;margin:13px 0 0}.small{font-size:13px;line-height:1.8;color:#785968}.section-heading .small{max-width:265px;margin:0}.ticket-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.ticket{position:relative;background:#fffaf1;border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:0 5px 0 #e9ddcd}.ticket-top{padding:27px 27px 24px;min-height:245px}.ticket:nth-child(2){background:#fae0df}.ticket:nth-child(3){background:#e5ede1}.ticket-no{display:flex;justify-content:space-between;font-size:9px;letter-spacing:2px;text-transform:uppercase}.ticket-icon{font-size:38px;margin:25px 0 16px;line-height:1}.ticket h3{font:normal 31px var(--serif);letter-spacing:-.7px;margin:0 0 9px}.ticket p{font-size:13px;line-height:1.7;margin:0}.ticket-bottom{border-top:1px dashed #9c7d77;position:relative;padding:19px 27px;display:flex;justify-content:space-between;align-items:center;gap:10px}.ticket-bottom:before,.ticket-bottom:after{content:'';position:absolute;width:20px;height:20px;background:var(--paper);border:1px solid var(--line);border-radius:50%;top:-11px;left:-12px}.ticket-bottom:after{left:auto;right:-12px}.ticket-bottom span{font-size:9px;letter-spacing:1.5px;font-weight:bold}.text-btn{background:none;border:0;border-bottom:1px solid currentColor;color:var(--ink);padding:5px 0;font-size:12px;font-weight:bold}.text-btn:disabled{color:var(--green);border:0}.midway{background:#f0dfd9;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.midway-inner{display:grid;grid-template-columns:1.05fr 1fr;gap:80px;align-items:center}.wheel-wrap{position:relative;max-width:360px;aspect-ratio:1;margin:5px auto 24px;width:100%;filter:drop-shadow(0 8px 0 #52283712)}.prize-wheel{width:100%;height:100%;border:10px solid var(--paper);border-radius:50%;box-shadow:0 0 0 2px var(--pink);background:conic-gradient(#d44465 0deg 60deg,#faf3e5 60deg 120deg,#356959 120deg 180deg,#e8b752 180deg 240deg,#f2c2c7 240deg 300deg,#522837 300deg 360deg);position:relative;transition:transform 4.4s cubic-bezier(.16,.75,.18,1)}.wheel-label{position:absolute;left:50%;top:50%;width:40%;font-size:11px;font-weight:bold;letter-spacing:1px;color:white;text-align:center;transform-origin:0 0}.wheel-label:nth-child(1){transform:rotate(-60deg) translate(29%,-50%)}.wheel-label:nth-child(2){transform:rotate(0deg) translate(29%,-50%);color:var(--ink)}.wheel-label:nth-child(3){transform:rotate(60deg) translate(29%,-50%)}.wheel-label:nth-child(4){transform:rotate(120deg) translate(29%,-50%);color:var(--ink)}.wheel-label:nth-child(5){transform:rotate(180deg) translate(29%,-50%);color:var(--ink)}.wheel-label:nth-child(6){transform:rotate(240deg) translate(29%,-50%)}.wheel-hub{position:absolute;inset:calc(50% - 33px);background:var(--paper);border:5px solid var(--gold);border-radius:50%;display:grid;place-items:center;font:27px var(--serif);pointer-events:none}.pointer{position:absolute;z-index:2;top:-18px;left:calc(50% - 14px);width:28px;height:37px;background:var(--ink);clip-path:polygon(0 0,100% 0,50% 100%)}.wheel-caption{text-align:center;font-size:10px;letter-spacing:2px;text-transform:uppercase}.spin-copy .small{max-width:350px;margin:20px 0}.result{min-height:60px;margin-top:24px;font:italic 24px/1.4 var(--serif)}.itinerary{display:grid;grid-template-columns:1fr 1fr;gap:50px}.day{border-top:2px solid var(--ink);padding-top:24px}.day-header{display:flex;align-items:center;gap:18px;margin-bottom:26px}.day-num{font:italic 54px var(--serif);color:var(--pink)}.day h3{margin:0;font:normal 28px var(--serif)}.day-sub{font-size:10px;letter-spacing:1.5px;margin-top:6px;text-transform:uppercase}.event{display:grid;grid-template-columns:90px 1fr;gap:16px;padding:19px 0;border-top:1px solid var(--line)}.event time{font-size:10px;text-transform:uppercase;letter-spacing:1px;padding-top:4px;color:var(--green);font-weight:bold}.event h4{margin:0;font:normal 20px var(--serif)}.event p{font-size:12px;line-height:1.7;color:#785968;margin:7px 0 0}.kiss-section{background:var(--pink);color:var(--paper);position:relative;overflow:hidden;text-align:center;padding:62px 24px}.kiss-section h2{font-size:40px;letter-spacing:-1px}.kiss-number{font:clamp(80px,14vw,148px)/1 var(--serif);letter-spacing:-4px;display:inline-block;margin:19px 0 6px}.kiss-total{font:italic 30px var(--serif);opacity:.85}.kiss-section p{font-size:13px;line-height:1.8}.meter{height:7px;background:#8f28464a;border-radius:9px;max-width:390px;margin:24px auto}.meter span{display:block;width:0;height:100%;background:var(--paper);border-radius:9px;transition:width .3s}.kiss-buttons{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.kiss-buttons button{background:var(--paper);border:1px solid var(--paper);border-radius:5px;color:var(--pink);font-weight:bold;padding:13px 19px}.kiss-buttons .undo{color:var(--paper);background:transparent}.kiss-section .deco{position:absolute;opacity:.14;font:180px var(--serif);pointer-events:none;animation:float 6s ease-in-out infinite}.deco.left{left:6%;top:65px}.deco.right{right:7%;top:120px;animation-delay:2s}.footer{text-align:center;padding:64px 24px 30px}.footer .heart{font-size:23px;color:var(--pink)}.footer h2{font-size:34px;margin:14px 0}.footer p{font-size:13px;line-height:1.8;max-width:430px;margin:12px auto;color:#785968}.footer small{display:block;border-top:1px solid var(--line);max-width:1064px;margin:45px auto 0;padding-top:23px;font-size:9px;letter-spacing:2px;text-transform:uppercase}.motion-control{background:none;border:0;color:var(--ink);font-size:11px;text-decoration:underline;padding:14px}.confetti{position:fixed;top:-20px;width:9px;height:15px;z-index:40;pointer-events:none;animation:fall 2.6s ease-in forwards}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);opacity:0;background:var(--ink);color:white;max-width:calc(100% - 32px);width:max-content;padding:15px 22px;border-radius:8px;font-size:13px;z-index:50;transition:.25s;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%,0)}dialog{border:1px solid var(--line);border-radius:15px;padding:35px;max-width:430px;width:calc(100% - 36px);background:var(--paper);color:var(--ink);text-align:center;box-shadow:0 20px 90px #52283733}dialog::backdrop{background:#32172080;backdrop-filter:blur(3px)}dialog h2{font-size:35px;margin:18px 0}dialog p{font-size:14px;line-height:1.8}dialog .btn{margin:15px 0}dialog .close{display:block;margin:12px auto 0;background:none;border:0;color:var(--ink);text-decoration:underline;padding:9px}.paused *, .paused *:before,.paused *:after{animation-play-state:paused!important;scroll-behavior:auto!important}.paused .prize-wheel{transition-duration:.01s!important}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes float{50%{transform:translateY(-12px) rotate(5deg)}}@keyframes twinkle{50%{transform:scale(.8) rotate(15deg);opacity:.5}}@keyframes steam{50%{transform:translateY(-8px);opacity:.35}}@keyframes marquee{to{transform:translateX(-50%)}}@keyframes fall{to{transform:translateY(110vh) rotate(700deg);opacity:.2}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important;transition-duration:.01s!important}}@media(max-width:750px){nav{padding:16px 20px}.links{gap:15px;font-size:9px;letter-spacing:.5px}.links a:first-child{display:none}.nav-ticket{padding:8px}.brand{font-size:18px}.hero{padding-top:76px}h1{letter-spacing:-3px}.hero-copy{font-size:14px;max-width:310px}.s1{left:5%;top:100px;font-size:22px}.s2{right:5%;top:260px;font-size:28px}.s3{display:none}.scene{width:140%;margin-top:20px}.section{padding:52px 22px}.section-heading{display:block}.section-heading .small{margin-top:15px;max-width:none}.ticket-grid{grid-template-columns:1fr;gap:20px}.ticket-top{min-height:0;padding:23px}.ticket-icon{float:left;margin:24px 19px 0 0;font-size:32px}.ticket h3{margin-top:23px}.ticket p{margin-left:51px}.ticket-bottom{padding:16px 24px}.midway-inner{grid-template-columns:1fr;gap:35px}.wheel-wrap{max-width:295px}.spin-copy{text-align:center}.spin-copy .small{margin:18px auto}.itinerary{grid-template-columns:1fr;gap:34px}.event{grid-template-columns:80px 1fr}.kiss-section .deco{font-size:90px;top:110px}.deco.left{left:-15px}.deco.right{right:-15px}.kiss-section h2{font-size:31px}.result{min-height:65px}}

[hidden]{display:none!important}.gate{min-height:100svh;display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:50px;max-width:1190px;margin:auto;padding:55px 35px}.gate h1{font-size:clamp(55px,6.8vw,88px);letter-spacing:-3px;line-height:1.05}.gate p{font-size:15px;line-height:1.85}.gate-art{position:relative}.yumi-art{width:100%;display:block;border:8px solid #fff8ed;border-radius:180px 180px 16px 16px;box-shadow:0 12px 0 #e7c9c4;object-fit:cover}.gate-art:after{content:'A LITTLE MAGIC IS ON ITS WAY';position:absolute;bottom:18px;left:50%;transform:translateX(-50%) rotate(-5deg);width:max-content;max-width:95%;background:var(--paper);border:1px solid var(--pink);padding:13px;font-size:9px;letter-spacing:2px}.countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:25px 0;max-width:420px}.countdown div{padding:15px 5px;border:1px solid var(--line);background:#fff8;border-radius:8px;text-align:center}.countdown strong{display:block;font:40px var(--serif);color:var(--pink);font-variant-numeric:tabular-nums}.countdown span{font-size:9px;letter-spacing:1.5px;text-transform:uppercase}.btn:disabled{opacity:.55;transform:none;box-shadow:none}.gate-date{color:var(--green);font-size:11px!important;letter-spacing:1px}.hero-portrait{width:150px;height:150px;object-fit:cover;object-position:70% 0;border:6px solid #fff8ed;border-radius:50%;box-shadow:0 5px 0 #e9c5c7;margin:0 auto 22px;display:block}.book-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;border-bottom:1px solid var(--line);margin-bottom:24px;padding-bottom:16px}.book-count{font:italic 21px var(--serif);color:var(--pink)}.ticket:nth-child(3n+2){background:#fae0df}.ticket:nth-child(3n){background:#e5ede1}.ticket h3{font-size:27px}.ticket-top{min-height:255px}.calendar-panel{background:#fff9ef;border:1px solid var(--line);border-radius:14px;padding:26px;margin-bottom:35px;display:grid;grid-template-columns:1fr 1fr;gap:35px;align-items:center}.calendar-panel h3{font:32px var(--serif);margin:8px 0 14px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}.calendar-grid span,.calendar-grid button{font-size:12px;border:0;padding:10px 1px;background:none;color:var(--ink);border-radius:6px}.calendar-grid .weekday{font-size:9px;color:#785968}.calendar-grid .adventure-date{background:var(--pink);color:#fff;font-weight:bold;border:2px solid transparent}.calendar-grid .adventure-date[aria-pressed=true]{border-color:var(--ink);box-shadow:0 0 0 2px var(--paper) inset}.calendar-grid .dim{opacity:.25}.calendar-copy .small{margin:12px 0 19px}.day.selected{border-color:var(--pink);background:#fff6;padding:24px 15px 0;border-radius:0 0 12px 12px}.forever-ticket{max-width:780px;margin:auto;border:1px solid #faf3e580;border-radius:14px;padding:30px;position:relative;background:#b7305020}.forever-ticket h2{font-size:clamp(43px,6vw,65px);line-height:1.1}.forever-ticket .infinity{font:100px/1 var(--serif);margin:8px}.forever-meta{display:flex;justify-content:center;gap:25px;border-top:1px dashed #faf3e588;padding-top:20px;margin-top:22px;font-size:10px;letter-spacing:1px;flex-wrap:wrap}.kiss-number{font-size:42px;letter-spacing:-1px;margin:15px 0 0}.secret-entry{margin-top:28px}.secret-entry button{font:italic 18px var(--serif);border:0;background:none;color:var(--pink);padding:14px}.secret-dialog{max-width:680px;background:#301e31;color:var(--paper);border-color:#80586b;text-align:left}.secret-dialog h2{color:#f2c2c7}.secret-dialog .eyebrow{color:#dfb36b}.secret-dialog .close{color:var(--paper)}.secret-steps{padding-left:23px;font-size:13px;line-height:1.8}.secret-steps li{margin:10px 0}.code-form{display:flex;gap:10px;margin-top:10px}.code-form input{min-width:0;flex:1;padding:14px;background:#fff8ee;border-radius:5px;border:1px solid #ddb98f;color:var(--ink);font:16px monospace;text-transform:uppercase}.code-form .btn{margin:0}.secret-dialog label{font-size:12px}.secret-message{min-height:23px;font-size:12px;color:#f6c989}.secret-coupons{display:grid;gap:12px;margin:18px 0}.secret-card{border:1px dashed #b08497;border-radius:8px;padding:19px}.secret-card h3{font:25px var(--serif);margin:0 0 8px;color:#efb9c4}.secret-card p{font-size:13px;margin:0 0 12px}.secret-card button{color:var(--paper)}.secret-count{font-size:10px;letter-spacing:1.5px;text-transform:uppercase}.gate-foot{margin-top:24px;color:#8a6c77;font-size:11px}.gate .motion-control{padding-left:0}.no-js{position:fixed;inset:0;z-index:99;background:var(--paper);padding:30vh 30px;text-align:center}.book-note{font-size:11px;color:#785968;margin-top:25px;line-height:1.6}
@media(max-width:750px){.gate{grid-template-columns:1fr;padding:35px 24px;gap:25px;text-align:center}.gate-copy{order:2}.gate-art{max-width:280px;margin:auto}.gate-art .yumi-art{height:230px;object-position:50% 15%;border-radius:90px 90px 12px 12px}.gate h1{font-size:53px;margin:14px 0}.countdown{margin:22px auto}.countdown strong{font-size:31px}.gate .eyebrow{font-size:9px}.gate p{font-size:13px}.hero-portrait{width:120px;height:120px}.ticket-top{min-height:0}.calendar-panel{grid-template-columns:1fr;gap:18px;padding:20px}.calendar-grid span,.calendar-grid button{padding:9px 1px}.book-heading{align-items:start}.book-count{font-size:18px}.forever-ticket{padding:25px 15px}.forever-meta{gap:12px}.secret-dialog{padding:26px 20px}.code-form{flex-direction:column}.code-form .btn{padding:12px}.ticket h3{font-size:25px}}

.gate-art{width:100%;max-width:405px;margin:auto}.gate-art .yumi-art{height:auto;border-radius:110px 110px 16px 16px}.hero-portrait{object-position:50% 23%}.preview-bar{position:sticky;top:0;z-index:20;background:#522837;color:#faf3e5;padding:12px 22px;display:flex;justify-content:center;align-items:center;gap:20px;font-size:12px;line-height:1.6}.preview-bar button{border:1px solid #faf3e599;background:transparent;color:#faf3e5;border-radius:4px;padding:7px 12px;white-space:nowrap}.preview-active header{position:relative}.owner-preview{display:block;margin-top:10px;background:none;border:0;padding:8px 0;color:#785968;font-size:11px;text-decoration:underline}.preview-form label{display:block;text-align:left;font-size:12px;margin-top:20px}.preview-form input{display:block;width:100%;margin:9px 0;padding:13px;border:1px solid var(--line);border-radius:5px;background:#fffaf1;color:var(--ink);font:16px monospace}.preview-form .error{font-size:12px;min-height:20px;color:#a3334e}.preview-dialog .small{font-size:12px}
@media(max-width:750px){.gate-art{max-width:260px}.gate-art .yumi-art{height:auto;object-position:center;border-radius:85px 85px 12px 12px}.owner-preview{margin:8px auto 0}.preview-bar{padding:9px 14px;gap:12px;font-size:10px}.preview-bar button{font-size:11px}}

:root{--badge-art:url("../assets/yumi-badges.webp")}body{max-width:600px;margin:0 auto;box-shadow:0 0 100px #52283712}html{background:#f1e4dc;scroll-padding-top:85px}button,a,input{touch-action:manipulation}button,.text-btn,.links a{min-height:44px}input{font-size:16px!important}.yumi-badge{display:block;width:88px;height:88px;flex:0 0 88px;background-image:var(--badge-art);background-size:300% 300%;border-radius:50%;box-shadow:0 4px 14px #52283722;margin:0 auto 15px}.badge-0{background-position:0 0}.badge-1{background-position:50% 0}.badge-2{background-position:100% 0}.badge-3{background-position:0 50%}.badge-4{background-position:50% 50%}.badge-5{background-position:100% 50%}.badge-6{background-position:0 100%}.badge-7{background-position:50% 100%}.badge-8{background-position:100% 100%}.gate{grid-template-columns:1fr;padding:25px 22px 35px;gap:22px;text-align:center}.gate-copy{order:2}.gate-art{max-width:260px}.gate-art .yumi-art{border-radius:75px 75px 16px 16px}.gate h1{font-size:53px;letter-spacing:-3px}.gate p{font-size:13px}.gate .yumi-badge{width:68px;height:68px}.countdown{margin:22px auto;gap:7px}.countdown strong{font-size:31px}.gate .eyebrow{font-size:9px}.owner-preview{margin:auto}.hero{padding-top:65px}.hero h1{font-size:68px;letter-spacing:-3px}.hero-copy{font-size:14px}.hero .yumi-badge{width:112px;height:112px}.scene{width:135%}.section{padding:48px 21px}.section-heading{display:block;text-align:center}.section-heading .small{margin:16px auto 0;max-width:350px}h2{font-size:37px}.ticket-grid{grid-template-columns:1fr;gap:17px}.ticket-top{min-height:0;padding:22px}.ticket-icon{float:left;margin:25px 17px 0 0;font-size:29px}.ticket h3{font-size:25px;margin-top:22px}.ticket p{margin-left:47px;font-size:13px}.ticket-bottom{padding:12px 22px}.book-heading{display:block;text-align:center}.book-heading .eyebrow{font-size:9px}.book-count{display:block;margin-top:12px;font-size:20px}.midway-inner{grid-template-columns:1fr;gap:28px}.wheel-wrap{max-width:295px}.spin-copy{text-align:center}.spin-copy .small{margin:18px auto}.itinerary{grid-template-columns:1fr;gap:34px}.calendar-panel{grid-template-columns:1fr;padding:20px;gap:18px}.event{grid-template-columns:75px 1fr;gap:10px}.day h3{font-size:26px}.forever-ticket{padding:25px 15px}.forever-ticket h2{font-size:43px}.kiss-section .deco{font-size:90px}.footer{padding-bottom:105px}nav{padding:11px 16px;gap:8px}.brand{font-size:17px}.links{gap:11px;font-size:9px;letter-spacing:.3px}.links a{display:inline-flex;align-items:center}.links a:first-child{display:none}.nav-ticket{padding:8px}.s1{left:5%;font-size:22px}.s2{right:5%;font-size:28px}.s3{display:none}.mobile-dock{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:600px;display:grid;grid-template-columns:repeat(4,1fr);background:#fff8eeed;backdrop-filter:blur(16px);border-top:1px solid var(--line);padding:8px 4px calc(8px + env(safe-area-inset-bottom));z-index:15}.mobile-dock a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-decoration:none;min-height:47px;font-size:10px;font-weight:bold}.mobile-dock b{font-size:20px;font-weight:normal;color:var(--pink)}.secret-page{min-height:100svh;background:#281b2c;color:#fff0e4;padding-bottom:calc(35px + env(safe-area-inset-bottom))}.secret-top{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;background:#281b2ceF;backdrop-filter:blur(14px);border-bottom:1px solid #745567;padding:10px 17px}.secret-top button{background:none;color:#fff0e4;border:0;font-size:13px;padding:8px}.secret-top span{font-size:9px;letter-spacing:2px;color:#eac490}.secret-art{width:100%;height:auto;max-height:540px;aspect-ratio:4/5;object-fit:cover;object-position:50% 23%;display:block}.secret-intro{text-align:center;padding:0 23px 24px;margin-top:-44px;position:relative}.secret-intro .yumi-badge{border:4px solid #281b2c;width:94px;height:94px}.secret-page h1{font-size:48px;line-height:1.05;letter-spacing:-2px;margin:16px 0;color:#f4c8ce}.secret-page p{font-size:13px;line-height:1.85}.secret-page .eyebrow{font-size:9px;color:#eac490;letter-spacing:2px}.secret-content{padding:0 20px}.challenge-progress{border:1px solid #75566c;background:#352239;border-radius:13px;padding:20px;margin-bottom:20px;text-align:center}.challenge-meter{height:6px;background:#59405a;border-radius:9px;margin-top:14px;overflow:hidden}.challenge-meter span{display:block;height:100%;background:#e5b66f;width:0;transition:width .3s}.challenge-list{display:grid;gap:17px;margin-bottom:25px}.challenge-card{border:1px solid #75566c;border-radius:14px;padding:22px;background:linear-gradient(135deg,#3c283f,#2e2033)}.challenge-kicker{display:flex;justify-content:space-between;gap:8px;color:#ebc38a;font-size:10px;letter-spacing:1px}.challenge-card h3{font:29px var(--serif);color:#f3c1ce;margin:17px 0 10px}.challenge-card p{margin:10px 0}.challenge-status{font-size:10px;color:#d6b6ce;line-height:1.7}.challenge-card button{display:block;width:100%;border:1px solid #c395ab;border-radius:7px;background:#52364e;color:#fff0e4;padding:12px;font-size:13px;margin-top:14px}.challenge-card button:disabled{opacity:.6}.mystery-prize{border:1px dashed #9a748b;padding:17px;border-radius:9px;margin-top:19px;text-align:center;background:#261a2c}.mystery-prize strong{display:block;font:23px var(--serif);color:#efd09a}.mystery-prize p{font-size:12px;color:#dfc5d5}.mystery-prize.revealed{background:#463246;border-color:#dbb56d}.unlock-box{padding:24px 20px;border:1px solid #927147;border-radius:14px;background:#382638}.unlock-box .yumi-badge{width:75px;height:75px}.unlock-box h2{text-align:center;font-size:29px;color:#f1c6d0;margin:12px 0 17px}.unlock-box label{font-size:12px}.unlock-box .code-form{flex-direction:column}.unlock-box .code-form input{width:100%;min-height:48px}.unlock-box .btn{min-height:48px}.secret-footnote{text-align:center;color:#cfb2c4;font-size:11px!important;padding:12px 10px}.secret-page a:focus-visible,.secret-page button:focus-visible{outline-color:#efc984}.preview-bar{font-size:10px;gap:10px;padding:9px 12px}.preview-bar button{font-size:11px}.preview-active .secret-top{position:relative}.toast{bottom:calc(88px + env(safe-area-inset-bottom))}
@media(max-width:360px){.hero h1{font-size:59px}.gate h1{font-size:46px}.ticket-bottom{padding:10px 16px}.ticket-bottom span{font-size:8px}.secret-page h1{font-size:43px}.forever-ticket h2{font-size:37px}.section{padding-left:17px;padding-right:17px}}

:root{--paper:#fff4ed;--ink:#603044;--pink:#c85779;--blush:#f4cbd3;--green:#827558;--gold:#c99e64;--line:#e8cfd0;--coupon-art:url("../assets/coupon-illustrations.webp");--prize-art:url("../assets/secret-illustrations.webp")}html{background:#e9d8dc}body{background-image:radial-gradient(#c8577910 1px,transparent 1px);background-size:14px 14px}.hero{padding-top:38px;background:radial-gradient(ellipse at top,#ffe1e8,transparent 70%)}.hero h1{font-size:64px}.love-divider{font:34px var(--serif);color:#ce9f87;margin:35px 0}.birthday-ribbon{padding:20px 12px;font-size:9px;text-align:center;letter-spacing:1.5px;border-top:1px solid #e8cfd0;border-bottom:1px solid #e8cfd0;background:#f9dfe4;color:#9e4e65}.gate-art:after{content:'A BIRTHDAY FULL OF LITTLE SURPRISES';font-size:8px}.btn{border-radius:28px;background:var(--pink);border-color:var(--pink);box-shadow:0 4px 0 #a44263}.ticket{background:#fffaf7!important;display:grid;grid-template-columns:112px 1fr;border-radius:16px;border-color:#e9cdd4;box-shadow:0 4px 0 #ecd9dc}.coupon-picture{width:112px;height:112px;background-image:var(--coupon-art);background-size:300% 300%;margin:17px 0 10px 13px;border-radius:14px;box-shadow:0 3px 12px #60304415}.tile-0{background-position:0 0}.tile-1{background-position:50% 0}.tile-2{background-position:100% 0}.tile-3{background-position:0 50%}.tile-4{background-position:50% 50%}.tile-5{background-position:100% 50%}.tile-6{background-position:0 100%}.tile-7{background-position:50% 100%}.tile-8{background-position:100% 100%}.ticket-top{padding:18px 16px 16px 27px}.ticket-icon{display:none}.ticket h3{font-size:24px;margin:12px 0 9px;line-height:1.1}.ticket p{margin:0;font-size:12px;line-height:1.65}.ticket-no{font-size:8px;letter-spacing:1px;gap:6px}.ticket-no span:first-child{display:none}.ticket-bottom{grid-column:1/-1;padding:9px 20px}.ticket-bottom span{font-size:8px}.coupon-modal-picture{background-image:var(--coupon-art);background-size:300% 300%;width:170px;height:170px;border-radius:20px;margin:0 auto 20px}.secret-picture{background-image:var(--prize-art)}.challenge-card{display:grid;grid-template-columns:90px 1fr;gap:0 16px;padding:17px}.challenge-picture{width:90px;height:90px;border-radius:12px;background-image:var(--prize-art);background-size:300% 300%;grid-row:1/4;margin-bottom:12px}.challenge-kicker{font-size:8px;line-height:1.6}.challenge-card h3{font-size:25px;margin:8px 0 5px}.challenge-card>p{grid-column:1/-1}.challenge-status,.challenge-card>button,.mystery-prize{grid-column:1/-1}.secret-content{padding:0 17px}.games-section{background:linear-gradient(#fbe2e8,#fff3ed);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.game-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin:25px 0 17px;padding:5px;background:#edd3dc;border-radius:14px}.game-tabs button{border:0;border-radius:10px;padding:10px 3px;background:transparent;color:#69374f;font-size:11px;font-weight:bold}.game-tabs button[aria-selected=true]{background:#fff8f4;box-shadow:0 2px 6px #60304415}.game-panel{background:#fffaf6;border:1px solid #e8c7d0;border-radius:20px;padding:20px 15px;box-shadow:0 7px 0 #ecd5db}.game-score{display:flex;justify-content:space-around;text-align:center;gap:10px}.game-score span{font-size:9px;letter-spacing:1px}.game-score strong{display:block;font:27px var(--serif);letter-spacing:0;margin-top:5px;color:var(--pink)}.game-instructions{text-align:center;font-size:12px;line-height:1.8;color:#856474;margin:17px 0}.heart-board{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;padding:12px;background:#f5e4e8;border-radius:16px}.heart-hole{aspect-ratio:1;border:1px solid #ead2db;background:#fff9f6;border-radius:50%;color:#d4b8c3;font-size:33px;min-width:0;transition:background .1s,transform .1s}.heart-hole.live{background:#f3b9cc;color:#b22c62;box-shadow:0 3px 0 #d48aa5}.heart-hole.live:active{transform:scale(.9)}.game-start{display:flex;margin:20px auto 0;width:100%;font-size:12px}.game-status{font-size:12px;text-align:center;line-height:1.7;min-height:40px;color:#89556e;margin:16px 0 0}.memory-board{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.memory-card{aspect-ratio:1;border:1px solid #d9adbe;border-radius:12px;background:#d87796;color:#fff6ef;font-size:26px;min-width:0}.memory-card.flipped{background:#fff0e8;color:#9d3c63}.memory-card.matched{background:#e6e7cc;border-color:#b6c099;color:#4c735b}.reaction-pad{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;width:100%;min-height:230px;background:#eedce6;border:2px solid #dbb8ca;border-radius:25px;color:#9a6684}.reaction-pad span{font-size:75px;line-height:1}.reaction-pad strong{font-size:15px}.reaction-pad.ready{background:#f49bb9;color:#8c1e4b;border-color:#c54777}.mobile-dock{background:#fff4edf5}.challenge-progress{margin-top:6px}.footer small{font-size:8px}.gate .eyebrow{letter-spacing:2px}.secret-intro h1{font-size:46px}@media(max-width:360px){.ticket{grid-template-columns:93px 1fr}.coupon-picture{width:88px;height:88px;margin-left:10px}.ticket-top{padding-left:17px;padding-right:12px}.ticket h3{font-size:22px}.hero h1{font-size:57px}.game-panel{padding:17px 11px}.heart-board{gap:7px;padding:9px}.challenge-card{grid-template-columns:74px 1fr;gap:0 12px}.challenge-picture{width:74px;height:74px}}

/* A soft, animated birthday story — all decoration is pointer-transparent. */
.ambience{position:fixed;inset:0;left:50%;transform:translateX(-50%);width:min(100%,600px);overflow:hidden;pointer-events:none;z-index:9;contain:strict}.ambient-petal{position:absolute;top:-45px;left:var(--left);font-size:var(--size);color:#cf7391;opacity:0;animation:petal-drift var(--duration) linear infinite;animation-delay:var(--delay);will-change:transform}.ambient-petal:nth-child(3n){color:#d9b786}.ambient-petal:nth-child(4n){color:#e5adc0}.hero:before,.gate:before{content:'';position:absolute;width:260px;height:260px;left:calc(50% - 130px);top:70px;border-radius:50%;background:#f8d2dd;filter:blur(50px);opacity:.35;pointer-events:none;animation:rose-glow 7s ease-in-out infinite}.gate{position:relative}.gate-copy,.gate-art,.hero>*{position:relative}.gate-art{animation:portrait-breathe 7s ease-in-out infinite}.gate-art:before{content:'';position:absolute;inset:-8px;border:1px solid #d8ae91;border-radius:90px 90px 24px 24px;pointer-events:none}.hero-portrait{width:170px;height:170px;border:7px solid #fff8f0;box-shadow:0 0 0 1px #d6aa8f,0 12px 28px #b3526a25;animation:portrait-breathe 7s ease-in-out infinite}.hero h1 em{position:relative}.hero h1 em:after{content:'';display:block;height:8px;position:absolute;left:0;right:0;bottom:-7px;border-bottom:2px solid #d498a7;border-radius:50%;transform:rotate(-4deg)}.eyebrow{line-height:1.65}.love-divider{letter-spacing:6px}.yumi-badge{transition:transform .3s,box-shadow .3s}.yumi-badge:active{transform:rotate(-6deg) scale(1.06)}.ticket{transition:box-shadow .3s,transform .3s,border-color .3s}.ticket:active{transform:scale(.988)}.ticket.is-stamped{border-color:#bbaf8b;box-shadow:0 4px 0 #dedcc5}.ticket.is-stamped:after{content:'ENJOYED ♡';position:absolute;right:14px;top:11px;padding:5px 8px;border:2px solid #7e8662;border-radius:5px;color:#6f7754;background:#fff8eeed;font-size:9px;letter-spacing:1.5px;transform:rotate(8deg);animation:stamp-in .5s ease-out}.coupon-picture{transition:transform .5s}.ticket:active .coupon-picture{transform:rotate(-2deg) scale(1.03)}.soft-reveal{animation:soft-arrive .7s ease-out both}.ticket.spotlit,.challenge-card.spotlit{outline:3px solid #d19baf;outline-offset:4px;animation:spot-glow 1.5s ease-in-out}.birthday-opening{position:fixed;inset:0;z-index:70;pointer-events:none;background:#fff2e8;display:grid;place-items:center;animation:opening-fade 1.6s ease forwards}.opening-seal{display:grid;place-items:center;width:180px;height:135px;background:linear-gradient(145deg,#f6c3d1,#ed9fb6);border:1px solid #b76a85;border-radius:10px;box-shadow:0 14px 50px #93435730;transform:rotate(-5deg);animation:seal-open 1.3s ease both}.opening-seal:before{content:'♡';display:grid;place-items:center;width:64px;height:64px;border:1px solid #d99c76;border-radius:50%;background:#fff2df;color:#b55c72;font:39px Georgia}.opening-caption{position:absolute;top:calc(50% + 96px);font:italic 25px Georgia;color:#985268}.moment-garden{padding:23px 14px;margin:0 0 26px;border:1px solid #e4c3ce;border-radius:20px;background:linear-gradient(135deg,#fffaf1,#fae5ec);text-align:center}.moment-garden .eyebrow{font-size:9px;letter-spacing:1.6px}.moment-garden p{font-size:11px;line-height:1.7;color:#927082;margin:12px 0 0}.moment-stamps{display:grid;grid-template-columns:repeat(9,1fr);gap:2px;margin-top:13px}.moment-stamps button{background:none;border:0;border-radius:8px;min-width:0;padding:0;color:#caa1b1;min-height:47px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:25px;line-height:1}.moment-stamps button small{display:block;font-size:8px;margin-top:6px;color:#977182}.moment-stamps button.collected{color:#bb4d73;animation:stamp-in .4s ease-out}.moment-stamps button.collected small{color:#8a3858}.wish-card{margin:12px 23px 33px;padding:25px 22px 22px;background:linear-gradient(#fff9f0,#fbe3e9);border:1px solid #e2c0ca;border-radius:24px;text-align:center;box-shadow:0 7px 0 #edd2d8}.wish-card .eyebrow{font-size:9px}.wish-card h2{font-size:30px;margin:12px 0 0}.little-cake{width:150px;height:105px;position:relative;margin:28px auto 15px}.cake-layer{position:absolute;bottom:5px;left:5px;width:140px;height:64px;background:repeating-linear-gradient(90deg,#efb1c5 0 17px,#f8c8d6 17px 34px);border-radius:50% 50% 12px 12px/16px 16px 10px 10px;border:1px solid #d58ca4;box-shadow:0 7px 0 #e6cbb0}.cake-layer:before{content:'♡';display:block;position:absolute;left:0;right:0;top:0;border-radius:50%;height:27px;background:#fff2e7;color:#cb819e;font-size:18px}.candle{position:absolute;left:var(--candle-left);top:10px;width:8px;height:34px;border-radius:2px;background:repeating-linear-gradient(35deg,#fff7de 0 5px,#d993af 5px 10px);z-index:1}.flame{position:absolute;left:-2px;top:-19px;width:12px;height:19px;background:#efb850;border-radius:70% 30% 60% 40%;box-shadow:0 0 16px #efa7419c;transform-origin:center bottom;animation:candle-flicker 1.6s ease-in-out infinite alternate}.candle:nth-child(2) .flame{animation-delay:-.7s}.candle:nth-child(3) .flame{animation-delay:-1.1s}.wish-made .flame{opacity:0;transition:opacity .5s}.wish-status{min-height:42px;font:italic 17px/1.5 Georgia;color:#9e5574;margin:15px 0 0}.wish-card button{font-size:12px}.journey-card{padding:25px 18px;border:1px solid #dfc9c7;background:linear-gradient(155deg,#fff9ef,#f6e6e9);border-radius:24px;margin:0 0 28px}.journey-card .eyebrow{text-align:center;font-size:9px}.journey-map{position:relative;height:380px;margin:17px auto 0;max-width:340px}.journey-lines{position:absolute;width:100%;height:100%;inset:0;overflow:visible}.journey-trail{fill:none;stroke:#d4a6b5;stroke-width:3;stroke-dasharray:4 7;animation:trail-flow 10s linear infinite}.journey-stop{position:absolute;display:flex;align-items:center;gap:10px;background:#fff9f1;border:1px solid #dab1be;border-radius:16px;padding:9px 13px;box-shadow:0 4px 0 #e6cdd4;color:#683c4e;text-align:left;min-height:57px;max-width:230px;transform:translate(-50%,-50%);transition:box-shadow .3s}.journey-stop b{font-size:23px;font-weight:normal}.journey-stop span{font-size:12px;line-height:1.5}.journey-stop small{display:block;font-size:9px;color:#a07087}.journey-stop[aria-pressed=true]{border-color:#b95d7c;box-shadow:0 4px 0 #c38ba1,0 0 0 3px #f1d0dc}.journey-stop:nth-of-type(1){left:34%;top:10%}.journey-stop:nth-of-type(2){left:65%;top:30%}.journey-stop:nth-of-type(3){left:34%;top:50%}.journey-stop:nth-of-type(4){left:65%;top:70%}.journey-stop:nth-of-type(5){left:40%;top:91%}.journey-detail{min-height:69px;text-align:center;font:italic 18px/1.6 Georgia;color:#a0647e;margin:16px 0 0}.event{position:relative;margin-left:10px;padding-left:15px;border-left:1px solid #ddbac7}.event:before{content:'';position:absolute;width:8px;height:8px;left:-5px;top:25px;background:#c77a95;border-radius:50%;box-shadow:0 0 0 4px #fff0e9}.event.spotlit{background:#f9dfe8;border-radius:0 12px 12px 0}.secret-sky{position:relative;margin:12px auto 4px;max-width:320px;aspect-ratio:1.6;isolation:isolate}.sky-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.sky-lines path{stroke:#b08b7860;stroke-width:1;fill:none;stroke-dasharray:3 4}.sky-node{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);border:0;background:#39283ee6;border-radius:50%;width:44px;height:44px;min-height:44px;padding:0;color:#907d96;font-size:26px}.sky-node.unlocked{color:#f2cd87;text-shadow:0 0 16px #e8ab5b;animation:star-breathe 3.5s ease-in-out infinite}.sky-node.unlocked:after{content:'';position:absolute;inset:4px;border:1px solid #e7b76770;border-radius:50%}.sky-caption{font-size:11px!important;margin:9px 0 0;color:#d4b6c7}.challenge-card.newly-revealed{animation:prize-glow 1.1s ease-out}.mystery-prize.revealed strong{animation:soft-arrive .5s ease both}.round-time-track{height:6px;border-radius:8px;background:#eed7df;margin:15px 0 2px;overflow:hidden}.round-time-track span{height:100%;width:100%;display:block;background:linear-gradient(90deg,#d47498,#ba3e71);border-radius:8px;transition:width .1s linear}.heart-hole.live{animation:heart-bloom .28s ease-out}.memory-card.flipped{animation:card-turn .25s ease-out}.memory-card.matched{animation:match-pop .4s ease-out}.reaction-pad.ready span{animation:heart-beat .65s ease-in-out infinite}.tap-heart{position:fixed;z-index:60;pointer-events:none;color:#bf4c79;font-size:20px;animation:tap-rise .75s ease-out forwards}.secret-page .tap-heart{color:#e7b4d0}.mobile-dock a.active{background:#f4dbe4;border-radius:12px;color:#a63861}.mobile-dock a.active b{animation:heart-bloom .4s ease-out}.paused .soft-reveal,.paused .newly-revealed{animation:none!important}.paused .ambient-petal{display:none}.paused .birthday-opening{display:none}.paused .wish-made .flame{transition:none}.paused .flame{animation:none!important}.paused .round-time-track span{transition:none}
@keyframes petal-drift{0%{transform:translate3d(0,-30px,0) rotate(0);opacity:0}12%{opacity:.22}85%{opacity:.17}100%{transform:translate3d(35px,105vh,0) rotate(150deg);opacity:0}}@keyframes portrait-breathe{50%{transform:translateY(-5px) rotate(.5deg)}}@keyframes rose-glow{50%{opacity:.6;transform:scale(1.13)}}@keyframes soft-arrive{from{opacity:.45;transform:translateY(13px)}to{opacity:1;transform:translateY(0)}}@keyframes stamp-in{from{opacity:0;scale:1.3}to{opacity:1;scale:1}}@keyframes opening-fade{0%,55%{opacity:1}100%{opacity:0}}@keyframes seal-open{0%{transform:rotate(-5deg) scale(.75)}45%{transform:rotate(3deg) scale(1)}80%,100%{transform:rotate(0deg) scale(1.13);opacity:0}}@keyframes candle-flicker{to{transform:rotate(7deg) scale(.85,1.1);box-shadow:0 0 24px #efa741b0}}@keyframes trail-flow{to{stroke-dashoffset:-110}}@keyframes star-breathe{50%{text-shadow:0 0 25px #efc26e}}@keyframes prize-glow{0%{box-shadow:0 0 0 #f1c37e}40%{box-shadow:0 0 35px #f1c37e77}100%{box-shadow:0 0 0 #f1c37e}}@keyframes heart-bloom{from{scale:.7;opacity:.3}to{scale:1;opacity:1}}@keyframes card-turn{from{transform:rotateY(70deg)}to{transform:rotateY(0)}}@keyframes match-pop{50%{scale:1.06}}@keyframes heart-beat{50%{transform:scale(1.12)}}@keyframes tap-rise{to{transform:translateY(-65px) rotate(20deg);opacity:0}}@keyframes spot-glow{50%{box-shadow:0 0 22px #dc9db766}}
@media(prefers-reduced-motion:reduce){.ambient-petal,.birthday-opening,.tap-heart{display:none!important}.soft-reveal,.challenge-card.newly-revealed{animation:none!important}.round-time-track span{transition:none!important}}@media(max-width:360px){.moment-stamps button{font-size:21px}.journey-stop{padding:8px 10px;gap:7px}.journey-stop span{font-size:11px}.journey-card{padding-left:12px;padding-right:12px}.journey-stop:nth-of-type(2),.journey-stop:nth-of-type(4){left:64%}}
