:root{--color-primary:#8b7355;--color-primary-light:#c4a97d;--color-accent:#b08d57;--color-bg:#faf8f5;--color-bg-card:#fff;--color-text:#2c2c2c;--color-text-light:#6b6b6b;--color-text-muted:#999;--color-divider:#e8e4df;--color-white:#fff;--font-display:"Georgia", "Noto Serif SC", serif;--font-body:"PingFang SC", "Microsoft YaHei", -apple-system, sans-serif;--spacing-xs:8px;--spacing-sm:16px;--spacing-md:24px;--spacing-lg:40px;--spacing-xl:60px;--radius-sm:4px;--radius-md:8px}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;font-size:16px}body{font-family:var(--font-body);background-color:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;min-height:100vh;overflow-x:hidden}.invitation-app{min-height:100vh;position:relative}.invitation-content{z-index:2;max-width:420px;padding:0 var(--spacing-md);margin:0 auto;position:relative}.invitation-section{padding:var(--spacing-lg) 0;flex-direction:column;align-items:center;display:flex}.section-title{font-family:var(--font-display);color:var(--color-text-muted);text-align:center;margin-bottom:var(--spacing-lg);letter-spacing:.3em;text-transform:uppercase;font-size:1rem}.hero-section{min-height:100vh;padding:var(--spacing-xl) var(--spacing-md);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.hero-content{align-items:center;gap:var(--spacing-lg);flex-direction:column;display:flex}.hero-names{align-items:center;gap:var(--spacing-xs);flex-direction:column;display:flex}.hero-groom-name,.hero-bride-name{font-family:var(--font-display);color:var(--color-text);letter-spacing:.2em;font-size:2.2rem;font-weight:400}.hero-ampersand{font-family:var(--font-display);color:var(--color-primary-light);margin:var(--spacing-xs) 0;font-size:1.5rem;line-height:1}.hero-divider{background:var(--color-divider);width:40px;height:1px;margin:var(--spacing-sm) 0}.hero-invitation-text{color:var(--color-text-light);letter-spacing:.15em;font-size:.9rem}.hero-date-block{align-items:center;gap:var(--spacing-xs);padding:var(--spacing-md) 0;flex-direction:column;display:flex}.hero-date-main{font-family:var(--font-display);color:var(--color-text);letter-spacing:.15em;font-size:1.6rem;font-weight:400}.hero-date-time{color:var(--color-text-light);letter-spacing:.1em;font-size:.9rem}.hero-venue-brief{color:var(--color-text-light);letter-spacing:.05em;margin-top:var(--spacing-xs);font-size:.9rem}.hero-countdown{margin-top:var(--spacing-md)}.countdown-timer{gap:var(--spacing-xs);justify-content:center;display:flex}.countdown-unit{padding:var(--spacing-xs) 12px;flex-direction:column;align-items:center;min-width:52px;display:flex}.countdown-number{font-family:var(--font-display);color:var(--color-text);letter-spacing:.05em;font-size:1.8rem;font-weight:300}.countdown-label{color:var(--color-text-muted);letter-spacing:.1em;margin-top:2px;font-size:.65rem}.countdown-expired{font-family:var(--font-display);color:var(--color-primary);letter-spacing:.15em;font-size:1.2rem}.venue-section{padding:var(--spacing-lg) var(--spacing-md);text-align:center}.venue-info{margin-bottom:var(--spacing-md)}.venue-name{font-family:var(--font-display);color:var(--color-text);margin-bottom:var(--spacing-sm);letter-spacing:.1em;font-size:1.1rem;font-weight:400}.venue-address,.venue-phone{color:var(--color-text-light);letter-spacing:.03em;font-size:.85rem;line-height:1.8}.map-container{max-width:100%;margin:var(--spacing-md) auto;border-radius:var(--radius-md);border:1px solid var(--color-divider);overflow:hidden}.map-loading{padding:var(--spacing-md);text-align:center;color:var(--color-text-muted);background:var(--color-bg-card);font-size:.85rem}.map-wrapper{background:var(--color-bg-card)}.map-actions{gap:var(--spacing-sm);padding:var(--spacing-sm);background:var(--color-bg-card);justify-content:center;display:flex}.map-fallback{max-width:100%;margin:var(--spacing-md) auto;padding:var(--spacing-lg);background:var(--color-bg-card);border-radius:var(--radius-md);border:1px solid var(--color-divider);text-align:center}.map-fallback-address{color:var(--color-text-light);margin-bottom:var(--spacing-md);font-size:.85rem;line-height:1.8}.map-fallback-buttons{gap:var(--spacing-sm);justify-content:center;display:flex}.map-copy-btn,.map-nav-btn,.blessing-add-btn,.blessing-submit-btn,.share-button{min-width:44px;min-height:44px;padding:10px var(--spacing-md);background:var(--color-text);color:var(--color-white);border-radius:var(--radius-sm);cursor:pointer;letter-spacing:.1em;font-size:.8rem;font-family:var(--font-body);border:none;transition:opacity .2s}.map-copy-btn:active,.map-nav-btn:active,.blessing-add-btn:active,.blessing-submit-btn:active,.share-button:active{opacity:.7}.map-nav-btn{background:var(--color-primary)}.nav-sheet-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.nav-sheet{background:var(--color-white);border-radius:var(--radius-md) var(--radius-md) 0 0;width:100%;max-width:400px;padding:var(--spacing-md);padding-bottom:calc(var(--spacing-md) + env(safe-area-inset-bottom))}.nav-sheet-title{text-align:center;color:var(--color-text-light);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--color-divider);margin-bottom:var(--spacing-sm);font-size:.9rem}.nav-sheet-item{width:100%;color:var(--color-primary);text-align:center;cursor:pointer;border:none;border-bottom:1px solid var(--color-divider);font-size:1rem;font-family:var(--font-body);background:0 0;padding:14px;display:block}.nav-sheet-item:last-of-type{border-bottom:none}.nav-sheet-cancel{width:100%;margin-top:var(--spacing-sm);color:var(--color-text-light);text-align:center;cursor:pointer;font-size:1rem;font-family:var(--font-body);background:0 0;border:none;padding:14px;display:block}.wechat-guide-overlay{z-index:1000;background:#000000b3;position:fixed;inset:0}.wechat-guide{color:var(--color-white);text-align:right;font-size:1rem;line-height:1.8;position:absolute;top:16px;right:16px}.wechat-guide-arrow{margin-bottom:var(--spacing-xs);font-size:2rem;animation:1s infinite wechat-bounce}.wechat-guide-hint{opacity:.8;margin-top:var(--spacing-xs);font-size:.85rem}@keyframes wechat-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.blessings-title{margin-top:var(--spacing-xl)}.blessings-list{gap:var(--spacing-sm);max-width:100%;margin:var(--spacing-md) auto;flex-direction:column;display:flex}.blessing-item{padding:var(--spacing-md);background:var(--color-bg-card);border-radius:var(--radius-md);border:1px solid var(--color-divider);text-align:left}.blessing-name{color:var(--color-text);margin-bottom:var(--spacing-xs);letter-spacing:.05em;font-size:.85rem;display:block}.blessing-message{color:var(--color-text-light);font-size:.8rem;line-height:1.6}.blessing-add-btn{margin:var(--spacing-md) auto;background:var(--color-primary);display:block}.blessing-form{max-width:100%;margin:var(--spacing-md) auto;gap:var(--spacing-sm);flex-direction:column;display:flex;overflow:hidden}.blessing-input,.blessing-textarea{min-height:44px;padding:10px var(--spacing-sm);background:var(--color-bg-card);color:var(--color-text);border:1px solid var(--color-divider);border-radius:var(--radius-sm);font-family:var(--font-body);width:100%;font-size:.85rem}.blessing-textarea{resize:vertical;min-height:80px}.blessing-submit-btn{background:var(--color-text)}.invitation-footer{align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xl) var(--spacing-md) var(--spacing-lg);text-align:center;flex-direction:column;display:flex}.footer-text{font-family:var(--font-display);color:var(--color-text-light);letter-spacing:.15em;font-size:.9rem}.footer-date{color:var(--color-text-muted);letter-spacing:.05em;font-size:.8rem}.share-button{background:var(--color-text);padding:10px var(--spacing-lg);letter-spacing:.15em;font-size:.8rem}@media (width<=375px){.hero-groom-name,.hero-bride-name{font-size:1.8rem}.countdown-number{font-size:1.5rem}.countdown-unit{min-width:48px;padding:var(--spacing-xs) 8px}}@media (width>=414px){.hero-groom-name,.hero-bride-name{font-size:2.6rem}}.particle-background{background:0 0}::-webkit-scrollbar{width:3px}::-webkit-scrollbar-track{background:var(--color-bg)}::-webkit-scrollbar-thumb{background:var(--color-divider);border-radius:2px}
