:root{color-scheme:light;font-family:"Noto Serif TC",serif;background:radial-gradient(circle at top,#ffefe3f2,#fff9f58c 45%,#fcf7f2e6 70%),linear-gradient(180deg,#fffdf9,#f7efe6);color:#49352a;--bg-card: rgba(255, 252, 248, .82);--bg-soft: rgba(255, 248, 240, .88);--line: rgba(126, 89, 69, .15);--text-main: #49352a;--text-soft: #896f60;--accent: #bb8d6a;--accent-deep: #8d6146;--shadow: 0 28px 70px rgba(122, 89, 65, .14)}*{box-sizing:border-box}html,body,#app{margin:0;min-height:100%;width:100%;overflow-x:hidden}body{min-width:320px}img{display:block;max-width:100%}a,button{color:inherit;text-decoration:none}button{border:0;font:inherit;cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.page-shell{position:relative;isolation:isolate;min-height:100vh;padding:24px 16px 48px;overflow-x:clip}.invite-card{position:relative;z-index:1;width:min(100%,460px);max-width:100%;margin:0 auto;padding:22px;border:1px solid rgba(255,255,255,.75);border-radius:32px;background:var(--bg-card);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:var(--shadow)}.hero{text-align:center;padding:12px 8px 4px}.eyebrow,.panel-label,.closing span,.count-box span{letter-spacing:.18em;text-transform:uppercase}.eyebrow,.panel-label,.count-box span,.closing span{color:var(--text-soft)}.eyebrow{margin:0 0 10px;font-size:.75rem}.hero h1{margin:0;font-family:Parisienne,cursive;font-size:clamp(2.65rem,10vw,3.65rem);font-weight:400;letter-spacing:0;line-height:1.15}.chinese-title-art{width:min(100%,200px);margin:4px auto 0}.album-frame{position:relative;margin-top:10px;width:min(100%,360px);margin-inline:auto}.album-viewport{aspect-ratio:4 / 5;border-radius:28px;overflow:hidden;background:#e5e5e5;box-shadow:0 18px 44px #946e5729;touch-action:pan-y}.album-track{display:flex;width:100%;height:100%;transition:transform .42s ease}.album-track img{flex:0 0 100%;width:100%;height:100%;object-fit:contain;object-position:center;cursor:zoom-in}.album-track img:focus-visible{outline:3px solid rgba(187,141,106,.8);outline-offset:-5px}.album-control{position:absolute;top:50%;z-index:1;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:#fffcf8d1;box-shadow:0 10px 22px #7a594129;color:var(--accent-deep);font-family:Cormorant Garamond,serif;font-size:2rem;line-height:1;transform:translateY(-50%)}.album-control-prev{left:12px}.album-control-next{right:12px}.album-footer{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:12px;color:var(--text-soft);font-family:Cormorant Garamond,serif;font-size:.95rem}.album-dots{display:flex;gap:8px}.album-dots button{width:7px;height:7px;padding:0;border-radius:50%;background:#8d61463d}.album-dots button.active{width:18px;border-radius:999px;background:var(--accent-deep)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:grid;place-items:center;padding:58px 52px;background:#161210f0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.lightbox-image{max-width:min(100%,1200px);max-height:calc(100vh - 116px);object-fit:contain;border-radius:8px;box-shadow:0 24px 70px #0000006b}.lightbox-close,.lightbox-control{position:fixed;z-index:1;display:grid;place-items:center;color:#fffaf5;background:#ffffff1a;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.lightbox-close{top:16px;right:16px;width:42px;height:42px;border-radius:50%;font-size:1.9rem;line-height:1}.lightbox-control{top:50%;width:42px;height:58px;border-radius:999px;font-family:Cormorant Garamond,serif;font-size:2.4rem;line-height:1;transform:translateY(-50%)}.lightbox-control-prev{left:8px}.lightbox-control-next{right:8px}.lightbox-count{position:fixed;bottom:16px;left:50%;margin:0;color:#fffaf5d1;font-family:Cormorant Garamond,serif;font-size:1rem;transform:translate(-50%)}.lightbox button:focus-visible{outline:2px solid #e1c47d;outline-offset:3px}.panel{margin-top:18px;padding:18px;border:1px solid var(--line);border-radius:24px;background:var(--bg-soft)}.panel-label{margin:0 0 14px;font-size:.72rem}.countdown-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.count-box{padding:16px 8px;border-radius:18px;background:#ffffffb8;text-align:center}.count-box strong{display:block;font-family:Cormorant Garamond,serif;font-size:2rem;font-weight:600;line-height:1}.count-box span{display:block;margin-top:6px;font-size:.6rem}.info-row{display:grid;gap:6px;margin-bottom:14px}.info-row span{color:var(--text-soft);font-size:.88rem}.info-row strong{font-size:1rem;line-height:1.6}.rsvp-panel p:not(.panel-label){margin:0 0 16px;color:var(--text-main);font-size:.95rem;line-height:1.7}.muted strong{font-weight:500}.primary-button{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:48px;margin-top:6px;border-radius:999px;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-deep) 100%);color:#fff9f3;font-size:.95rem;box-shadow:0 16px 28px #8d61463d}.pill-group{display:flex;flex-wrap:wrap;gap:8px}.pill{padding:9px 12px;border:1px solid rgba(187,141,106,.28);border-radius:999px;background:#ffffff9e;font-size:.86rem}.timeline{position:relative;display:grid;gap:16px;margin-top:18px}.timeline:before{content:"";position:absolute;left:91px;top:8px;bottom:8px;width:1px;background:#bb8d6a66}.timeline-item{display:grid;grid-template-columns:68px 18px minmax(0,1fr);gap:14px;align-items:start}.timeline-marker{position:relative;display:block;width:18px;height:18px;margin-top:7px}.timeline-marker:before{content:"";position:absolute;top:50%;left:50%;width:11px;height:11px;border:2px solid #f8efe7;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px #fff8f0e6;transform:translate(-50%,-50%)}.timeline-time{position:relative;z-index:1;font-family:Cormorant Garamond,serif;font-size:1.35rem;font-weight:700;line-height:1;text-align:right;padding-top:2px}.timeline-content{min-width:0}.timeline-item h2{margin:0;font-size:1rem}.timeline-item p{margin:6px 0 0;color:var(--text-soft);font-size:.9rem;line-height:1.65}.closing{padding:24px 6px 12px;text-align:center}.closing p{margin:0;font-size:.88rem;line-height:1.45;white-space:normal;overflow-wrap:anywhere}.closing span{display:block;margin-top:14px;font-size:.72rem}@media (min-width: 600px){.page-shell{padding-top:40px}}@media (min-width: 768px){.page-shell{padding:48px 28px 64px}.invite-card{width:min(100%,620px);padding:30px}.hero{padding-top:16px}.album-frame{width:min(100%,430px)}.panel{padding:22px}.countdown-grid{gap:14px}}
