:root{--sky-top:#eaf8ff;--sky-bottom:#fffbed;--cloud-glow:#ffffffb8;--card-bg:#ffffffc7;--text-primary:#303236;--text-secondary:#71767b;--accent:#e5a8b3;--accent-strong:#cb7f91;--accent-hover:#e5a8b31f;--line-soft:#535b6029;--toast-bg:#3f403d;--toast-text:#fff;--plane-blue:#73b8e8;--shadow:0 14px 36px #4f66701a;--font-sans:Inter, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--font-serif:Georgia, "Times New Roman", "Songti SC", serif}*{box-sizing:border-box}html{background:var(--sky-bottom);min-height:100%}body{min-height:100%;color:var(--text-primary);font-family:var(--font-sans);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0}button{font:inherit}.app-shell{min-height:100dvh;padding:max(24px, env(safe-area-inset-top)) 16px max(78px, calc(72px + env(safe-area-inset-bottom)));place-items:center;display:grid;position:relative;overflow-x:hidden}.sky-background{z-index:-2;background:linear-gradient(180deg, var(--sky-top) 0%, #eefaff 48%, var(--sky-bottom) 100%);position:fixed;inset:0;overflow:hidden}.sky-background:after{content:"";opacity:.72;filter:blur(8px);background:linear-gradient(90deg,#fff0 0%,#ffffff3d 48%,#fff0 70%),radial-gradient(circle at 20% 57%,#ffffff6b,#0000 16%),radial-gradient(circle at 77% 33%,#ffffff52,#0000 18%);animation:18s cubic-bezier(.45,0,.55,1) infinite alternate sky-sheen;position:absolute;inset:0}.cloud-layer{background:var(--cloud-glow);filter:blur(34px);opacity:.6;border-radius:999px;display:block;position:absolute;transform:translate(0,0)}.cloud-layer--wide{width:78vw;height:104px;animation:20s ease-in-out infinite alternate cloud-drift-wide;top:26%;left:-18vw}.cloud-layer--low{opacity:.48;width:64vw;height:120px;animation:17s ease-in-out infinite alternate cloud-drift-low;bottom:24%;right:-20vw}.cloud-layer--flare{opacity:.7;filter:blur(26px);width:260px;height:96px;animation:14s ease-in-out infinite alternate cloud-flare;top:53%;left:8%}.scene-stage{isolation:isolate;place-items:center;width:min(640px,100%);min-height:min(680px,100dvh - 140px);display:grid}.scene-layer{z-index:1;grid-area:1/1;place-items:center;width:100%;display:grid}.scene-layer.is-entering{animation:.48s cubic-bezier(.22,1,.36,1) both scene-enter}.scene-layer.is-exiting{z-index:0;pointer-events:none;animation:.48s cubic-bezier(.22,1,.36,1) both scene-exit}.cover-scene{text-align:center;place-items:center;width:min(420px,100vw - 32px);min-height:420px;display:grid}.plane-button{min-width:min(340px,100vw - 32px);min-height:260px;color:var(--text-primary);cursor:pointer;background:0 0;border:0;border-radius:28px;place-items:center;gap:12px;padding:28px;display:grid}.plane-button:disabled{cursor:default;opacity:.55}.paper-plane{filter:drop-shadow(0 8px 18px #5d96be1f);width:min(220px,62vw);height:auto;margin-bottom:18px;transition:filter .18s,transform .18s;animation:4.8s ease-in-out infinite plane-float;overflow:visible}.plane-line{stroke:var(--plane-blue);stroke-width:3px;stroke-linecap:round;stroke-linejoin:round}.plane-line--soft{fill:#73b8e80d;stroke:#73b8e852}.plane-accent{stroke:#e5a8b3ad;stroke-width:3px;stroke-linecap:round}.cover-title{color:#303236b8;font-size:clamp(32px,8vw,40px);font-weight:500;line-height:1.1;display:block}.cover-subtitle{color:#71767ba3;font-size:18px;font-weight:500;display:block}.plane-button:hover:not(:disabled) .paper-plane,.plane-button:focus-visible .paper-plane{filter:drop-shadow(0 10px 22px #5397cb3d);transform:translateY(-2px)rotate(-1deg)scale(1.03)}.plane-button:focus-visible{outline-offset:6px;outline:2px solid #5289b6d1}.invitation-card{background:var(--card-bg);width:min(340px,100vw - 32px);box-shadow:var(--shadow);text-align:center;-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);border:1px solid #ffffff85;border-radius:26px;padding:34px 30px 30px}.invitation-card--roomy{padding-top:38px;padding-bottom:34px}.invitation-card--response{padding-top:34px}.scene-title,.dress-title{color:var(--text-primary);margin:0}.scene-title{font-size:22px;font-weight:650;line-height:1.25}.scene-title--with-icon{justify-content:center;align-items:center;gap:8px;display:flex}.scene-title:focus-visible,.dress-title:focus-visible{outline:2px solid var(--accent-strong);outline-offset:6px;border-radius:10px}.quote{color:#303236a8;margin:28px 0 26px;font-size:14px;font-style:italic;font-weight:550;line-height:1.62}.zh-copy{color:#71767bd1;margin:0;font-size:15px;font-weight:520;line-height:1.75}.zh-copy p,.response-copy p{margin:0}.support-line{color:#71767bd1;margin:24px 0 0;font-size:15px;font-weight:520;line-height:1.45}.cloud-divider{background:var(--line-soft);width:48px;height:1px;margin:28px auto}.venue-line{color:var(--text-primary);margin:0;font-size:21px;font-weight:650;line-height:1.25}.venue-zh{color:#71767bc7;margin:28px 0 24px;font-size:16px;font-weight:520}.dress-title{white-space:pre-line;font-family:var(--font-serif);letter-spacing:0;font-size:27px;font-weight:700;line-height:.98}.dress-title+.zh-copy{margin-top:32px}.rsvp-question{color:#303236b3;margin:38px 0 28px;font-size:16px;font-weight:520}.response-title{font-size:22px}.shared-quote{margin-top:28px;margin-bottom:28px}.response-copy{color:var(--text-primary);font-size:18px;font-weight:700;line-height:1.28}.copy-box{color:#303236e6;text-align:left;-webkit-user-select:text;user-select:text;background:#ffffff6b;border:1px dashed #535b6038;border-radius:10px;width:100%;margin:28px 0 0;padding:16px 18px;font-size:15px;font-weight:650;line-height:1.5}.copy-box:focus-visible{outline:2px solid var(--accent-strong);outline-offset:4px}.button-stack{gap:10px;margin-top:34px;display:grid}.response-actions{margin-top:26px}.cloud-button{width:100%;min-height:46px;color:var(--text-primary);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;padding:10px 18px;font-size:15px;font-weight:650;line-height:1.2;transition:background-color .16s,border-color .16s,box-shadow .16s,opacity .16s,transform .12s;display:inline-flex}.cloud-button--outlined{background:#ffffff38;border:1px solid #e5a8b3eb;box-shadow:0 0 #e5a8b300}.cloud-button--quiet{color:#71767bdb;background:0 0;border:1px solid #0000;min-height:36px}.cloud-button:hover:not(:disabled){background:var(--accent-hover);border-color:#cb7f91c7;transform:translateY(-1px);box-shadow:0 8px 18px #e5a8b31f}.cloud-button:active:not(:disabled){transform:scale(.98)}.cloud-button:focus-visible{outline:2px solid var(--accent-strong);outline-offset:3px}.cloud-button:disabled{cursor:default;opacity:.55}.copy-toast{right:50%;bottom:max(24px, calc(18px + env(safe-area-inset-bottom)));z-index:10;max-width:calc(100vw - 32px);color:var(--toast-text);background:var(--toast-bg);text-align:center;border-radius:999px;padding:13px 22px;font-size:14px;font-weight:650;line-height:1.2;animation:2.8s both toast-cycle;position:fixed;transform:translate(50%);box-shadow:0 12px 30px #2223222e}.copy-toast--error{background:#5b4548}@keyframes scene-enter{0%{opacity:0;transform:translateY(8px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes scene-exit{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-6px)scale(1.015)}}@keyframes toast-cycle{0%{opacity:0;transform:translate(50%)translateY(8px)}7%,88%{opacity:1;transform:translate(50%)translateY(0)}to{opacity:0;transform:translate(50%)translateY(6px)}}@keyframes plane-float{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(-7px)rotate(-1deg)}}@keyframes cloud-drift-wide{0%{transform:translate(-3vw,-1vh)}to{transform:translate(14vw,2vh)}}@keyframes cloud-drift-low{0%{transform:translate(8vw,1vh)}to{transform:translate(-12vw,-2vh)}}@keyframes cloud-flare{0%{transform:translate(-4vw)}to{transform:translate(26vw,-2vh)}}@keyframes sky-sheen{0%{transform:translate(-8vw)}to{transform:translate(7vw)}}@media (max-width:390px){.app-shell{padding-left:16px;padding-right:16px}.invitation-card{border-radius:24px;width:calc(100vw - 32px);padding:30px 24px 26px}.scene-title{font-size:21px}.dress-title{font-size:25px}.response-copy{font-size:17px}.cloud-button{min-height:44px;padding-left:14px;padding-right:14px;font-size:14px}}@media (max-height:680px){.app-shell{place-items:start center}.scene-stage{min-height:auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important}.cloud-layer,.paper-plane,.sky-background:after{animation:none}.scene-layer.is-entering{animation:.12s both scene-fade}.scene-layer.is-exiting{animation:.12s both scene-fade-out}.copy-toast{animation:none}}@keyframes scene-fade{0%{opacity:0}to{opacity:1}}@keyframes scene-fade-out{0%{opacity:1}to{opacity:0}}
