
:root{--pink:#e95a87;--ink:#74324a;--cream:#fffaf7}*{box-sizing:border-box}body{margin:0;background:#fceaf0;color:var(--ink);font:16px/1.6 system-ui,sans-serif;background-image:radial-gradient(at 10% 5%,#fff9df 0,transparent 40%),radial-gradient(at 90% 80%,#eadcfa 0,transparent 45%)}button,input,textarea{font:inherit}button{cursor:pointer;border:0;border-radius:40px;padding:14px 24px;background:var(--pink);color:white;font-weight:650;transition:transform .2s}button:hover{transform:translateY(-2px)}button:disabled{opacity:.5;cursor:default}button.secondary{background:#f5e7f6;color:var(--ink)}button.small{padding:8px 14px;font-size:13px}button:focus-visible,a:focus-visible{outline:3px solid #903d81;outline-offset:4px}header{max-width:1100px;margin:auto;padding:25px 28px;display:flex;justify-content:space-between;align-items:center}header a{color:inherit;text-decoration:none;font-family:Georgia,serif;font-style:italic;font-size:22px}.eyebrow{font-size:11px;letter-spacing:3px;text-transform:uppercase;font-weight:700}.shell{max-width:1000px;margin:30px auto 65px;padding:0 25px}.hero{display:grid;grid-template-columns:1fr 1fr;gap:65px;align-items:center}h1{font:normal clamp(42px,6vw,72px)/1.12 Georgia,serif;margin:20px 0}h2{font:normal 36px/1.2 Georgia,serif}h3{font-family:Georgia,serif;font-size:24px}p{color:#8a6373}.portrait{position:relative;padding:12px;border:1px solid #edbbcd;border-radius:220px 220px 30px 30px;background:#fff7f8;box-shadow:0 25px 80px #a34a6b18}.portrait img{width:100%;height:480px;object-fit:cover;object-position:50% 34%;border-radius:210px 210px 22px 22px;display:block}.bow{position:absolute;bottom:-25px;left:42%;font-size:54px}.subtle{font-size:13px;color:#a47b8b}.card{background:#fffaf9df;border:1px solid #f0d4df;border-radius:28px;padding:32px;box-shadow:0 16px 50px #9f44600b}.center{text-align:center;max-width:580px;margin:auto}.symbol{font-size:76px;margin:10px}.hearts{font-size:26px;color:var(--pink);letter-spacing:10px;margin:18px}.actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin:20px 0}.letter{font:21px/1.8 Georgia,serif;text-align:left;white-space:pre-line}.hint{background:#f5e9f5;border-radius:18px;padding:16px}.field{display:block;text-align:left;margin:15px 0;font-size:13px;font-weight:650}input,textarea{display:block;width:100%;border:1px solid #e7c7d5;border-radius:14px;padding:12px;background:#fffdfd;color:var(--ink)}textarea{min-height:95px;resize:vertical}.code{font-size:24px;text-align:center;letter-spacing:5px}.error{color:#aa2048}.planner{max-width:760px;margin:auto}.gift{margin:20px 0}.grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}details summary{cursor:pointer;font-weight:700}footer{text-align:center;padding:25px;font-size:13px;color:#ad7b90}.float{position:fixed;pointer-events:none;animation:fall 2.7s ease-in forwards;top:-40px;font-size:25px;z-index:10}@keyframes fall{to{transform:translateY(105vh) rotate(220deg);opacity:0}}.memory{max-width:100%;max-height:320px;border-radius:20px;margin:15px auto;display:block}.badge{display:inline-block;background:#f8dde8;border-radius:30px;padding:5px 14px;font-size:12px}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#74324a;color:white;padding:12px 25px;border-radius:30px;z-index:20}@media(max-width:650px){header{padding:20px}header a{font-size:18px}.shell{margin:15px auto}.hero{display:flex;flex-direction:column-reverse;gap:28px;text-align:center}.portrait{max-width:280px;width:100%}.portrait img{height:310px}.hero h1{font-size:46px}.card{padding:24px}.grid{grid-template-columns:1fr}h2{font-size:32px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
:root{--bow-art:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDAgNzAiPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDI9IjAuOCIgeTI9IjEiPjxzdG9wIHN0b3AtY29sb3I9IiNmZmY1ZmEiLz48c3RvcCBvZmZzZXQ9Ii4zNSIgc3RvcC1jb2xvcj0iI2VkYWJjNyIvPjxzdG9wIG9mZnNldD0iLjYiIHN0b3AtY29sb3I9IiNkODdjYWEiLz48c3RvcCBvZmZzZXQ9Ii44IiBzdG9wLWNvbG9yPSIjZjRiYmQzIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZTQ5OGI4Ii8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHBhdGggZD0iTTk1IDM1QzUwLTkgMjAgMyAzMCAzMnM0MyAxMiA2NSAzTTEwNSAzNWM0NS00NCA3NS0zMiA2NS0zcy00MyAxMi02NSAzIiBmaWxsPSJ1cmwoI2IpIiBzdHJva2U9IiNkODhlYjEiLz48cGF0aCBkPSJNOTUgMzVRNzMgNTUgNDUgNTlsMjAtMS0yIDEycTMyLTkgMzktMzNtMy0ycTIzIDIwIDUwIDI0bC0yMC0xIDIgMTJxLTMyLTktMzktMzMiIGZpbGw9InVybCgjYikiIHN0cm9rZT0iI2Q4OGViMSIvPjxyZWN0IHg9IjkyIiB5PSIyMyIgd2lkdGg9IjE3IiBoZWlnaHQ9IjIyIiByeD0iNiIgZmlsbD0idXJsKCNiKSIgc3Ryb2tlPSIjZDg4ZWIxIi8+PHBhdGggZD0iTTMyIDIycTIwIDEgNTkgMTJNMTY4IDIycS0yMCAxLTU5IDEyIiBzdHJva2U9IiNmZmY1ZmEiIGZpbGw9Im5vbmUiIG9wYWNpdHk9Ii44Ii8+PC9zdmc+")}
body{background:radial-gradient(ellipse at top,#fff9fb 0,#fbe5ed 45%,#f9dce7 100%);color:#7e173e;min-height:100vh}body:before{content:'♡';position:fixed;left:3%;top:28%;font:80px Georgia;color:#e8a4bd50;pointer-events:none}body:after{content:'♡';position:fixed;right:4%;bottom:12%;font:110px Georgia;color:#e8a4bd35;pointer-events:none}header{max-width:850px;padding:18px 24px}header a{font-size:18px}header button{font-size:11px!important}.shell{margin:12px auto 40px;max-width:800px;padding:0 18px}p{color:#86516a}button{background:linear-gradient(#f4729e,#d93d73);box-shadow:inset 0 2px 1px #ffffff80,0 4px 0 #b8316018,0 5px 14px #e16b9020;border:1px solid #e6729b;color:#fff;border-radius:24px;padding:12px 24px}button.secondary{background:linear-gradient(#fff9fc,#f6e5f5);border:1px solid #d3a0cc;color:#813b70;box-shadow:none}.eyebrow{font-size:10px;letter-spacing:2px}.hero{display:flex;flex-direction:column;text-align:center;gap:0;background:linear-gradient(125deg,#fffaf8,#fff3f6);border:1px solid #e7aec3;outline:4px solid #fff9;box-shadow:0 18px 50px #ac386d15,inset 0 0 0 5px #f8e4ec;border-radius:38px;max-width:480px;margin:auto;padding:22px 28px 32px;position:relative}.hero>div:first-child{display:contents}.hero .eyebrow{order:1;margin-top:8px;border:1px solid #f1c7d7;background:#fff4f7;border-radius:24px;padding:5px 12px;letter-spacing:1px}.hero h1{order:2;font:bold italic 38px/1.12 Georgia,serif;margin:18px 0}.hero .portrait{order:3;width:100%;max-width:300px;margin:0 auto 15px;padding:4px;border:1px solid #eab3c8;border-radius:170px 170px 4px 4px;background:#fff;box-shadow:0 0 0 4px #f8dfe9}.portrait img{height:330px;border-radius:160px 160px 0 0;object-position:50% 35%}.hero p{order:4;font:italic 19px/1.5 Georgia;margin:12px 0}.hero #start{order:5;width:100%;margin:8px 0}.hero .subtle{order:6;font:13px/1.6 system-ui}.hero #demo{order:7}.bow{display:none}.hero:before,.center:before,.planner:before{content:'';display:block;width:100%;height:55px;background:var(--bow-art) center/150px 55px no-repeat;flex-shrink:0;margin:0 auto 8px}.center,.planner{position:relative;max-width:480px;margin:auto;padding:18px 25px 30px;background:linear-gradient(120deg,#fffcf7,#fff1f5);border:1px solid #e7aec3;outline:4px solid #fff9;border-radius:36px;box-shadow:0 18px 50px #ac386d15,inset 0 0 0 5px #f8e4ec}.center h2{font:bold 34px/1.12 Georgia;margin:18px 0}.center .card{border:0;background:transparent;padding:0;box-shadow:none}.hearts{color:#db6197;letter-spacing:9px;margin:12px 0}.badge{background:#f9dce8;color:#842447;border:1px solid #efbfd3;font-family:Georgia;font-weight:bold}.teddy{display:block;width:185px;height:205px;object-fit:contain;margin:12px auto -4px;filter:drop-shadow(0 8px 8px #9f3b5d10)}.center .card>p:not(.subtle){font:italic 21px/1.5 Georgia;background:#fffcf6;border:1px dashed #d9a89a;border-radius:18px;padding:19px}.hint{font-size:14px;background:#f2e0f2;border:1px solid #dab7d5;padding:12px}.center .actions{margin:18px 0}.center button:not(.small){width:100%}.center h3{font-size:15px;margin:12px 0}.symbol{font-size:78px;line-height:1.3;margin:15px auto}.letter{background:#fffaf0!important;border:1px solid #e9cdb8!important;border-radius:3px!important;padding:25px!important;box-shadow:0 6px 15px #8f42330d!important;font:italic 20px/1.65 Georgia!important;white-space:pre-line;color:#663348;position:relative}.letter:after{content:'You are my best gift ♡';display:block;text-align:center;background:#eed5f0;margin:25px -10px -10px;padding:8px;font-size:17px;color:#7d367d}.planner{max-width:650px}.planner h2{text-align:center}.planner>.eyebrow{display:block;text-align:center}.planner>p{font-size:14px}.gift{background:#fffaf9;border-radius:18px;padding:18px;box-shadow:none;margin:12px 0}.gift summary{color:#8f3053;font-family:Georgia}.gift .field{font-size:12px}input,textarea{background:#fffdfb;border-color:#e7bbce}input:focus,textarea:focus{outline:2px solid #d98fba;outline-offset:2px}.memory{max-height:300px;background:#fff;padding:10px 10px 25px;box-shadow:0 10px 25px #90536b20;border-radius:3px;transform:rotate(-3deg);margin:24px auto}.code{background:repeating-linear-gradient(90deg,#fffafa 0,#fffafa 22%,#e8c3df 22%,#e8c3df 23%,#fffafa 23%,#fffafa 25%);border:1px solid #d6a0d0;height:65px;border-radius:15px}.subtle{color:#95657c}.field{color:#803452}footer{font-size:12px;color:#98657b}.celebration>p{font-family:Georgia;font-style:italic}.center .error{color:#a31b45;font-size:14px}.toast{max-width:90vw;font-size:14px}.nav-home{cursor:pointer}.ribbon{font-size:13px;text-align:center;color:#a76081;margin:12px}.planner .actions{gap:10px}.planner .actions button{font-size:13px}.planner input[type=range]{accent-color:#dc5a8c}.music-volume{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:14px;font-size:12px}.music-volume input{width:95px;padding:0;accent-color:#d55386}@media(max-width:650px){.hero{padding:18px 24px 26px}.hero h1{font-size:36px}.portrait img{height:315px}.hero .portrait{max-width:285px}.center,.planner{padding:18px 22px 28px;border-radius:30px}.center h2{font-size:31px}header{gap:8px;padding:15px 18px}header a{font-size:15px}header>div{white-space:nowrap}header .small{padding:7px 10px}.shell{margin:8px auto 30px;padding:0 14px}.grid{grid-template-columns:1fr}.letter{font-size:19px!important}.hero .eyebrow{font-size:9px}}.portrait{overflow:hidden}.portrait img{transform:scale(1.58);transform-origin:50% 60%}.gift-art{width:225px;max-width:85%;height:210px;display:block;margin:12px auto}.envelope-art{width:200px;height:135px;display:block;margin:10px auto}.planner .gift{outline:0}.hero #start{font-size:16px}
.code-slots{letter-spacing:.3em}a{color:#9a3e70}.notice{background:#f5e7f6;border:1px solid #e8c4dd;border-radius:16px;padding:14px;font-size:13px}.memory-admin{max-width:150px;max-height:150px;display:block;margin:10px;border-radius:12px}.publish-info{color:#8e4d68;font-size:13px}.check-field{display:flex;gap:10px;align-items:flex-start}.check-field input{width:auto;margin-top:6px}button[disabled]{pointer-events:none}.success{color:#486b55}.planner .status{font-size:14px;text-align:center}.hero .volume-controls{order:8}.volume-controls{display:flex;gap:8px;align-items:center;justify-content:center;font-size:12px;margin-top:15px}.volume-controls input{width:100px;padding:0;accent-color:#d95e90}