:root{--ink:#294736;--green:#4c7048;--paper:#f8f5e9}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:system-ui,-apple-system,'PingFang SC',sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;font:inherit;color:inherit}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid #c58c54;outline-offset:3px}header{max-width:1250px;margin:auto;padding:23px 32px;display:flex;align-items:center;justify-content:space-between}header a{text-decoration:none;color:inherit;display:flex;align-items:center;gap:10px;font-size:24px}header b{font-size:14px;letter-spacing:2px}header a span{font-size:12px;border-left:1px solid #bfc8b1;padding-left:13px;color:#828c75}header button,.gamehead button{background:transparent;border:1px solid #cfd7c2;padding:9px 15px;border-radius:24px;font-size:12px}main{max-width:1170px;padding:22px 28px;margin:auto}#intro{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:40px}.eyebrow{font-size:11px;letter-spacing:2px;color:#7b8967}h1{font:500 clamp(38px,4.5vw,61px)/1.3 Georgia,'Songti SC',serif;letter-spacing:-2px;margin:24px 0}h1 span{color:#7e9259}p{font-size:14px;line-height:2;color:#7f8874}.primary{background:#4c7048;color:#fffdf1;border:0;border-radius:40px;padding:17px 27px;box-shadow:0 4px #345332;margin-top:20px}small{display:block;font-size:11px;color:#89937b;margin-top:24px}.cover{height:440px;position:relative;overflow:hidden;background:#e9e8c9;border-radius:47% 47% 30% 30%;isolation:isolate}.sun{position:absolute;background:#fff4c9;width:130px;height:130px;border-radius:50%;top:40px;left:45%;box-shadow:0 0 60px #fff8da}.hill{position:absolute;width:650px;height:340px;border-radius:50%;background:#b5c296;bottom:-30px;left:-140px;transform:rotate(20deg)}.h2{background:#8fa97c;left:100px;bottom:-110px;transform:rotate(-25deg)}.pond{position:absolute;width:600px;height:170px;border-radius:50%;background:#8eb8ab;bottom:-30px;left:-30px;border:10px solid #d4dcbc}.lily{position:absolute;width:160px;height:48px;border-radius:50%;background:#6a8d4c;bottom:53px;left:calc(50% - 80px);box-shadow:0 9px #53763f}.coverfrog{position:absolute;font-size:119px;left:50%;bottom:65px;transform:translateX(-50%);filter:drop-shadow(0 5px 1px #35552d20)}.coverfrog i{position:absolute;color:#d19670;left:45px;top:-21px;font-size:48px;font-style:normal;transform:rotate(8deg)}.reed{position:absolute;font-size:160px;bottom:4px;color:#5e7952}.r1{left:-12px;transform:rotate(-25deg)}.r2{right:-5px;transform:rotate(20deg)}.floatnote{position:absolute;bottom:17px;left:50%;transform:translateX(-50%) rotate(-5deg);background:#fff8df;padding:11px 19px;box-shadow:0 4px 9px #29473620;font:italic 15px Georgia}.spark{position:absolute;color:#fff7cf;font-size:35px}.s1{left:24%;top:40%}.s2{right:17%;top:30%}.chapters{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #dce1ce;gap:30px;padding-top:25px}.chapters i{font-size:11px;letter-spacing:2px;color:#889776;font-style:normal}.chapters h3{font:500 20px Georgia,'Songti SC',serif;margin:10px 0}.chapters p{font-size:12px;margin:0}footer{max-width:1170px;margin:30px auto;padding:0 28px;display:flex;justify-content:space-between;color:#939d85;font-size:11px}footer span{letter-spacing:1px;font-size:9px}.gamehead{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}h2{font:500 28px Georgia,'Songti SC',serif;margin:8px 0}.status{display:flex;justify-content:space-between;gap:15px;font-size:13px;padding:12px 16px;background:#e9eddc;border-radius:14px 14px 0 0}.viewport{position:relative;overflow:hidden;border-radius:0 0 20px 20px;box-shadow:0 12px 30px #29473610}canvas{display:block;width:100%;aspect-ratio:960/600;touch-action:none;background:#d4dfb6}#speech{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);max-width:90%;width:max-content;background:#fffbedee;border:1px solid #d4dbc4;border-radius:16px;padding:10px 20px;font-size:13px;box-shadow:0 4px 12px #243d2720;pointer-events:none;transition:opacity .3s}#speech:empty{opacity:0}.controls{display:flex;align-items:center;justify-content:space-between;padding:18px 0;gap:15px}.dpad{display:grid;grid-template-columns:repeat(3,44px);grid-template-rows:repeat(2,38px);gap:4px}.dpad button{border:1px solid #bdcba9;background:#edf0e1;border-radius:10px;font-size:20px;touch-action:none;user-select:none}.dpad button:first-child{grid-column:2}.dpad button:nth-child(2){grid-column:1;grid-row:2}.dpad button:nth-child(3){grid-column:2;grid-row:2}.dpad button:nth-child(4){grid-column:3;grid-row:2}.hint{font-size:12px;line-height:1.8;color:#6f8061}.hint span{font-size:11px;color:#96a187}.actions{display:flex;gap:10px}.actions button{background:#e5c67d;border:1px solid #cfb169;border-bottom:4px solid #c7a05b;border-radius:50%;width:73px;height:73px;touch-action:manipulation}.actions #act{background:#5c7e50;color:white;border-color:#41613b}.actions span{display:block;font-size:8px;letter-spacing:1px;opacity:.7;margin-top:4px}#journal{display:flex;gap:20px;padding:18px 0;border-top:1px solid #dce1ce;font-size:12px;line-height:1.8}#pocket{color:#7f8d70}#overlay{position:absolute;inset:0;background:#182d27d9;display:flex;align-items:center;justify-content:center;text-align:center;padding:25px;backdrop-filter:blur(5px);color:#fff9df}#overlay[hidden],[hidden]{display:none!important}.panel{max-width:580px}.panel h2{font-size:38px;line-height:1.3}.panel p{color:#d8dfc9}.panel .eyebrow{color:#e3c77d}.panel button{margin:15px 7px 0}.secondary{background:transparent;color:inherit;border:1px solid #9cae8e;border-radius:30px;padding:12px 20px}.wish{font:400 24px/1.6 Georgia,serif}.celebrate{font-size:60px;margin:14px}dialog{border:1px solid #d3ddc3;border-radius:20px;background:var(--paper);color:var(--ink);max-width:480px;padding:30px}dialog::backdrop{background:#203d3288}@media(max-width:650px){header{padding:17px 16px}header a span{display:none}header b{font-size:12px;letter-spacing:1px}header button{padding:7px 9px;font-size:11px}main{padding:15px 12px}#intro{grid-template-columns:1fr;gap:26px}.introcopy{text-align:center}h1{font-size:40px}.cover{height:340px;max-width:410px;width:100%;margin:auto}.chapters{grid-template-columns:1fr;gap:17px;padding:22px 10px}.chapters p{display:inline}.chapters h3{display:inline;margin:0 10px}.chapters i{display:block;margin-bottom:7px}footer{padding:0 18px;line-height:1.8}footer span{display:none}.gamehead h2{font-size:23px}.status{font-size:11px;padding:10px;min-height:52px}.hint{display:none}.controls{padding:15px 7px}.dpad{grid-template-columns:repeat(3,43px);grid-template-rows:repeat(2,40px)}.actions button{width:65px;height:65px}#speech{font-size:11px;padding:7px 10px;bottom:9px}.panel h2{font-size:26px}.panel p{font-size:12px;line-height:1.8}.panel .primary{padding:12px 20px}.wish{font-size:18px}.celebrate{font-size:38px;margin:4px}#overlay{padding:15px}#journal{gap:12px;padding:12px 7px;font-size:11px}}
.panel{max-height:100%;overflow-y:auto;overscroll-behavior:contain;padding:8px}#helpbox{max-height:85vh;overflow:auto}

#secretanswer{width:100%;max-width:320px;border:1px solid #a4b28e;border-radius:12px;padding:13px 15px;background:#faf6e6;color:#294736;font:inherit;margin-top:17px}#secrethint{font-size:12px;min-height:24px}

.secretchoices{display:grid;gap:10px;max-width:390px;margin:20px auto 0}.answer{border:1px solid #c3cba6;background:#f6f1da;color:#294736;border-radius:13px;padding:13px 18px;font:inherit}.answer:disabled{opacity:.45}.birthdaycake{width:210px;margin:32px auto 15px}.candles{display:flex;justify-content:center;gap:30px;height:55px;align-items:end}.candle{position:relative;display:block;background:repeating-linear-gradient(45deg,#e4ad8e 0 5px,#fff0c8 5px 10px);width:12px;height:38px;border-radius:3px}.flame{position:absolute;left:0;top:-24px;width:13px;height:23px;background:#ffda72;border-radius:70% 30% 60% 40%;box-shadow:0 0 18px #f5d86f;animation:flicker .8s infinite alternate;transform-origin:bottom}.out .flame{opacity:0;animation:none;transition:opacity .4s}.out:after{content:'〰';position:absolute;top:-35px;left:-4px;color:#d4d7c9;font-size:22px}.cakebody{height:75px;border-radius:14px 14px 20px 20px;background:linear-gradient(#fff3d1 0 18px,#d99d83 18px 28px,#f4dfb8 28px 53px,#c79178 53px 60px,#f0d5aa 60px);display:grid;place-items:center;box-shadow:0 8px 0 #748766}.cakebody span{font-size:11px;letter-spacing:3px;color:#876750}.wishform{margin:18px auto 0;max-width:430px}#birthdaywish{display:block;width:100%;min-height:110px;max-height:28vh;resize:vertical;border:1px solid #b5c19e;border-radius:13px;background:#fbf6e5;color:#294736;padding:15px;font:16px/1.7 system-ui}.privatenote{font-size:11px!important;line-height:1.6!important;color:#c4ceb7!important}.panel>p:empty{display:none}#candlestatus,#wishstatus{font-size:12px;line-height:1.6}.panel{scrollbar-width:thin}#journal>b{white-space:nowrap;flex-shrink:0}@keyframes flicker{to{transform:rotate(7deg) scale(.9)}}@media(prefers-reduced-motion:reduce){.flame{animation:none}}@media(max-width:650px){.birthdaycake{width:170px;margin-top:27px}.panel h2{font-size:25px}.answer{font-size:14px;padding:11px 15px}.secretchoices{margin-top:14px}.panel>p{margin:9px 0}.wishform{margin-top:12px}.panel .secondary{font-size:12px;padding:10px 15px}.viewport #overlay{padding:12px}.birthdaycake .cakebody{height:60px}}
@media(max-width:650px){.viewport:has(#overlay:not([hidden])){min-height:480px}.panel{width:100%}}

.actions #sneak{background:#d4debe;border-color:#a5b58a;font-size:12px}.actions #sneak[aria-pressed=true]{background:#92af75;color:#fff}@media(max-width:650px){.actions{gap:5px}.actions button{width:55px;height:55px}.controls{gap:6px;padding-left:0;padding-right:0}.dpad{grid-template-columns:repeat(3,38px)}}

.finished-dish{display:block;width:100%;max-height:330px;object-fit:contain;border-radius:15px;margin:18px auto 10px;background:#1c342c}.dishcaption{display:block;color:#efce8e;font-size:13px}.saucechoices{display:grid;gap:12px;margin:20px auto;max-width:360px}.cookvisual{max-width:370px;margin:22px auto 10px}.minipan{position:relative;width:240px;height:180px;background:radial-gradient(ellipse,#d68045,#bb4d2e);border:13px solid #4c5147;border-radius:50%;margin:15px auto 25px;box-shadow:0 8px 0 #242f29}.minipan:after{content:'';position:absolute;width:75px;height:25px;background:#4c5147;border-radius:0 10px 10px 0;right:-70px;top:65px;transform:rotate(20deg)}.veg{position:absolute;font-size:28px}.v1{left:20px;top:25px}.v2{right:30px;top:25px}.v3{left:35px;bottom:20px}.v4{right:35px;bottom:20px}.spoon{position:absolute;left:80px;top:35px;font-size:65px;transition:transform .35s}.cookmeter{height:25px;border-radius:20px;background:#d9bb83;position:relative;overflow:hidden}.goodzone{height:100%;position:absolute;background:#89ad70}.cookmeter #cookcursor{position:absolute;top:0;width:5px;height:25px;background:#fffbed;border:1px solid #364b32}.egghole{position:absolute;top:55px;width:44px;height:44px;border:2px dashed #f4dc9b;border-radius:50%;background:#8e3e2f;color:white;font-size:30px}.hole0{left:25px}.hole1{right:25px}.aimEgg{position:absolute;top:-40px;font-size:35px;transform:translateX(-50%)}#cookfeedback,#saucenote{min-height:36px;font-size:13px;line-height:1.7}@media(max-width:650px){.finished-dish{max-height:230px}.minipan{width:200px;height:150px}.minipan:after{width:42px;right:-38px}.cookvisual{max-width:280px}.veg{font-size:22px}.egghole{top:45px}.spoon{font-size:50px;left:65px;top:25px}}
.panel{width:min(580px,100%);overflow-x:hidden}.cookvisual{width:100%}.finished-dish{height:auto}

/* Mimi's twenty-third birthday */
.rose-bouquet{position:relative;width:260px;height:235px;margin:12px auto 0;isolation:isolate}.white-rose{position:absolute;left:calc(50% + var(--x));top:calc(12px + var(--y));width:31px;height:29px;background:#fffdf1;border:1px solid #d9d3b7;border-radius:46% 54% 39% 61%;transform:translateX(-50%) rotate(var(--r));box-shadow:0 3px 7px #132d2433;z-index:2}.white-rose:before,.white-rose:after,.white-rose i{content:'';position:absolute;inset:5px;border:1px solid #d7cdb0;border-radius:65% 35% 60% 40%;background:#fffcf0}.white-rose:after{inset:9px;transform:rotate(55deg)}.white-rose i{inset:12px;background:#eee1be}.bouquet-wrap{position:absolute;left:36px;right:36px;top:50px;height:165px;background:linear-gradient(110deg,#a7b696,#d4dec3 48%,#91a783);clip-path:polygon(0 0,100% 0,64% 100%,38% 100%);z-index:1}.bouquet-ribbon{position:absolute;top:173px;left:57px;right:57px;background:#e8d5a7;color:#435344;padding:8px 0;font-size:12px;letter-spacing:2px;transform:rotate(-6deg);z-index:3}.rose-note{display:block;font-size:16px;line-height:1.9;margin:8px 0 18px;color:#eee8cf}.firework-sky{height:245px;position:relative;overflow:hidden;border-radius:18px;margin:15px 0;background:radial-gradient(ellipse at bottom,#344b55,#101e32 75%)}.sky-age{position:absolute;inset:40px 0 auto;text-align:center;font:italic 104px Georgia,serif;color:#f5dfac;text-shadow:0 0 24px #e6c98e55}.sky-age small{display:block;font:10px sans-serif;letter-spacing:3px;color:#fff0cf}.firework{position:absolute;left:var(--fx);top:var(--fy);width:1px;height:1px}.firework i{position:absolute;inset:0;width:3px;height:3px;border-radius:50%;background:var(--color);box-shadow:0 0 6px var(--color);animation:rose-fireworks 3.8s var(--delay) infinite both;--travel:60px}@keyframes rose-fireworks{0%,10%{opacity:0;transform:rotate(var(--angle)) translateY(0)}16%{opacity:1}65%{opacity:.8}85%,100%{opacity:0;transform:rotate(var(--angle)) translateY(var(--travel)) scale(.3)}}@media(prefers-reduced-motion:reduce){.firework i{animation:none;opacity:.8;transform:rotate(var(--angle)) translateY(48px)}}
.bouquet-stage{height:340px;position:relative;perspective:850px;margin:5px auto 10px;max-width:360px;background:radial-gradient(ellipse at 50% 42%,#c9dbb41b,transparent 65%)}.rose-bouquet.sculpted{height:295px;width:310px;margin:0 auto;transform-style:preserve-3d;animation:bouquet-turn 9s ease-in-out infinite}.sculpted .rose3d{left:calc(50% + var(--x));top:calc(100px + var(--y));width:1px;height:1px;border:0;background:none;box-shadow:none;border-radius:0;transform:translateZ(var(--z)) rotateY(var(--tilt)) rotateX(-10deg);transform-style:preserve-3d;z-index:auto}.sculpted .rose3d:before,.sculpted .rose3d:after{display:none}.sculpted .rose3d .petal{display:block;position:absolute;inset:auto;left:calc(var(--size) / -2);top:calc(var(--size) / -2);width:var(--size);height:var(--size);background:radial-gradient(ellipse at 32% 20%,#fffef9 12%,#f3f0de 55%,#c4bea2 94%);border:.6px solid #fffceaba;border-radius:42% 58% 60% 40%;box-shadow:inset -2px -3px 5px #827b5d35,0 2px 3px #172a2233;transform:translateZ(var(--depth)) rotateZ(var(--a)) rotateX(var(--open)) translateY(-8px);transform-origin:50% 80%;backface-visibility:visible}.rose-stem{position:absolute;left:calc(50% + var(--x));top:calc(100px + var(--y));width:3px;height:160px;transform-origin:top;transform:translateZ(0) rotateZ(calc(var(--x) / 3));background:linear-gradient(90deg,#31472d,#7e9666,#354e36)}.rose-leaf{position:absolute;left:calc(50% - 17px);top:50px;width:35px;height:85px;border-radius:100% 0 100% 0;background:linear-gradient(70deg,#263e2c,#78946a 48%,#405d42 50%,#78946a);transform-origin:50% 100%;transform:rotateZ(var(--a)) translateY(-45px) translateZ(-8px);box-shadow:inset 1px 2px 3px #e8efbd44}.wrap-back,.wrap-front{position:absolute;inset:75px 38px 0;clip-path:polygon(0 0,100% 8%,66% 100%,35% 100%);background:linear-gradient(112deg,#83967e,#d3d9c1 40%,#758a72 44%,#b4c4a9);transform:translateZ(-20px);filter:drop-shadow(4px 8px 8px #10251b55)}.wrap-front{inset:151px 46px -12px;background:linear-gradient(75deg,#8b9b81,#dbe1cb 46%,#a1b294 49%,#c8d2b7);clip-path:polygon(0 0,54% 22%,100% 0,65% 100%,36% 100%);transform:translateZ(80px)}.silk-ribbon{position:absolute;left:68px;right:68px;top:230px;height:25px;transform:translateZ(85px) rotate(-7deg);background:linear-gradient(#eadbbc,#c3a77b,#f1e4c6);box-shadow:0 4px 6px #162a2533;color:#5f5945;text-align:center;font-size:9px;letter-spacing:2px;padding-top:5px}.silk-ribbon i,.silk-ribbon b{position:absolute;left:calc(50% - 40px);top:-13px;width:42px;height:27px;border-radius:80% 35% 40% 70%;border:6px solid #decca8;transform:rotate(18deg);box-shadow:inset 2px 2px 4px #594d3e66,1px 3px 4px #142a2233}.silk-ribbon b{left:50%;transform:scaleX(-1) rotate(18deg)}.silk-ribbon span{position:absolute;top:28px;left:0;right:0;color:#e8dec4;font-size:9px}.bouquet-caption{position:absolute;bottom:0;left:0;right:0;text-align:center;font-size:8px;letter-spacing:2px;color:#c8c7ab}@keyframes bouquet-turn{0%,100%{transform:rotateX(5deg) rotateY(-12deg) rotateZ(-2deg)}50%{transform:rotateX(-3deg) rotateY(13deg) rotateZ(2deg)}}.heart-sky{height:320px;background:#0b1729}.heart-sky canvas{width:100%;height:100%;display:block}.heart-sky .sky-age{inset:auto 0 22px;font-size:62px;pointer-events:none;text-shadow:0 0 25px #f7d7a74a}.heart-sky .sky-age small{font-size:9px;margin-top:6px;letter-spacing:2px}.firework-sound{display:block;margin:10px auto;border:1px solid #c9d2b177;border-radius:30px;padding:9px 18px;background:#ffffff08;color:#f0e7ce;font-size:13px}.panel:has(.bouquet-stage) h2,.panel:has(.heart-sky) h2{font-size:clamp(23px,4vw,36px);line-height:1.4}.panel:has(.bouquet-stage),.panel:has(.heart-sky){padding-top:18px;padding-bottom:24px}@media(max-width:600px){.bouquet-stage{height:310px}.rose-bouquet.sculpted{transform-origin:50% 45%;scale:.88}.heart-sky{height:285px}.panel:has(.bouquet-stage) .rose-note,.panel:has(.heart-sky) .rose-note{font-size:14px;line-height:1.8}.panel:has(.bouquet-stage) .primary{margin-top:9px}}@media(prefers-reduced-motion:reduce){.rose-bouquet.sculpted{animation:none;transform:rotateX(5deg) rotateY(-8deg)}}
.rose-bouquet.sculpted{isolation:auto}.sculpted .wrap-back{top:153px;bottom:-5px}.sculpted .wrap-front{top:184px;bottom:-12px}.sculpted .rose-leaf{top:95px;transform:rotateZ(var(--a)) translateY(-32px) translateZ(-30px);width:27px;height:63px}.sculpted .rose-stem{height:135px}.sculpted .silk-ribbon{top:240px}.bouquet-stage{height:330px}.bouquet-caption{font-size:7px;letter-spacing:1.6px}@media(max-width:600px){.bouquet-stage{height:305px}}

.sculpted .wrap-back{top:125px}

#sneak{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.controls{flex-wrap:wrap}.actions{flex-shrink:0}

.rosephoto-stage{height:340px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;margin:8px auto 14px;perspective:900px;max-width:100%}.rosephoto{height:310px;width:100%;object-fit:contain;filter:drop-shadow(0 15px 18px #0b211e55);animation:rosephoto-sway 9s ease-in-out infinite;transform-origin:50% 75%}.rosephoto-tag{font-size:8px;letter-spacing:2px;color:#dddbc3;margin-top:12px;line-height:1.5}.panel:has(.rosephoto-stage) h2{font-size:clamp(23px,4vw,34px);line-height:1.4;overflow-wrap:anywhere}.panel:has(.rosephoto-stage){min-width:0;width:min(580px,100%)}.primary:disabled{opacity:.55;cursor:wait}.finished-dish{display:block;margin:15px auto;max-width:100%;height:auto;object-fit:contain}#overlay{overscroll-behavior:contain}@keyframes rosephoto-sway{0%,100%{transform:rotateY(-7deg) rotateZ(-1deg)}50%{transform:rotateY(7deg) rotateZ(1deg)}}@media(max-width:650px){.rosephoto-stage{height:300px}.rosephoto{height:275px}.panel:has(.rosephoto-stage) .rose-note{font-size:14px;line-height:1.8}.panel:has(.rosephoto-stage) .primary{margin-top:9px}.finished-dish{max-height:230px}}@media(prefers-reduced-motion:reduce){.rosephoto{animation:none}}

.counted-bouquet-stage{height:360px;margin:12px auto 14px;display:flex;flex-direction:column;align-items:center;justify-content:center;perspective:900px;max-width:100%}.counted-bouquet{height:330px;width:min(310px,100%);position:relative;animation:rosephoto-sway 9s ease-in-out infinite;transform-origin:50% 80%;filter:drop-shadow(0 10px 15px #14291f44)}.rose-wrap-photo{position:absolute;width:100%;height:330px;object-fit:contain;top:0;left:0;clip-path:inset(58% 0 0 0);z-index:0}.bloom-cluster{position:absolute;left:0;right:0;top:5px;height:215px;z-index:1}.counted-rose{position:absolute;left:calc(50% + var(--rx));top:var(--ry);width:21%;height:auto;aspect-ratio:1;object-fit:contain;transform:translateX(-50%) rotate(var(--rot));z-index:var(--layer);filter:drop-shadow(0 3px 2px #18281944)}.panel:has(.counted-bouquet-stage) h2{font-size:clamp(23px,4vw,34px);line-height:1.4;overflow-wrap:anywhere}.panel:has(.counted-bouquet-stage){width:min(580px,100%);min-width:0}@media(max-width:650px){.counted-bouquet-stage{height:330px}.counted-bouquet{height:305px}.rose-wrap-photo{height:305px;top:8px;clip-path:inset(58% 0 0)}.panel:has(.counted-bouquet-stage) .rose-note{font-size:14px;line-height:1.8}}@media(prefers-reduced-motion:reduce){.counted-bouquet{animation:none}}

.illustrated-wrap{position:absolute;inset:0;width:100%;height:100%}.illustrated .counted-rose{filter:drop-shadow(0 2px 1px #34463020);width:22%}.counted-rose svg{width:100%;height:100%;display:block}.illustrated .counted-bouquet{filter:none;animation:rosephoto-sway 12s ease-in-out infinite}.illustrated .bloom-cluster{top:7px}

header>div{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}#music{white-space:nowrap}@media(max-width:650px){header{gap:8px}header>div{gap:4px}header #music{font-size:10px;padding:7px 8px}}

#coin-counter{background:#f2e2af;color:#6b5b30;padding:4px 9px;border-radius:16px;white-space:nowrap;font-size:12px}.status{align-items:center;flex-wrap:wrap}.shake-reward{font-size:50px;margin:18px auto}@media(max-width:650px){#coin-counter{font-size:10px}.status{gap:5px 10px}#objective{flex-basis:100%}}

@font-face{font-family:MimiCute;src:url('mimi-cute-subset.ttf') format('truetype');font-display:swap}#title,.panel h2{font-family:MimiCute,'HanziPen SC','Hannotate SC','Yuanti SC','Arial Rounded MT Bold',sans-serif;font-weight:400;letter-spacing:1px}.panel:has(.birthday-letter){width:min(600px,100%);padding:12px 8px 25px}.panel:has(.birthday-letter) h2{font-size:clamp(27px,4vw,38px);color:#fff0cd;margin:14px 0 22px}.birthday-letter{background:#f8f2df;color:#465b43;border:1px solid #dfd7b9;border-radius:22px 22px 22px 6px;padding:24px 25px;text-align:left;font-family:'Yuanti SC','Hiragino Maru Gothic ProN','PingFang SC',sans-serif;box-shadow:0 9px 22px #112e2525;font-size:15px;line-height:1.95}.letter-stamp{color:#aa8e65;text-align:center;font-size:11px;letter-spacing:2px;margin:0 0 20px}.letter-salute{font-size:19px;font-weight:600;color:#526c47;margin-bottom:17px}.letter-paragraph{margin:0 0 19px}.letter-paragraph strong{font-weight:500;color:#8a634a;background:linear-gradient(transparent 65%,#eddbb3 65%)}.letter-signoff{text-align:right;margin-top:25px;color:#728460;font-size:15px}.letter-signoff span{color:#966f65}.panel:has(.birthday-letter) .eyebrow{color:#e8d7b0;font-size:11px;letter-spacing:2px}.panel:has(.birthday-letter) .primary{margin-top:24px}@media(max-width:650px){.birthday-letter{padding:21px 19px;font-size:14px;line-height:1.95}.letter-salute{font-size:18px}.letter-stamp{font-size:10px;letter-spacing:1px}.panel:has(.birthday-letter){padding:6px 0 20px}}

#speech{position:static;left:auto;bottom:auto;transform:none;max-width:none;width:100%;min-height:66px;margin:10px 0 0;display:flex;align-items:center;border-radius:14px;padding:12px 17px;box-shadow:none;font-size:13px;line-height:1.7;transition:none;background:#efefdf;border:1px solid #dde0ca;pointer-events:none}#speech:empty{opacity:1;background:transparent;border-color:transparent}.controls{padding-top:13px}.hat-picker{margin:22px 0 7px;max-width:390px}.hat-picker-title{font-size:14px;color:#6d7f5e;margin-bottom:12px}.hat-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.hat-option{background:#f1efdf;border:1px solid #d1d8bf;border-radius:17px;padding:10px 6px;color:#6c7c5d;min-width:0;transition:background .2s,transform .2s}.hat-option svg{display:block;width:65px;height:60px;margin:0 auto 5px}.hat-option span{font-size:12px}.hat-option[aria-pressed=true]{background:#e2e8cf;border:2px solid #8ba175;padding:9px 5px;box-shadow:0 3px #c0cdac;transform:translateY(-2px)}.hat-choice{font-size:12px;color:#859471;min-height:20px;margin-top:11px}.coverfrog #cover-hat{left:28px;top:-37px;width:86px;height:78px;display:block;transform:rotate(8deg);font-size:0}.coverfrog #cover-hat svg{width:100%;height:100%}.hat-picker~#start{margin-top:10px}@media(max-width:650px){.hat-picker{margin:22px auto 7px}.hat-option svg{width:60px;height:56px}.hat-option span{font-size:11px}#speech{font-size:12px;min-height:78px;padding:10px 13px;margin-top:8px}.controls{padding-top:12px}}

#overlay:has(.counted-bouquet-stage){position:fixed;inset:14px;z-index:1000;border-radius:24px;background:radial-gradient(ellipse at 50% 30%,#405747,#233e33);max-width:680px;max-height:820px;margin:auto;padding:20px;overflow:hidden;box-shadow:0 10px 60px #142b2580}.panel:has(.counted-bouquet-stage){height:100%;width:100%;max-height:100%;overflow:hidden;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}.panel:has(.counted-bouquet-stage)>p:empty{display:none}.panel:has(.counted-bouquet-stage) h2{flex-shrink:0;font-size:clamp(22px,4vw,32px);margin:4px 0;line-height:1.3}.panel:has(.counted-bouquet-stage) .eyebrow{font-size:9px;line-height:1.3;flex-shrink:0}.panel .counted-bouquet-stage{height:clamp(160px,39svh,310px);min-height:0;flex:0 1 310px;width:100%;margin:0;position:relative}.panel .counted-bouquet{height:100%;width:auto;aspect-ratio:310/330;max-width:310px}.panel .bloom-cluster{height:65%;top:2%;transform-origin:top center}.panel .counted-bouquet-stage .rosephoto-tag{display:none}.panel .illustrated-wrap{height:100%}.panel .counted-bouquet-stage .counted-rose{top:calc(var(--ry) * .85)}.panel:has(.counted-bouquet-stage) .rose-note{flex-shrink:0;line-height:1.7;font-size:clamp(12px,2.8vw,15px);margin:0 0 5px}.panel:has(.counted-bouquet-stage) .primary{flex-shrink:0;margin:4px 0 0;padding:13px 22px;font-size:15px}@media(max-height:650px){#overlay:has(.counted-bouquet-stage){padding:14px}.panel:has(.counted-bouquet-stage){gap:4px}.panel .counted-bouquet-stage{flex-basis:200px;max-height:34svh}.panel:has(.counted-bouquet-stage) .rose-note{font-size:12px}.panel:has(.counted-bouquet-stage) h2{font-size:22px}}

.panel .counted-bouquet-stage .counted-rose{top:var(--rowtop)}

body:has(#overlay:not([hidden]) .counted-bouquet-stage){overflow:hidden}

/* Tangible kitchen keepsakes */
.egghole.filled{border-color:transparent;background:transparent;overflow:visible}.cracked-egg{display:block;position:absolute;inset:-3px;background:#fff9e4;border-radius:47% 55% 42% 58% / 61% 43% 57% 39%;box-shadow:0 2px 3px #803c2840,inset 0 0 4px #eadcb7;transform:rotate(-12deg)}.cracked-egg i{position:absolute;width:52%;height:52%;left:24%;top:24%;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffe591,#f5be44 55%,#e5a129);box-shadow:0 2px 2px #a67c3140}
.dessert-note{position:relative;margin:30px auto 24px;padding:27px 25px 20px;max-width:380px;text-align:left;color:#506147;background:repeating-linear-gradient(#fff4d9 0 35px,#e7ddc3 36px,#fff4d9 37px);border-radius:2px 3px 18px 3px;box-shadow:4px 7px 0 #152d2825;transform:rotate(-2deg);font:400 21px/1.75 MimiCute,'HanziPen SC','Kaiti SC',cursive}.note-tape{position:absolute;width:90px;height:26px;background:#c1cbaaaf;top:-12px;left:calc(50% - 45px);transform:rotate(5deg)}.note-salute{color:#8b7556}.note-heart{display:block;text-align:right;color:#b88d76;font-size:27px}
.invitation-envelope{display:block;position:relative;width:min(340px,85%);aspect-ratio:1.65;margin:36px auto!important;background:#e8dec1;border:1px solid #c6ba99;border-radius:8px;box-shadow:0 15px 25px #12281f40;overflow:hidden;transition:transform .2s}.invitation-envelope:hover{transform:translateY(-5px) rotate(-1deg)}.envelope-flap{position:absolute;inset:0;background:#f7efd8;clip-path:polygon(0 0,100% 0,50% 61%);filter:drop-shadow(0 2px 2px #776b55)}.envelope-address{position:absolute;bottom:15%;left:0;right:0;color:#657155;font:20px MimiCute,sans-serif;letter-spacing:3px}.envelope-seal{position:absolute;top:44%;left:calc(50% - 20px);width:40px;height:40px;border-radius:50%;background:#81966d;color:#fff2d0;line-height:40px;font-size:25px;box-shadow:0 2px 2px #53644550}.invitation-letter{background:#fcf5e2;color:#53634b;border:1px solid #d8cba9;outline:1px solid #d8cba9;outline-offset:-9px;border-radius:5px;padding:27px 25px;margin:20px auto;max-width:430px;text-align:left;box-shadow:0 12px 25px #11251e33;animation:unfold-letter .5s ease-out}.invite-flourish{text-align:center;font-size:12px;letter-spacing:2px;color:#9a835b;margin-bottom:22px}.invite-salute{font:23px MimiCute,sans-serif}.panel .invitation-letter p{color:#53634b;font-size:16px;line-height:1.9}.invite-place{border-top:1px solid #ddd1b0;padding-top:15px;text-align:center;font-size:15px}.invite-place span{font-size:13px;color:#839171}.invite-sign{font-size:12px;text-align:right;margin-top:23px;color:#978263}@keyframes unfold-letter{from{opacity:0;transform:translateY(20px) rotate(-3deg)}to{opacity:1;transform:none}}
#overlay:has(#finished-breakfast){position:fixed;inset:14px;max-width:680px;max-height:800px;margin:auto;z-index:1000;border-radius:24px;overflow:hidden;background:#30483b;padding:20px}.panel:has(#finished-breakfast){height:100%;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:10px;overflow:hidden}.panel:has(#finished-breakfast)>p{min-height:0;margin:0;line-height:1.65;font-size:14px}.panel:has(#finished-breakfast) h2{font-size:clamp(24px,4vw,34px);margin:0;flex-shrink:0}.panel:has(#finished-breakfast) .finished-dish{width:auto;max-width:100%;height:auto;max-height:43svh;object-fit:contain;margin:0 auto 8px}.panel:has(#finished-breakfast) .dishcaption{font-size:12px}.panel:has(#finished-breakfast) .primary{flex-shrink:0;margin:4px 0;padding:13px 18px;font-size:15px}.panel:has(#finished-breakfast) .eyebrow{font-size:10px;flex-shrink:0}body:has(#overlay:not([hidden]) #finished-breakfast){overflow:hidden}@media(max-height:650px){.panel:has(#finished-breakfast){gap:5px}.panel:has(#finished-breakfast) .finished-dish{max-height:33svh}.panel:has(#finished-breakfast)>p{font-size:12px}}@media(prefers-reduced-motion:reduce){.invitation-letter{animation:none}}

.memory-wishes{display:flex;gap:18px;align-items:center;margin:22px auto;max-width:560px}.memory-wishes figure{flex:1;min-width:0;margin:0;transform:rotate(-3deg)}.memory-wishes figure+figure{transform:rotate(3deg)}.memory-wishes img{display:block;width:100%;max-height:310px;object-fit:contain;box-shadow:0 8px 20px #10261f50}.memory-wishes figcaption{font-size:12px;line-height:1.7;color:#dedcc5;margin-top:12px}@media(max-width:650px){.memory-wishes{gap:12px}.memory-wishes figcaption{font-size:11px}}

.letter-audio-controls{position:sticky;top:0;z-index:2;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;padding:12px;background:#30483b;border-radius:14px;font-size:12px;color:#efe6cb}.letter-audio-controls button{margin:0;padding:6px 14px;border:1px solid #b0bba0;border-radius:20px;background:transparent;color:inherit}.letter-audio-controls label{display:flex;align-items:center;gap:6px}.letter-audio-controls input{width:90px;accent-color:#c3cda4}.birthday-letter .letter-signoff:last-child{padding-top:20px;padding-bottom:35px}
