:root{--color-bg:#120b12;--color-panel:#1b121cd1;--color-panel-strong:#2a1c2bf0;--color-line:#ffe6ec24;--color-text:#f7e8ee;--color-muted:#f7e8eeb8;--color-accent:#ff8fb2;--color-accent-strong:#ff628d;--color-accent-soft:#ff8fb226;--shadow-soft:0 18px 50px #00000059;--shadow-deep:0 28px 100px #00000073}*,:before,:after{box-sizing:border-box}html,body,#app{min-height:100%}body{min-height:100vh;color:var(--color-text);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:radial-gradient(circle at top,#ff7aa033,#0000 35%),radial-gradient(circle at 80% 20%,#ffc6dd14,#0000 30%),linear-gradient(#1a1018 0%,#0f0910 100%);margin:0;font-family:Inter,PingFang SC,Microsoft YaHei,-apple-system,BlinkMacSystemFont,sans-serif}button,input,textarea{font:inherit}button{border:0}input,textarea{color:var(--color-text);background:#ffffff0a}#app{min-height:100vh}.wedding-shell{min-height:100vh;padding:18px}.topbar{grid-template-columns:1fr auto;align-items:center;gap:16px;max-width:1280px;margin:0 auto 16px;display:grid}.topbar__title{color:#f5e7cf;letter-spacing:.08em;font-weight:700}.topbar__nav{border:1px solid var(--color-line);background:#ffffff0a;border-radius:999px;gap:8px;padding:5px;display:inline-flex}.topbar__nav button{color:#ffecf2c2;cursor:pointer;background:0 0;border-radius:999px;min-height:38px;padding:0 16px}.topbar__nav button.active{color:#21150c;background:linear-gradient(135deg,#f4e0b8,#d3b178);font-weight:700}.page{max-width:1280px;margin:0 auto}.page__hero{margin-bottom:16px}.page__hero h1{color:#fff6eb;margin:0;font-size:clamp(2rem,4vw,3.2rem);line-height:1.1}.page__hero p{color:var(--color-muted);margin:10px 0 0}.send-layout{grid-template-columns:minmax(320px,460px) minmax(280px,1fr);gap:20px;display:grid}.hero-stage,.send-preview,.wish-form{border:1px solid var(--color-line);background:var(--color-panel);box-shadow:var(--shadow-soft);border-radius:24px;position:relative;overflow:hidden}.hero-stage{background:radial-gradient(circle at 50% 45%,#dbb2761f,#0000 30%),radial-gradient(circle at 24% 18%,#70162c57,#0000 28%),linear-gradient(#160c12fa,#08070afa);place-items:center;min-height:calc(100vh - 92px);padding:20px;display:grid}.hero-stage:before{content:"";opacity:.22;background-image:radial-gradient(circle,#ffeccd47 0 1px,#0000 1px),radial-gradient(circle,#ffffff2e 0 1px,#0000 1px);background-position:12px 18px,72px 54px;background-size:120px 120px,180px 180px;position:absolute;inset:0}.send-preview{background:radial-gradient(circle at 70% 24%,#dbb2761f,#0000 30%),#180f19e0;align-content:center;gap:22px;min-height:360px;padding:28px;display:grid}.send-preview__label{color:#d3b178;letter-spacing:.16em;text-transform:uppercase;font-size:.82rem}.send-preview__names{color:#fff7ec;gap:8px;font-family:Georgia,Songti SC,SimSun,serif;font-size:clamp(2.2rem,5vw,4.2rem);line-height:1;display:grid}.send-preview__names span{color:#e2c28eb8;font-size:1.2rem}.send-preview__hint span{color:var(--color-muted);font-size:.88rem}.send-preview__hint p{color:#ffecf2d1;margin:8px 0 0}.wish-form{background:#ffffff08;gap:14px;padding:18px;display:grid}.wish-form label{gap:8px;display:grid}.wish-form span{color:var(--color-muted);font-size:.92rem}.wish-form input,.wish-form textarea{resize:none;border:1px solid #ffffff14;border-radius:14px;outline:none;width:100%;min-height:44px;padding:14px 16px;transition:border-color .2s,box-shadow .2s,transform .2s}.wish-form textarea{min-height:118px}.wish-form input:focus,.wish-form textarea:focus{border-color:#ff8fb299;box-shadow:0 0 0 4px #ff8fb21f}.wish-form button{color:#21150c;cursor:pointer;background:linear-gradient(135deg,#f4e0b8,#d3b178);border-radius:999px;justify-self:start;min-height:48px;padding:0 22px;font-weight:700;transition:transform .2s,opacity .2s}.wish-form button:hover:not(:disabled){transform:translateY(-1px)}.wish-form button:disabled{opacity:.45;cursor:not-allowed}.couple-fields{grid-template-columns:1fr 1fr;gap:12px;display:grid}.heart-canvas{--heart-size:min(88vw, 720px);width:var(--heart-size);aspect-ratio:1;isolation:isolate;position:relative}.gather-field{z-index:1;pointer-events:none;position:absolute;inset:-8%}.gather-message{left:var(--start-x);top:var(--start-y);color:#fff4f7e0;text-align:center;text-shadow:0 0 12px #ff6a8e99,0 0 26px #ff275b47;opacity:0;max-width:clamp(96px,14vw,150px);animation:gather-in var(--gather-duration) cubic-bezier(.22, .8, .24, 1) infinite;animation-delay:var(--gather-delay);padding:6px 0;font-family:Georgia,Songti SC,SimSun,serif;font-size:clamp(.76rem,1.05vw,.94rem);font-weight:600;line-height:1.35;position:absolute;transform:translate(-50%,-50%)scale(.82)}.gather-message em,.nebula-particle em{color:#ffe1eabd;margin-top:4px;font-size:.78em;font-style:normal;font-weight:500;display:block}.gather-message--active{color:#fff;text-shadow:0 0 14px #ffffffbf,0 0 34px #dbb27673}.nebula-field{z-index:2;position:absolute;inset:0}.nebula-particle{left:var(--particle-x);top:var(--particle-y);color:#f1e0c1b8;text-align:center;letter-spacing:.01em;max-width:clamp(110px,14vw,168px);opacity:var(--particle-opacity);text-shadow:0 0 10px #dbb2762e,0 0 18px #ffffff1a;animation:9s ease-in-out infinite nebula-breathe,8s ease-in-out infinite nebula-flicker;animation-delay:var(--particle-delay);padding:6px 10px;font-family:Georgia,Songti SC,SimSun,serif;font-size:clamp(.68rem,.84vw,.82rem);line-height:1.32;display:inline-grid;position:absolute;transform:translate(-50%,-50%)}.nebula-particle:before{content:"";filter:blur(6px);z-index:-1;background:radial-gradient(circle,#dbb2761a,#0000 72%);border-radius:999px;position:absolute;inset:20% 18%}.nebula-particle--active{color:#fff;text-shadow:0 0 12px #ffffffad,0 0 22px #dbb27647}.vow-center{z-index:4;text-align:center;place-items:center;gap:6px;width:min(68%,320px);display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.vow-center small{color:#e2c28ec7;letter-spacing:.22em;text-transform:uppercase;font-size:.72rem}.vow-center strong{color:#fff7ec;text-shadow:0 2px 8px #2d160a8a,0 0 20px #e2c28e33;font-family:Georgia,Songti SC,SimSun,serif;font-size:clamp(1.3rem,2.3vw,2rem);font-weight:700;line-height:1.05}.vow-center span{color:#e2c28ead;font-size:.9rem}.vow-halo{z-index:0;position:absolute;inset:16% 18%}.vow-halo span{border:1px solid #e2c28e1a;border-radius:50%;animation:10s ease-in-out infinite halo-breathe;position:absolute;inset:0;box-shadow:0 0 36px #e2c28e0d}.vow-halo span:nth-child(2){animation-delay:-3s;inset:7%}.vow-halo span:nth-child(3){animation-delay:-6s;inset:14%}.empty-heart-text{color:#ffecf2b8;letter-spacing:.08em;font-size:.92rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.wish-list{gap:12px;display:grid}.wish-item{background:#ffffff0a;border:1px solid #ffffff14;border-radius:18px;gap:6px;padding:14px 16px;display:grid}.wish-item strong{color:#f9ebd1}.wish-item p{line-height:1.5}.wish-item--new{background:#d3b1781a;border-color:#d3b17894}@keyframes gather-in{0%{opacity:0;left:var(--start-x);top:var(--start-y);filter:blur(1px);transform:translate(-50%,-50%)scale(.72)}16%{opacity:.85}44%{opacity:1;left:var(--end-x);top:var(--end-y);filter:blur();transform:translate(-50%,-50%)scale(1.02)}76%{opacity:1;left:var(--end-x);top:var(--end-y);filter:blur();transform:translate(-50%,-50%)scale(1)}88%{opacity:.72;left:var(--end-x);top:var(--end-y);transform:translate(-50%,-50%)scale(.94)}to{opacity:0;left:var(--end-x);top:var(--end-y);filter:blur(1px);transform:translate(-50%,-50%)scale(.78)}}@keyframes nebula-breathe{0%,to{transform:translate(-50%,-50%)scale(.98)}50%{transform:translate(-50%,-50%)scale(1.03)}}@keyframes nebula-flicker{0%,to{opacity:var(--particle-opacity)}50%{opacity:.9}}@keyframes halo-breathe{0%,to{opacity:.35;transform:scale(.98)}50%{opacity:.7;transform:scale(1.02)}}@media (width<=960px){.hero-stage{min-height:72vh}.heart-canvas{--heart-size:min(96vw, 620px)}.send-layout{grid-template-columns:1fr}}@media (width<=640px){.wedding-shell{padding:12px}.page{max-width:100%}.topbar{grid-template-columns:1fr}.topbar__nav{justify-self:start}.hero-stage{border-radius:20px;min-height:62vh;padding:14px}.heart-canvas{--heart-size:min(98vw, 460px)}.couple-fields{grid-template-columns:1fr}.gather-message{max-width:104px;font-size:.7rem}.nebula-particle{max-width:110px;font-size:.62rem}.vow-center{width:min(74%,240px)}}@media (prefers-reduced-motion:reduce){.gather-message,.nebula-particle,.vow-halo span{animation:none}.gather-message{opacity:1;left:var(--end-x);top:var(--end-y)}}
