:root{--pink: #ff6b9d;--deep: #c9184a;--soft: #ffd6e8;--cream: #fff5f8}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{font-family:Segoe UI,-apple-system,sans-serif;background:linear-gradient(135deg,#ffe0ec,#ffd6e8 40%,#ffc2dc);color:var(--deep)}.page{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:20px}.heart-bg{position:fixed;bottom:-50px;opacity:.6;animation:floatUp linear forwards;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:0}@keyframes floatUp{0%{transform:translateY(0) rotate(0);opacity:0}10%{opacity:.7}90%{opacity:.7}to{transform:translateY(-110vh) rotate(360deg);opacity:0}}.card{position:relative;z-index:2;background:#ffffffe0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:28px;padding:48px 40px;max-width:520px;width:100%;text-align:center;box-shadow:0 20px 60px #c9184a40;animation:pop .7s cubic-bezier(.2,.8,.2,1.2)}@keyframes pop{0%{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}.big-heart{font-size:64px;display:inline-block;animation:beat 1.2s ease-in-out infinite}.photo-wrap{position:relative;width:150px;height:150px;margin:0 auto 8px}.photo{width:150px;height:150px;object-fit:cover;border-radius:50%;border:5px solid #fff;box-shadow:0 10px 28px #c9184a59;animation:pop .7s cubic-bezier(.2,.8,.2,1.2)}.photo-heart{position:absolute;bottom:-6px;right:6px;font-size:34px;animation:beat 1.2s ease-in-out infinite}@keyframes beat{0%,to{transform:scale(1)}15%{transform:scale(1.25)}30%{transform:scale(1)}45%{transform:scale(1.15)}}h1{font-size:2rem;margin:16px 0 10px;line-height:1.25}.sub{font-size:1.1rem;color:#a8275f;margin-bottom:24px;line-height:1.5}.msg{width:100%;border:2px solid var(--soft);border-radius:14px;padding:12px 16px;font-family:inherit;font-size:1rem;resize:vertical;margin-bottom:24px;outline:none;color:var(--deep);background:var(--cream)}.msg:focus{border-color:var(--pink)}.buttons{display:flex;gap:16px;justify-content:center;align-items:center;position:relative;min-height:60px}button{font-family:inherit;font-size:1.15rem;font-weight:600;border:none;border-radius:50px;padding:14px 36px;cursor:pointer;transition:transform .15s,box-shadow .2s}button.yes{background:linear-gradient(135deg,var(--pink),var(--deep));color:#fff;box-shadow:0 8px 20px #c9184a66}button.yes:hover{filter:brightness(1.05)}button.yes:disabled{opacity:.7;cursor:default}button.no{background:#f0d3de;color:#a8275f}.reveal{animation:pop .6s cubic-bezier(.2,.8,.2,1.2)}.cal{background:var(--cream);border-radius:18px;padding:16px;margin:0 auto;max-width:340px;box-shadow:0 6px 18px #c9184a1f}.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.cal-title{font-weight:700;font-size:1.1rem}.cal-nav{background:var(--soft);color:var(--deep);border-radius:10px;padding:4px 14px;font-size:1.2rem;line-height:1}.cal-nav:disabled{opacity:.35;cursor:default}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-wd{font-size:.75rem;font-weight:700;color:#b87a93;text-align:center;padding-bottom:4px}.cal-day{aspect-ratio:1;padding:0;border-radius:50%;background:transparent;color:var(--deep);font-size:.95rem;font-weight:500;display:flex;align-items:center;justify-content:center}.cal-day:hover:not(:disabled){background:var(--soft)}.cal-day:disabled{color:#d9b8c6;cursor:default}.cal-day.today{box-shadow:inset 0 0 0 2px var(--pink)}.cal-day.sel{background:linear-gradient(135deg,var(--pink),var(--deep));color:#fff;font-weight:700}.confirm-date{margin-top:18px}.day-buttons{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}button.day{background:var(--cream);color:var(--deep);border:2px solid var(--soft);display:flex;align-items:center;gap:10px;font-size:1.2rem;padding:16px 32px}button.day:hover{transform:translateY(-3px) scale(1.04);border-color:var(--pink);box-shadow:0 10px 24px #c9184a40}button.day .emoji{font-size:1.4rem}.details li.highlight{background:linear-gradient(135deg,var(--soft),#ffe6f0);border:2px solid var(--pink);font-weight:600}.details{margin:24px auto 0;max-width:380px}.details li{list-style:none;background:var(--cream);border-radius:14px;padding:14px 18px;margin-bottom:12px;font-size:1.05rem;display:flex;align-items:center;gap:12px;text-align:left}.details .emoji{font-size:1.4rem}.nudge{margin-top:20px;font-size:1.05rem;font-weight:600;color:var(--deep);animation:pop .4s cubic-bezier(.2,.8,.2,1.2)}.signature{margin-top:24px;font-style:italic;color:#a8275f}.tiny-note{margin-top:16px;font-size:.8rem;color:#b88}.admin{max-width:800px;margin:40px auto;padding:0 20px;color:var(--deep)}.admin h1{margin-bottom:20px}.admin-bar{display:flex;gap:10px;margin-bottom:20px}.admin-bar input{flex:1;padding:10px 14px;border:2px solid var(--soft);border-radius:10px;font-size:1rem;outline:none}.admin-bar button{padding:10px 20px;font-size:1rem;background:var(--deep);color:#fff;border-radius:10px}.admin-error{color:#c00;margin-bottom:16px}.admin table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden}.admin th,.admin td{padding:12px 16px;text-align:left;border-bottom:1px solid #f3d9e4}.admin th{background:var(--soft)}@media (max-width: 600px){.page{padding:32px 16px}.card{max-width:380px;padding:28px 20px;border-radius:22px}h1{font-size:1.45rem}.sub{font-size:.98rem;margin-bottom:18px}.big-heart{font-size:46px}.photo-wrap,.photo{width:110px;height:110px}.photo-heart{font-size:26px}.msg{margin-bottom:18px}button{padding:12px 26px;font-size:1.05rem}.details li{padding:11px 14px;font-size:.98rem}.day-buttons{gap:12px}button.day{padding:13px 22px;font-size:1.05rem}}
