:root{--color-cream:#fff;--color-warm-white:#fff;--color-beige:#f0f0f0;--color-beige-dark:#d4d4d4;--color-gold:#888;--color-gold-light:#aaa;--color-gold-dark:#555;--color-charcoal:#1a1a1a;--color-warm-brown:#777;--color-soft-sage:#b5bfa4;--color-dusty-rose:#c4a4a0;--color-muted-lavender:#b8a9c9;--font-serif:"PingFang HK","PingFang SC","Noto Sans SC",-apple-system,sans-serif;--font-sans:"Inter","Noto Sans SC",-apple-system,sans-serif;--font-brush:"PingFang HK","PingFang SC","Noto Sans SC",-apple-system,sans-serif;--section-padding:clamp(4rem,10vh,8rem);--content-max-width:800px;--wide-max-width:1100px}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);color:var(--color-charcoal);background-color:#fff;line-height:1.7;overflow-x:hidden}::selection{background-color:var(--color-gold-light);color:var(--color-charcoal)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--color-cream)}::-webkit-scrollbar-thumb{background:var(--color-beige-dark);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-gold-light)}.section{padding:var(--section-padding)1.5rem;position:relative}.section-inner{max-width:var(--content-max-width);margin:0 auto}.section-wide{max-width:var(--wide-max-width);margin:0 auto}.heading-display{font-family:var(--font-brush);letter-spacing:0;font-weight:300;line-height:1.2}.heading-section{font-family:var(--font-brush);color:var(--color-charcoal);letter-spacing:0;margin-bottom:1rem;font-size:clamp(2rem,5vw,3rem);font-weight:300}.heading-sub{font-family:var(--font-sans);letter-spacing:.15em;text-transform:uppercase;color:var(--color-gold);margin-bottom:.75rem;font-size:.8rem;font-weight:400}.body-text{font-family:var(--font-sans);color:var(--color-warm-brown);font-size:clamp(.9rem,2vw,1rem);font-weight:300;line-height:1.8}.gold-line{background:linear-gradient(90deg,#0000,#bbb,#0000);width:50px;height:1px;margin:1.5rem auto}.gold-dot{background-color:var(--color-gold);border-radius:50%;width:6px;height:6px;margin:0 auto}.btn-primary{background-color:var(--color-charcoal);color:var(--color-cream);font-family:var(--font-sans);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;border:none;justify-content:center;align-items:center;padding:.875rem 2.5rem;font-size:.85rem;font-weight:400;transition:all .4s cubic-bezier(.16,1,.3,1);display:inline-flex;position:relative;overflow:hidden}.btn-primary:hover{background-color:var(--color-gold-dark);transform:translateY(-1px);box-shadow:0 4px 20px #c9a96e40}.btn-outline{color:var(--color-charcoal);font-family:var(--font-sans);letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--color-beige-dark);cursor:pointer;background-color:#0000;justify-content:center;align-items:center;padding:.75rem 2rem;font-size:.8rem;font-weight:400;transition:all .4s cubic-bezier(.16,1,.3,1);display:inline-flex}.btn-outline:hover{border-color:var(--color-gold);color:var(--color-gold-dark)}.form-input{background-color:var(--color-warm-white);border:1px solid var(--color-beige-dark);width:100%;font-family:var(--font-sans);color:var(--color-charcoal);outline:none;padding:.875rem 1rem;font-size:.9rem;transition:all .3s}.form-input:focus{border-color:var(--color-gold);box-shadow:0 0 0 3px #c9a96e1a}.form-input::placeholder{color:var(--color-beige-dark);font-weight:300}.form-label{font-family:var(--font-sans);letter-spacing:.08em;text-transform:uppercase;color:var(--color-warm-brown);margin-bottom:.5rem;font-size:.8rem;font-weight:400;display:block}.form-textarea{background-color:var(--color-warm-white);border:1px solid var(--color-beige-dark);width:100%;font-family:var(--font-sans);color:var(--color-charcoal);resize:vertical;outline:none;min-height:120px;padding:.875rem 1rem;font-size:.9rem;transition:all .3s}.form-textarea:focus{border-color:var(--color-gold);box-shadow:0 0 0 3px #c9a96e1a}.card{background-color:var(--color-warm-white);border:1px solid var(--color-beige);padding:2rem;transition:all .4s cubic-bezier(.16,1,.3,1)}.card:hover{border-color:var(--color-gold-light);transform:translateY(-2px);box-shadow:0 8px 30px #0000000a}.section-divider{width:100%;max-width:var(--content-max-width);background:linear-gradient(90deg,transparent,var(--color-beige-dark),transparent);height:1px;margin:0 auto}@media (max-width:768px){.section{padding:clamp(3rem,8vh,5rem) 20pt}.main-nav-links{display:flex!important}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:focus-visible{outline:2px solid var(--color-gold);outline-offset:3px}:focus:not(:focus-visible){outline:none}a,button,[role=button]{touch-action:manipulation}.home-hero{background:#fff;align-items:end;min-height:auto;padding:7.5rem 1.5rem 3rem;display:grid;position:relative;overflow:hidden}.home-hero-media{display:none}.home-hero-content{width:min(100%,980px);color:var(--color-charcoal);margin:0 auto;position:relative}.home-hero-content h1{font-family:var(--font-brush);letter-spacing:0;margin:0 0 1.5rem;font-size:clamp(3.5rem,12vw,8rem);font-weight:300;line-height:.95}.home-hero-content p:not(.home-kicker){max-width:620px;color:var(--color-warm-brown);font-size:clamp(1rem,2.1vw,1.25rem);line-height:1.8}.home-kicker{font-family:var(--font-sans);letter-spacing:.12em;text-transform:uppercase;color:var(--color-gold);margin-bottom:.85rem;font-size:.78rem;font-weight:400}.home-hero .home-kicker{color:var(--color-gold)}.home-hero-actions,.photo-upload-actions{flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:2rem;display:flex}.home-primary-action,.home-secondary-action{min-height:46px;font-family:var(--font-sans);cursor:pointer;border-radius:9999px;justify-content:center;align-items:center;gap:.55rem;padding:.78rem 1.15rem;font-size:.9rem;font-weight:400;line-height:1;text-decoration:none;transition:transform .2s,border-color .2s,background-color .2s;display:inline-flex}.home-primary-action{border:1px solid var(--color-charcoal);background:var(--color-charcoal);color:var(--color-cream)}.home-secondary-action{color:var(--color-charcoal);background:#ffffffd1;border:1px solid #3d3d3d2e}.home-hero .home-primary-action{border-color:var(--color-charcoal);background:var(--color-charcoal);color:var(--color-cream)}.home-hero .home-secondary-action{border-color:var(--color-beige-dark);color:var(--color-charcoal);background:#ffffffb3}.home-primary-action:hover,.home-secondary-action:hover{transform:translateY(-1px)}.home-section{width:min(100% - 2rem,1100px);margin:0 auto;padding:clamp(3.5rem,8vw,6rem) 0}.home-section-header{max-width:640px;margin-bottom:2rem}.home-section-header h2{font-family:var(--font-brush);letter-spacing:0;color:var(--color-charcoal);margin-bottom:.8rem;font-size:clamp(2.3rem,6vw,4rem);font-weight:300;line-height:1.08}.home-section-header p:not(.home-kicker){color:var(--color-warm-brown);line-height:1.8}.home-info-grid,.notice-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.home-info-card,.notice-card,.photo-upload-panel,.guest-photo-empty{border:1px solid var(--color-beige-dark);background:#faf7f2d6;border-radius:8px;box-shadow:0 12px 40px #3d3d3d0d}.home-info-card{flex-direction:column;justify-content:flex-end;align-items:flex-start;min-height:220px;padding:1.4rem;display:flex}.home-info-card-large{min-height:280px}.home-info-card svg,.notice-card svg{color:var(--color-gold-dark);margin-bottom:1.25rem}.home-info-card span{color:var(--color-warm-brown);letter-spacing:.08em;margin-bottom:.35rem;font-size:.8rem;font-weight:400}.home-info-card strong{font-family:var(--font-serif);color:var(--color-charcoal);font-size:clamp(1.35rem,3vw,2rem);font-weight:400;line-height:1.25}.home-info-card p,.timeline-item p,.notice-card p,.photo-upload-panel p,.guest-photo-empty p{color:var(--color-warm-brown);line-height:1.7}.home-info-summary{border:1px solid var(--color-beige-dark);background:#faf7f2d6;border-radius:8px;padding:clamp(1.2rem,3vw,1.75rem);box-shadow:0 12px 40px #3d3d3d0d}.home-info-summary-top{border-bottom:1px solid var(--color-beige);grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;padding-bottom:1.25rem;display:grid}.home-info-summary-item,.home-info-summary-location{grid-template-columns:28px 1fr;align-items:start;gap:.85rem;display:grid}.home-info-summary-location{padding-top:1.25rem}.home-info-summary svg{color:var(--color-gold-dark);margin-top:.15rem}.home-info-summary span{color:var(--color-warm-brown);letter-spacing:.08em;margin-bottom:.25rem;font-size:.78rem;font-weight:400;display:block}.home-info-summary strong{font-family:var(--font-serif);color:var(--color-charcoal);font-size:clamp(1.4rem,4vw,2.1rem);font-weight:400;line-height:1.2;display:block}.home-info-summary p{color:var(--color-warm-brown);margin:.2rem 0 0;line-height:1.55}.home-timeline{border-top:1px solid var(--color-beige-dark)}.timeline-item{border-bottom:1px solid var(--color-beige-dark);grid-template-columns:minmax(90px,150px) 1fr;gap:clamp(1rem,4vw,3rem);padding:1.35rem 0;display:grid}.timeline-item time{font-family:var(--font-serif);color:var(--color-gold-dark);font-size:clamp(1.5rem,4vw,2.6rem);line-height:1}.timeline-item h3,.notice-card h3,.photo-upload-panel h3{font-family:var(--font-serif);color:var(--color-charcoal);margin-bottom:.35rem;font-size:1.2rem;font-weight:400}.notice-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.notice-card{padding:1.25rem}.notice-place{gap:.35rem;display:grid}.notice-place p{margin:0}.notice-place strong{font-family:var(--font-serif);color:var(--color-charcoal);font-size:1.08rem;font-weight:400;line-height:1.45}.notice-map-block{margin-top:1rem}.home-info-map-block{width:100%;margin-top:.6rem}.home-info-map-block p{margin:0 0 .65rem}.home-info-map-action{border:1px solid var(--color-beige-dark);min-height:44px;color:var(--color-charcoal);font:inherit;cursor:pointer;background:#ffffffb3;border-radius:6px;justify-content:center;align-items:center;gap:.45rem;padding:.62rem 1rem;font-size:.88rem;font-weight:400;line-height:1;display:inline-flex}.home-info-map-action svg{margin:0}.home-info-map-action:hover{border-color:var(--color-gold);color:var(--color-gold-dark)}.notice-map-trigger{width:100%;min-height:44px;color:var(--color-gold-dark);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:.45rem;padding:.7rem 0;font-weight:400;line-height:1.5;display:flex}.notice-map-trigger svg{flex:none;margin:0}.notice-map-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;margin-top:.35rem;display:grid}.notice-map-options a{border:1px solid var(--color-beige-dark);min-height:40px;color:var(--color-charcoal);background:#ffffffb3;border-radius:6px;justify-content:center;align-items:center;font-size:.85rem;font-weight:400;text-decoration:none;display:inline-flex}.notice-map-options a:hover{border-color:var(--color-gold);color:var(--color-gold-dark)}.notice-note{border-top:1px solid var(--color-beige);margin-top:.9rem;padding-top:.9rem;font-weight:400}.guest-photo-section{padding-bottom:7rem}.home-page{background:#fff}.home-page .home-hero{background:#fff;padding-left:0;padding-right:0}.home-page,.home-page h1,.home-page h2,.home-page h3,.home-page h4,.home-page time,.home-page strong,.home-page .home-hero-content h1,.home-page .home-section-header h2,.home-page .timeline-item time,.home-page .photo-upload-panel h3{font-family:"PingFang HK","PingFang SC","Noto Sans SC",var(--font-sans);letter-spacing:0;font-weight:400}.home-page .home-hero-content{width:min(100% - 2rem,1100px);margin-left:auto;margin-right:auto}.home-page .home-hero-content h1{margin-bottom:.75rem;font-size:clamp(2rem,8vw,3rem);font-weight:400;line-height:1.1}.home-page .home-section-header h2{font-size:clamp(1.5rem,5vw,2rem);font-weight:400;line-height:1.2}.photo-upload-panel{justify-content:space-between;gap:1.5rem;padding:1.25rem;display:flex}.photo-upload-icon{background:var(--color-charcoal);width:48px;height:48px;color:var(--color-cream);border-radius:50%;place-items:center;margin-bottom:1rem;display:grid}.photo-upload-actions{justify-content:flex-end;margin-top:0}.photo-upload-actions input{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.photo-upload-status{color:var(--color-gold-dark);margin-top:1rem;font-weight:400}.guest-photo-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;margin-top:1.2rem;display:grid}.guest-photo-card{aspect-ratio:4/5;background:var(--color-beige);border-radius:8px;min-height:220px;position:relative;overflow:hidden}.guest-photo-card img,.guest-photo-card video{object-fit:cover;width:100%;height:100%;display:block}.guest-photo-card figcaption{color:#fff;background:#00000075;border-radius:999px;padding:.25rem .55rem;font-size:.75rem;position:absolute;bottom:.6rem;left:.6rem}.guest-photo-delete{color:#fff;cursor:pointer;background:#0000007a;border:1px solid #ffffff8c;border-radius:999px;place-items:center;width:34px;height:34px;display:grid;position:absolute;top:.55rem;right:.55rem}.guest-photo-delete:disabled{opacity:.55;cursor:wait}.guest-photo-empty{min-height:220px;color:var(--color-gold-dark);text-align:center;place-items:center;gap:.65rem;margin-top:1.2rem;display:grid}@media (max-width:900px){.home-info-grid,.notice-grid,.guest-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.home-hero{padding:6.5rem 20pt 2.5rem}.home-section{width:min(100% - 40pt,1100px)}.home-info-grid,.notice-grid,.timeline-item{grid-template-columns:1fr}.home-info-card,.home-info-card-large{min-height:180px}.home-info-summary-top{grid-template-columns:1fr}.photo-upload-panel{flex-direction:column}.photo-upload-actions{justify-content:flex-start}}.guide-page{--guide-safe-top:env(safe-area-inset-top,0px);color:#000;width:100%;min-height:100dvh;font-family:"PingFang HK","PingFang SC","Noto Sans SC",var(--font-sans);box-shadow:none;background:#fff;margin:0;line-height:1.55}.guide-hero{width:min(100%,640px);height:calc(clamp(520px,68dvh,720px) + env(safe-area-inset-top,0px));background:#d9e1dd;margin:0 auto;position:relative;overflow:hidden}.guide-hero-video{object-fit:cover;transform-origin:top;width:100%;height:100%;display:block;transform:scale(1.4)}.guide-content{width:min(100% - 64px,640px);margin:0 auto;padding:60px 0 150px}.guide-section{margin:0}.guide-section+.guide-section{margin-top:56px}.guide-section h1,.guide-section h2{color:#000;font:400 24px/1.25 "PingFang HK","PingFang SC","Noto Sans SC",var(--font-sans);letter-spacing:0;margin:0 0 25px}.guide-section-header{margin:0 0 28px}.guide-section-header h2{margin-bottom:12px}.guide-section-header p,.guide-paragraph,.guide-detail-list{color:#000;font-size:14px;line-height:1.45}.guide-detail-list{gap:14px;margin:0;display:grid}.guide-detail-list div{flex-wrap:wrap;align-items:baseline;display:flex}.guide-detail-list dt,.guide-detail-list dd{margin:0}.guide-detail-list span,.guide-muted{color:#999}.guide-muted{margin:9px 0 26px;font-size:14px;line-height:1.45}.guide-paragraph{margin:0}.guide-text-link{color:#000;min-height:28px;font:inherit;line-height:inherit;text-underline-offset:2px;cursor:pointer;background:0 0;border:0;border-radius:0;padding:0;text-decoration:underline}.guide-text-link:focus-visible{outline-offset:3px;outline:2px solid #2a3d208c}.guide-schedule{gap:14px;font-size:14px;display:grid}.guide-schedule-row{color:#000;grid-template-columns:60px 1fr;align-items:center;display:grid}.guide-schedule-row time{font:inherit}.guide-upload-input{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.guide-page .guest-photo-section{padding-bottom:0}.guide-page .photo-upload-status{color:#4f603f;margin:-10px 0 18px;font-size:13px;font-weight:400}.guide-page .guest-photo-empty{width:100%;min-height:220px;box-shadow:none;color:#999;text-align:center;background:#f2f2f280;border:0;border-radius:16px;place-items:center;gap:.65rem;margin:0;display:grid}.guide-page .guest-photo-empty svg{display:none}.guide-page .guest-photo-empty p{color:#999;font-size:14px}.guide-page .guest-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:0}.guide-page .guest-photo-card{border-radius:8px;min-height:0}.guide-floating-cta{left:50%;bottom:calc(max(18px,env(safe-area-inset-bottom)) + 6pt);z-index:1200;pointer-events:none;width:min(478px,100vw - 64px);position:fixed;transform:translate(-50%)}.guide-floating-upload{--guide-cta-corner-radius:16px;--guide-cta-corner-smoothing:60%;z-index:1;border-radius:var(--guide-cta-corner-radius);corner-shape:squircle;min-height:54px;-webkit-mask-box-image:url(/masks/corner-smoothing-1x.png) 49% fill/var(--guide-cta-corner-radius);mask-border:url(/masks/corner-smoothing-1x.png) 49% fill/var(--guide-cta-corner-radius);-webkit-mask-box-image:url(/masks/corner-smoothing-1x.png) 49% fill/var(--guide-cta-corner-radius);color:#fff;box-shadow:none;cursor:pointer;pointer-events:auto;background:#2a3d20;justify-content:center;align-items:center;gap:8px;font-size:16px;font-weight:400;line-height:1;text-decoration:none;transition:transform .2s,background-color .2s;display:flex;position:relative;overflow:hidden}.guide-floating-upload:hover{background:#24351c;transform:translateY(-1px)}.guide-floating-upload:active{background:#1d2b17;transform:translateY(0)}.guide-floating-upload-icon{flex:none;width:15px;height:18px;display:block}.guide-floating-upload[aria-disabled=true]{cursor:wait;background:#24351c}@media (min-resolution:2x){.guide-floating-upload{-webkit-mask-box-image-source:url(/masks/corner-smoothing-2x.png);mask-border-source:url(/masks/corner-smoothing-2x.png)}}@media (min-resolution:3x){.guide-floating-upload{-webkit-mask-box-image-source:url(/masks/corner-smoothing-3x.png);mask-border-source:url(/masks/corner-smoothing-3x.png)}}@media (max-width:420px){.guide-content{width:calc(100% - 40px)}.guide-hero{height:calc(min(573px,65.6dvh) + var(--guide-safe-top));min-height:420px}.guide-floating-cta{width:min(338px,100vw - 40px)}}@media (prefers-reduced-motion:reduce){.guide-hero-video{animation:none}.guide-floating-upload{transition:none}}.lightbox-overlay{-webkit-backdrop-filter:blur(12px);z-index:2000;background-color:#121212d9;justify-content:center;align-items:center;padding:1.5rem;animation:.3s cubic-bezier(.16,1,.3,1) forwards fadeIn;display:flex;position:fixed;inset:0}.lightbox-container{flex-direction:column;align-items:center;gap:1.5rem;width:100%;max-width:900px;animation:.3s cubic-bezier(.16,1,.3,1) forwards scaleIn;display:flex;position:relative}.lightbox-close{color:#fff;cursor:pointer;z-index:10;background:#ffffff14;border:1px solid #ffffff2e;border-radius:50%;place-items:center;width:40px;height:40px;transition:all .2s;display:grid;position:absolute;top:-3.5rem;right:0}.lightbox-close:hover{background:#fff3;transform:scale(1.05)}.lightbox-media-wrapper{background:#000;border-radius:12px;justify-content:center;align-items:center;width:100%;max-height:70vh;display:flex;position:relative;overflow:hidden;box-shadow:0 24px 60px #00000080}.lightbox-media-wrapper img,.lightbox-media-wrapper video{object-fit:contain;max-width:100%;max-height:70vh;display:block}.lightbox-meta{text-align:center;color:#fff;width:100%}.lightbox-meta time{font-family:var(--font-serif);color:var(--color-gold-light);letter-spacing:.05em;margin-bottom:.25rem;font-size:.95rem;display:block}.lightbox-meta p{font-family:var(--font-sans);color:#ffffffb3;margin-top:.1rem;font-size:.85rem}.lightbox-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem;display:flex}.lightbox-btn{min-height:44px;font-family:var(--font-sans);cursor:pointer;border:none;border-radius:9999px;justify-content:center;align-items:center;gap:.55rem;padding:.7rem 1.5rem;font-size:.88rem;font-weight:400;line-height:1;text-decoration:none;transition:all .2s;display:inline-flex}.lightbox-btn-download{color:#fff;background:#555}.lightbox-btn-download:hover{background:#333;transform:translateY(-1px)}.lightbox-btn-delete{color:#ff4b4b;background:#ff4b4b26;border:1px solid #ff4b4b4d}.lightbox-btn-delete:hover{background:#ff4b4b40;transform:translateY(-1px)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@media (max-width:640px){.lightbox-close{top:auto;bottom:-4.5rem;right:50%;transform:translate(50%)}.lightbox-close:hover{transform:translate(50%)scale(1.05)}.lightbox-container{gap:1rem}}
