: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}.env-screen{cursor:pointer;padding:8px 0}.envelope{position:relative;width:220px;height:150px;margin:16px auto 8px}.env-body{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#ff8fb1,#ff6b9d);border-radius:10px;box-shadow:0 14px 32px #c9184a4d}.env-flap{position:absolute;top:0;left:0;height:0;border-left:110px solid transparent;border-right:110px solid transparent;border-top:82px solid #e84a7f;transform-origin:top center;transition:transform .6s ease;z-index:3}.env-letter{position:absolute;top:28px;left:50%;transform:translate(-50%);font-size:56px;opacity:0;transition:transform .6s ease .25s,opacity .6s ease .25s;z-index:2}.envelope.open .env-flap{transform:rotateX(180deg);z-index:1}.envelope.open .env-letter{opacity:1;transform:translate(-50%) translateY(-64px) scale(1.1);z-index:4}.env-hint{margin:12px 0 18px}.quest-progress{color:#b87a93;font-weight:700;margin-bottom:2px}.quest-options{display:flex;flex-direction:column;gap:12px;margin-top:10px}.quest-opt{background:var(--cream);border:2px solid var(--soft);color:var(--deep);font-size:1.05rem;padding:14px 20px}.quest-opt:hover{border-color:var(--pink);transform:translateY(-2px);box-shadow:0 8px 18px #c9184a2e}.time-date{font-weight:600;margin-bottom:16px}.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)}.game-offer{margin-top:16px;animation:pop .4s cubic-bezier(.2,.8,.2,1.2)}.game-offer .sub{margin-bottom:12px}.signature{margin-top:24px;font-style:italic;color:#a8275f}.tiny-note{margin-top:16px;font-size:.8rem;color:#b88}.wheel-card{max-width:380px}.wheel-wrap{position:relative;width:280px;height:280px;margin:18px auto 22px}.wheel{width:280px;height:280px;border-radius:50%;position:relative;border:6px solid #fff;box-shadow:0 12px 32px #c9184a52;transition:transform 4.2s cubic-bezier(.17,.67,.18,1)}.wheel-pointer{position:absolute;top:-14px;left:50%;transform:translate(-50%);z-index:4;color:var(--deep);font-size:30px;line-height:1;filter:drop-shadow(0 2px 2px rgba(0,0,0,.25))}.wheel-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;pointer-events:none}.wheel-label span{margin-top:16px;color:#fff;font-weight:700;font-size:.78rem;white-space:nowrap;text-shadow:0 1px 3px rgba(0,0,0,.45);max-width:110px;overflow:hidden;text-overflow:ellipsis}.wheel-hub{position:absolute;top:50%;left:50%;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:50%;background:#fff;box-shadow:0 2px 6px #c9184a59;z-index:3}.wheel-result{margin-top:18px;font-size:1.12rem}.wheel-result b{color:var(--deep)}.game-card{max-width:420px}.game-status{font-size:1.15rem;font-weight:600;color:#a8275f;margin:10px 0 20px;min-height:1.4em}.game-status.active{color:var(--deep)}.board{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-width:300px;margin:0 auto 20px}.cell{aspect-ratio:1;background:var(--cream);border:2px solid var(--soft);border-radius:14px;font-size:2.4rem;padding:0;display:flex;align-items:center;justify-content:center;line-height:1}.board.my-turn .cell:not(.filled):hover{background:var(--soft);border-color:var(--pink)}.cell:disabled{cursor:default}.game-back{display:inline-block;margin-top:16px;color:#a8275f;text-decoration:none;font-size:.95rem}.game-back:hover{text-decoration:underline}.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}}
