:root{--cream:#fff7f1;--blush:#f1dee0;--rose:#c48fa0;--cocoa:#694854;--ink:#493a3f;--line:#decac7;--gold:#a68b62}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 40%,#f8e9e5 0,transparent 65%),var(--cream);color:var(--ink);font:16px/1.6 Arial,sans-serif;min-height:100svh}header,footer{max-width:1200px;margin:auto;padding:26px 32px;display:flex;justify-content:space-between;align-items:center}header{border-bottom:1px solid var(--line)}.brand{font:italic 23px Georgia,serif;color:var(--cocoa)}.date,.eyebrow{font-size:10px;letter-spacing:.22em;color:var(--cocoa)}main{max-width:850px;margin:auto;padding:45px 24px 30px;min-height:75svh;text-align:center}footer{font-size:12px;color:var(--cocoa);border-top:1px solid var(--line)}h1,h2{font:normal clamp(38px,6vw,64px)/1.1 Georgia,serif;letter-spacing:-.04em;color:var(--cocoa);margin:16px 0}h1 em{font-weight:normal}p{margin:14px 0}.intro{max-width:460px;margin:14px auto 28px;color:var(--cocoa)}.scene{animation:enter .45s ease}.ribbon{width:100px;height:65px;margin:0 auto 12px;color:var(--rose)}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;margin:32px auto 24px;max-width:720px}.card{position:relative;background:#fffaf7;border:2px solid transparent;box-shadow:0 5px 18px #69485412;padding:9px 9px 23px;border-radius:3px;transform:rotate(var(--angle));animation:pop .45s both;animation-delay:var(--delay);cursor:pointer;min-width:0;color:var(--cocoa)}.card:hover{transform:rotate(0) translateY(-3px)}.card img,.placeholder{width:100%;aspect-ratio:4/5;object-fit:cover;display:flex;align-items:center;justify-content:center;background:var(--tone);font:48px Georgia,serif}.card img{display:block}.card .symbol{position:absolute;bottom:0;right:8px;font-size:19px}.card.correct{border-color:#38664d;background:#eaf3eb}.card.wrong{border-color:#a63c47;background:#f9e7e7}.feedback{min-height:27px;font-size:14px;color:var(--cocoa)}button,.button{font:14px/1.3 Arial,sans-serif;min-height:50px;padding:16px 27px;border:1px solid var(--cocoa);border-radius:3px;background:var(--cocoa);color:var(--cream);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;transition:background .15s,transform .15s}button:hover,.button:hover{background:#49343e}button:disabled{opacity:.4;cursor:default}.card:hover{background:#fffaf7}.card.correct:hover{background:#eaf3eb}.card.wrong:hover{background:#f9e7e7}:focus-visible{outline:3px solid #694854;outline-offset:5px}.secondary{background:transparent;color:var(--cocoa);border-color:var(--line)}.secondary:hover{background:#f1dee0}.note{font-size:12px;color:var(--cocoa);max-width:460px;margin:16px auto}.reveal{padding:40px 0}.reveal .big-heart{font:140px/1.2 Georgia,serif;color:var(--rose)}.confetti{position:fixed;inset:0;pointer-events:none;overflow:hidden}.confetti i{position:absolute;top:-20px;left:var(--x);width:7px;height:12px;background:var(--color);animation:fall 1.8s var(--delay) both ease-in}.paper{max-width:620px;margin:36px auto 24px;padding:40px clamp(22px,6vw,60px);text-align:left;background:#fffcf8;border:1px solid var(--line);box-shadow:0 10px 40px #6948540a;position:relative}.paper:before{content:'♡';display:block;color:var(--rose);font:36px Georgia,serif;margin-bottom:24px}.paper p{font:18px/1.9 Georgia,serif;margin:0 0 24px;white-space:pre-wrap;overflow-wrap:anywhere}.paper p:first-child{font-style:italic;font-size:26px}.cake-art{display:block;width:min(100%,420px);height:auto;margin:30px auto}.flame{transform-box:fill-box;transform-origin:50% 100%;animation:flicker .8s ease-in-out infinite alternate;animation-delay:var(--delay)}.out .flame{display:none}.out .smoke{opacity:1}.smoke{opacity:0}.hold{touch-action:none;user-select:none;-webkit-user-select:none;width:260px;position:relative;overflow:hidden}.hold span{position:relative;z-index:1}.hold:before{content:'';position:absolute;inset:0;background:#946477;transform:scaleX(var(--progress,0));transform-origin:left}.actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin:22px 0}.bears{width:min(100%,350px);margin:24px auto;display:block}.quote{font:italic 23px/1.5 Georgia,serif;max-width:440px;margin:22px auto}.final-title{font-size:clamp(38px,6vw,58px)}.gift{margin:30px auto;padding:25px 0;border-top:1px solid var(--line);max-width:510px}.gift h2{font-size:30px}iframe{display:block;width:100%;height:65svh;border:1px solid var(--line);margin-top:24px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}@keyframes pop{from{opacity:0;scale:.94}to{opacity:1;scale:1}}@keyframes enter{from{opacity:0;translate:0 10px}to{opacity:1;translate:0 0}}@keyframes fall{to{translate:0 105svh;rotate:330deg}}@keyframes flicker{to{scale:.85 1.08;rotate:5deg}}
@media(max-width:600px){header,footer{padding:20px}.brand{font-size:19px}.date{font-size:9px;letter-spacing:.12em}main{padding:30px 20px}.grid{grid-template-columns:repeat(2,1fr);gap:16px;max-width:390px;margin-top:25px}.card{padding:8px 8px 20px}.placeholder{font-size:50px}h1{font-size:40px}.intro{font-size:15px}.paper{margin-top:24px}.paper p{font-size:18px}.ribbon{width:85px;height:55px}.cake-art{margin:28px auto}.actions .button{flex:1}.note{font-size:12px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.confetti{display:none}}

/* A quiet personal composition; no masthead, footer or scene labels. */
body{background:#fcf7f2}
main{max-width:820px;padding-top:clamp(50px,9vh,100px);min-height:100svh}
h1{font-size:clamp(38px,5vw,54px);line-height:1.16;letter-spacing:-.035em;margin:0 0 36px}
h1 em{color:#865866}
.grid{gap:20px;margin:12px auto 18px;max-width:670px}
.card{box-shadow:0 3px 10px #69485408;padding:7px 7px 17px;transform:rotate(calc(var(--angle)*.4));border-radius:2px}
.card:hover{transform:translateY(-2px)}
button,.button{border-radius:6px}
.paper{margin:0 auto 30px;background:#fffdf9;border:none;box-shadow:0 5px 28px #69485408;padding-top:45px}
.paper:before{display:none}
.gift:empty{display:none}
.envelope{display:block;position:relative;width:240px;height:155px;margin:20px auto 12px;padding:0;background:transparent;border:0;overflow:visible;perspective:800px;animation:envelope-in .45s cubic-bezier(.2,.7,.2,1) both}
.envelope:hover{background:transparent;transform:translateY(-3px)}
.envelope:disabled{opacity:1}
.envelope-back{position:absolute;inset:0;background:#ead4d6;border-radius:4px;box-shadow:0 8px 22px #69485412}
.envelope-sheet{position:absolute;left:16px;right:16px;top:12px;height:125px;background:#fffdfa;border:1px solid #e8ddd2;z-index:1;transition:transform .35s .25s ease,opacity .2s}
.envelope-sheet i{display:block;height:1px;background:#dbc7c0;margin:21px 26px}
.envelope-front{position:absolute;inset:0;z-index:3;background:#f2dfe0;clip-path:polygon(0 0,50% 54%,100% 0,100% 100%,0 100%)}
.envelope-front:after{content:'';position:absolute;inset:0;background:#ecd6d8;clip-path:polygon(0 100%,50% 45%,100% 100%)}
.envelope-flap{position:absolute;inset:0;background:#e4c5cb;clip-path:polygon(0 0,100% 0,50% 55%);z-index:4;transform-origin:top;transition:transform .35s ease,z-index 0s .18s;backface-visibility:hidden}
.envelope-seal{position:absolute;top:60px;left:104px;width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:#ae7788;color:#fff7f1;font:23px Georgia,serif;z-index:5;transition:opacity .12s}
.opening .envelope-flap{transform:rotateX(180deg);z-index:0}
.opening .envelope-sheet{transform:translateY(-70px)}
.opening .envelope-seal{opacity:0}
.paper{animation:unfold .4s ease-out}
@keyframes envelope-in{from{opacity:0;transform:translateY(16px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes unfold{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:600px){main{padding:48px 22px 32px}.grid{gap:16px;max-width:350px}h1{font-size:39px;margin-bottom:30px}.envelope{width:220px;height:144px}.envelope-seal{left:94px;top:56px}.paper{padding:28px 22px}.paper p:first-child{font-size:25px}}
@media(prefers-reduced-motion:reduce){.envelope,.paper{animation:none}.envelope-sheet,.envelope-flap,.envelope-seal{transition:none}}

/* Refined photo composition and quiet persistent audio control. */
body{background:#fbf6f0}
main{max-width:1000px;padding:64px 28px 46px}
h1{color:#593d47;font-size:clamp(38px,5.3vw,58px);margin-bottom:40px}
h1 em{color:#966877}
.grid{max-width:840px;gap:24px}
.card{padding:6px;border-radius:15px;background:#fffaf6;border:2px solid #eaded7;transform:none;box-shadow:0 5px 18px #593d4706;transition:transform .2s,border-color .2s,box-shadow .2s}
.card img{border-radius:9px;aspect-ratio:3/4;object-position:50% 38%}
.card:hover{transform:translateY(-4px);box-shadow:0 10px 24px #593d4712}
.card.correct{box-shadow:0 0 0 3px #38664d16}
.card.wrong{box-shadow:0 0 0 3px #a63c4712}
.card .symbol{bottom:13px;right:13px;width:26px;height:26px;display:grid;place-items:center;line-height:1;border-radius:50%;background:#fffaf6;color:#493a3f}
.card .symbol:empty{display:none}
.music-toggle{position:fixed;right:18px;top:18px;z-index:10;width:46px;height:46px;min-height:46px;padding:0;border-radius:50%;background:#fffaf6;color:#694854;border-color:#decac7;box-shadow:0 3px 12px #593d4708}
.music-toggle span{font:25px Georgia,serif}
.music-toggle:hover{background:#f1dee0}
.music-toggle.playing{background:#694854;color:#fff7f1}
.music-toggle.playing:after{content:'';position:absolute;width:5px;height:5px;border-radius:50%;background:#f1dee0;right:9px;bottom:8px}
.celebration-art{display:block;width:min(100%,620px);height:auto;margin:28px auto}
.hold{min-height:54px;border-radius:28px}
.paper{border-radius:12px}
@media(max-width:600px){main{padding:78px 20px 32px}h1{font-size:40px;margin-bottom:30px}.grid{max-width:390px;gap:14px}.card{border-radius:12px;padding:4px}.card img{border-radius:7px}.card .symbol{bottom:10px;right:10px}.celebration-art{width:calc(100% + 24px);max-width:none;margin:20px -12px}.music-toggle{top:14px;right:14px}}
.music-hint{position:fixed;top:24px;right:73px;z-index:9;display:flex;align-items:center;gap:6px;color:#865866;pointer-events:none;font:italic 17px/1.2 Georgia,serif}
.music-hint svg{width:63px;height:35px}
.music-hint[hidden]{display:none}
.activity-heading{font-size:clamp(28px,4vw,42px);max-width:730px;margin:0 auto 38px;line-height:1.3}
.activity-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;text-align:left}
.activity-card{display:block;padding:0 0 22px;overflow:hidden;background:#fffcf8;color:var(--ink);border:2px solid #eaded7;border-radius:14px;text-align:left;transition:transform .18s,border-color .18s}
.activity-card:hover{background:#fffaf6;transform:translateY(-3px)}
.activity-card[aria-pressed=true]{border-color:#865866;box-shadow:0 0 0 3px #86586620}
.activity-card img{display:block;width:100%;aspect-ratio:1;object-fit:cover}
.activity-title{display:block;font:24px/1.2 Georgia,serif;margin:20px 20px 12px;color:#694854}
.activity-description{display:block;font:14px/1.65 Arial,sans-serif;margin:0 20px}
.activity-submit{margin:32px auto}
.extra-gift{margin:30px auto}
.gift-farewell{font:italic 25px/1.6 Georgia,serif;margin:36px auto;color:#865866}
.gift-dialog{padding:0;max-width:min(540px,calc(100vw - 32px));border:1px solid #694854;border-radius:8px;box-shadow:0 16px 60px #493a3f30;background:#fffaf5;color:var(--ink)}
.gift-dialog::backdrop{background:#493a3f66;backdrop-filter:blur(3px)}
.dialog-bar{padding:12px 18px;background:#ead4d9;color:#694854;font-size:13px}
.dialog-body{padding:26px;display:flex;align-items:center;gap:18px}
.dialog-alert{display:grid;place-items:center;flex:none;width:42px;height:42px;background:#e6c775;color:#493a3f;border-radius:50%;font:28px Georgia,serif}
.dialog-body h2{font:25px/1.4 Georgia,serif;margin:0;letter-spacing:0}
.dialog-actions{display:flex;gap:12px;padding:0 24px 24px;flex-wrap:wrap}
#gift-error{padding:0 24px;font-size:14px}
.invitation-copy{font:24px/1.7 Georgia,serif;max-width:620px;margin:24px auto}
.invitation-image{display:block;width:min(100%,380px);border-radius:12px;margin:28px auto}
@media(max-width:700px){.activity-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.activity-title{font-size:21px;margin:14px 12px 10px}.activity-description{font-size:13px;margin:0 12px}.dialog-actions button{width:100%}}
@media(max-width:420px){.activity-grid{grid-template-columns:1fr}.activity-card img{aspect-ratio:4/3}}
@media(max-width:600px){.music-hint{top:20px;right:65px;font-size:16px}.music-hint svg{width:43px;height:28px}main{padding-top:95px}}
.activity-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:880px;margin:auto}
.activity-heading{font-size:clamp(23px,3vw,32px);margin-bottom:22px;max-width:780px}
.activity-card{padding-bottom:12px;border-radius:10px}
.activity-card img{aspect-ratio:2.5;object-fit:cover}
.activity-title{font-size:19px;margin:10px 12px 7px}
.activity-description{font-size:12px;line-height:1.45;margin:0 12px}
.activity-submit{margin:20px auto 0}
@media(max-width:700px){.activity-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.activity-title{font-size:16px;margin:8px}.activity-description{font-size:11px;margin:0 8px;line-height:1.4}.activity-card img{aspect-ratio:1.5}.activity-heading{font-size:24px}}
@media(min-width:900px){main.activity-page{padding:56px 24px 18px;max-width:1050px}.activity-page .activity-heading{font-size:27px;margin-bottom:16px}.activity-grid{max-width:960px;gap:10px}.activity-card img{height:74px;aspect-ratio:auto}.activity-title{font-size:18px;margin:8px 10px 5px}.activity-description{font-size:11px;line-height:1.4;margin:0 10px}.activity-card{padding-bottom:9px}.activity-submit{margin-top:14px}.activity-submit button{padding:12px 24px}}
.quiet-dot{position:fixed;bottom:4px;left:4px;width:44px;height:44px;min-height:44px;padding:0;background:transparent;border:0;z-index:20}
.quiet-dot span{display:block;width:7px;height:7px;margin:auto;border-radius:50%;background:#c8b9b1}
.quiet-dot:hover{background:transparent}
.quiet-entry{width:min(300px,calc(100vw - 40px));padding:20px;background:#fffaf5;border:1px solid #decac7;border-radius:12px;color:#694854}
.quiet-entry::backdrop{background:#493a3f35}
.quiet-entry form{display:flex;gap:8px;align-items:center}
.quiet-entry input{min-width:0;width:100%;height:44px;padding:10px;border:1px solid #decac7;border-radius:5px;background:#fffdf9;font:15px Arial,sans-serif}
.quiet-entry button{min-height:44px;padding:10px 14px}
.quiet-entry .quiet-status{font:13px Arial,sans-serif;margin:12px 0 0}
