:root{--p50:#fff6fa;--p200:#ffc8df;--p400:#ff83b8;--p500:#ff5fa2;--p600:#eb3e88;--rose:#6f2448;--card:rgba(255,255,255,.76);--shadow:0 30px 80px rgba(176,47,107,.22)}*{box-sizing:border-box}html,body{min-height:100%}body{margin:0;overflow:hidden;color:var(--rose);font-family:"PingFang SC","Microsoft YaHei",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:radial-gradient(circle at 18% 18%,rgba(255,255,255,.95) 0 4%,transparent 24%),radial-gradient(circle at 84% 20%,rgba(255,197,223,.72) 0 7%,transparent 28%),radial-gradient(circle at 78% 88%,rgba(255,168,205,.55) 0 9%,transparent 30%),linear-gradient(145deg,#fff5fa 0%,#ffd7e9 46%,#ffadd1 100%)}button,a{-webkit-tap-highlight-color:transparent}.page-shell{position:relative;z-index:2;display:grid;min-height:100vh;min-height:100svh;place-items:center;padding:24px}.invite-card{position:relative;width:min(92vw,620px);padding:clamp(34px,7vw,62px) clamp(24px,7vw,64px) clamp(30px,6vw,50px);overflow:visible;text-align:center;background:var(--card);border:1px solid rgba(255,255,255,.82);border-radius:34px;box-shadow:var(--shadow);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.invite-card:before{position:absolute;inset:10px;pointer-events:none;content:"";border:1px solid rgba(255,113,172,.18);border-radius:26px}.mini-heart{display:grid;width:64px;height:64px;margin:-4px auto 18px;color:#fff;font-size:32px;place-items:center;background:linear-gradient(145deg,var(--p400),var(--p600));border-radius:50%;box-shadow:0 12px 30px rgba(235,62,136,.32);animation:heartbeat 1.8s ease-in-out infinite}.eyebrow{margin:0 0 12px;color:var(--p600);font-size:13px;font-weight:800;letter-spacing:.24em}h1{margin:0;color:#72284a;font-size:clamp(32px,7vw,58px);line-height:1.13;letter-spacing:-.04em}.subtitle{max-width:460px;margin:20px auto 0;color:rgba(111,36,72,.7);font-size:clamp(15px,3.5vw,18px);line-height:1.75}.button-stage{position:relative;display:flex;min-height:62px;margin-top:34px;align-items:center;justify-content:center;gap:16px}.choice-button{display:inline-flex;min-width:132px;min-height:54px;align-items:center;justify-content:center;padding:14px 25px;color:inherit;font:inherit;font-size:16px;font-weight:800;text-decoration:none;cursor:pointer;border:0;border-radius:999px;transition:transform 180ms ease,box-shadow 180ms ease,background 180ms ease}.choice-button:focus-visible{outline:4px solid rgba(255,95,162,.25);outline-offset:4px}.yes-button{color:white;background:linear-gradient(135deg,var(--p500),var(--p600));box-shadow:0 14px 28px rgba(235,62,136,.32)}.yes-button:hover{transform:translateY(-3px) scale(1.03);box-shadow:0 18px 35px rgba(235,62,136,.38)}.yes-button:disabled{cursor:not-allowed;opacity:.45;transform:none;box-shadow:none}.think-button{color:#a44370;background:rgba(255,255,255,.82);border:1px solid rgba(255,95,162,.24);box-shadow:0 10px 24px rgba(129,44,84,.1)}.think-button:hover{background:white}.think-button.is-running{position:fixed;z-index:20;margin:0;transition:left 520ms cubic-bezier(.2,.86,.35,1),top 520ms cubic-bezier(.2,.86,.35,1),transform 180ms ease;will-change:left,top}.hint{min-height:22px;margin:21px 0 0;color:rgba(154,61,105,.62);font-size:13px}.ambient{position:fixed;inset:0;z-index:1;overflow:hidden;pointer-events:none}.heart{position:absolute;color:rgba(255,85,155,.22);filter:blur(.2px);animation:float 8s ease-in-out infinite}.heart-1{top:8%;left:8%;font-size:44px;transform:rotate(-16deg)}.heart-2{top:16%;right:12%;font-size:70px;animation-delay:-2s}.heart-3{bottom:11%;left:14%;font-size:82px;animation-delay:-4s}.heart-4{right:8%;bottom:9%;font-size:40px;animation-delay:-1s}.heart-5{top:47%;left:3%;font-size:30px;animation-delay:-5s}.heart-6{top:58%;right:4%;font-size:34px;animation-delay:-3s}.accepted-card{overflow:hidden}.celebration{display:flex;margin-bottom:14px;justify-content:center;gap:10px;color:var(--p500);font-size:26px}.celebration span:nth-child(1){animation:pop 1.4s ease-in-out infinite}.celebration span:nth-child(2){animation:pop 1.4s .18s ease-in-out infinite}.celebration span:nth-child(3){animation:pop 1.4s .36s ease-in-out infinite}.date-ticket{display:grid;max-width:390px;margin:30px auto 26px;padding:23px;gap:9px;color:#8c365f;background:linear-gradient(135deg,rgba(255,255,255,.9),rgba(255,225,238,.88));border:1px dashed rgba(235,62,136,.46);border-radius:20px;box-shadow:0 16px 38px rgba(177,62,116,.12)}.ticket-label{color:var(--p600);font-size:11px;font-weight:900;letter-spacing:.25em}.date-ticket strong{font-size:20px}.date-ticket span:last-child{color:rgba(111,36,72,.62);font-size:13px}.back-button{color:#9d3e6b;background:white;box-shadow:0 12px 28px rgba(177,62,116,.14)}.back-button:hover{transform:translateY(-2px)}.calendar-page{overflow:auto}.calendar-shell{padding-block:28px}.calendar-card{width:min(94vw,680px);padding-top:38px;padding-bottom:34px}.calendar-card h1{font-size:clamp(30px,6vw,48px)}.calendar{max-width:520px;margin:28px auto 0;padding:18px;background:rgba(255,255,255,.72);border:1px solid rgba(255,95,162,.16);border-radius:24px;box-shadow:0 18px 45px rgba(159,54,104,.12)}.calendar-header{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:10px;margin-bottom:16px}.calendar-header h2{margin:0;color:#7b2f53;font-size:20px}.calendar-nav{display:grid;width:42px;height:42px;padding:0;color:var(--p600);font-size:30px;line-height:1;cursor:pointer;place-items:center;background:#fff;border:1px solid rgba(255,95,162,.18);border-radius:50%;box-shadow:0 8px 20px rgba(177,62,116,.1)}.calendar-nav:disabled{cursor:not-allowed;opacity:.35}.weekday-row,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.weekday-row{margin-bottom:8px;color:rgba(111,36,72,.5);font-size:12px;font-weight:800}.weekday-row span{padding:6px 0}.calendar-day,.calendar-empty{aspect-ratio:1}.calendar-day{display:grid;padding:0;color:rgba(111,36,72,.34);font:inherit;font-size:14px;font-weight:800;cursor:not-allowed;place-items:center;background:rgba(255,255,255,.4);border:1px solid transparent;border-radius:14px}.calendar-day.is-weekend:not(:disabled){color:#9e3d6a;cursor:pointer;background:linear-gradient(145deg,#fff,#ffe0ed);border-color:rgba(255,95,162,.18);box-shadow:0 7px 16px rgba(177,62,116,.09);transition:transform 160ms ease,box-shadow 160ms ease,background 160ms ease}.calendar-day.is-weekend:not(:disabled):hover{transform:translateY(-2px) scale(1.05);background:#fff;box-shadow:0 12px 22px rgba(177,62,116,.16)}.calendar-day.is-selected{color:#fff!important;background:linear-gradient(135deg,var(--p500),var(--p600))!important;border-color:transparent!important;box-shadow:0 10px 24px rgba(235,62,136,.3)!important}.calendar-day.is-today{outline:2px solid rgba(235,62,136,.28);outline-offset:2px}.calendar-day.is-past{opacity:.42}.selected-date{min-height:24px;margin:20px 0 14px;color:rgba(111,36,72,.58);font-size:14px}.selected-date.has-selection{color:#8f365f;font-weight:800}.confirm-date{margin-inline:auto}.date-confirmation{display:grid;max-width:430px;margin:22px auto 0;padding:20px;gap:8px;color:#8c365f;background:linear-gradient(135deg,rgba(255,255,255,.94),rgba(255,225,238,.92));border:1px dashed rgba(235,62,136,.48);border-radius:20px;box-shadow:0 16px 38px rgba(177,62,116,.12)}.date-confirmation strong{font-size:20px}.date-confirmation span:last-child{font-size:14px}.date-confirmation[hidden]{display:none}.calendar-back{margin-top:18px}.calendar-empty{display:block}@keyframes heartbeat{0%,100%{transform:scale(1)}15%{transform:scale(1.12)}30%{transform:scale(.98)}45%{transform:scale(1.08)}}@keyframes float{0%,100%{translate:0 0}50%{translate:0 -18px}}@keyframes pop{0%,100%{transform:translateY(0) scale(.86);opacity:.68}50%{transform:translateY(-8px) scale(1.15);opacity:1}}@media(max-width:520px){.page-shell{padding:16px}.invite-card{width:100%;padding:40px 20px 32px;border-radius:28px}.button-stage{flex-direction:column;min-height:124px}.choice-button{width:min(100%,260px)}.heart-2,.heart-3{opacity:.6}.calendar-shell{padding-block:16px}.calendar-card{padding-inline:14px}.calendar{padding:12px;border-radius:20px}.weekday-row,.calendar-grid{gap:5px}.calendar-day{border-radius:11px;font-size:13px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.think-button.is-running{transition-duration:.01ms}}