:root{--bg-primary: #FAF9F5;--bg-secondary: #F2F0EB;--bg-card: #FFFFFF;--text-primary: #121212;--text-secondary: #646360;--text-muted: #66645E;--border-subtle: #E7E5DF;--border-strong: #121212;--accent: #121212;--font-sans: "PingFang SC", "PingFangSC-Medium", "苹方-简", "PingFang SC Medium", -apple-system, BlinkMacSystemFont, "Noto Sans SC", "Microsoft YaHei", sans-serif;--font-mono: "SF Mono", "Consolas", "Liberation Mono", Menlo, Courier, monospace;--space-xs: .5rem;--space-sm: .85rem;--space-md: 1.5rem;--space-lg: 2.75rem;--space-xl: clamp(2.5rem, 5vw, 4.5rem);--container-max: 1280px;--container-narrow: 840px;--transition-smooth: cubic-bezier(.16, 1, .3, 1);--duration-normal: .7s}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{background-color:var(--bg-primary);color:var(--text-primary);font-family:var(--font-sans);font-weight:400;font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth;text-rendering:optimizeLegibility}body{width:100%;min-height:100vh;overflow-x:hidden;background-color:var(--bg-primary);color:var(--text-primary);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.wedding-archive-root{width:100%;min-height:100vh;position:relative}h1,h2,h3,h4{font-weight:600;color:var(--text-primary);letter-spacing:.02em}img{display:block;max-width:100%;height:auto}a{color:inherit;text-decoration:none}button{background:none;border:none;font:inherit;cursor:pointer;color:inherit}.font-mono{font-family:var(--font-mono)}.uppercase{text-transform:uppercase}.container{width:100%;max-width:var(--container-max);margin-left:auto;margin-right:auto;padding-left:clamp(1.25rem,5vw,3.5rem);padding-right:clamp(1.25rem,5vw,3.5rem)}.container-narrow{max-width:var(--container-narrow)}.reveal-item{opacity:0;transform:translateY(22px);transition:opacity var(--duration-normal) var(--transition-smooth),transform var(--duration-normal) var(--transition-smooth);will-change:opacity,transform}.reveal-item.is-visible{opacity:1;transform:translateY(0)}.delay-1{transition-delay:.1s}.delay-2{transition-delay:.2s}.delay-3{transition-delay:.3s}.opening-section{position:relative;width:100%;height:100vh;height:100dvh;max-height:100dvh;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;background-color:var(--text-primary);color:#faf9f5}.opening-bg-media{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:1}.opening-bg-media img{width:100%;height:100%;object-fit:cover;object-position:center;filter:brightness(.82) contrast(1.05)}.opening-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#1212126b,#1212121f 35%,#12121261 65%,#121212d9);z-index:2;pointer-events:none}.opening-content{position:relative;z-index:3;width:100%;height:100%;display:flex;flex-direction:column;justify-content:flex-end;padding-left:clamp(1.25rem,5vw,3.5rem);padding-right:clamp(1.25rem,5vw,3.5rem);padding-top:0;padding-bottom:0;max-width:var(--container-max);margin:0 auto;box-sizing:border-box}.opening-body-bottom{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;width:100%;gap:clamp(.5rem,1.2vh,.8rem);padding-bottom:clamp(1rem,2.5vw,1.75rem)}@supports (padding-bottom: env(safe-area-inset-bottom)){.opening-body-bottom{padding-bottom:calc(clamp(1rem,2.5vw,1.75rem) + env(safe-area-inset-bottom))}}.opening-title{font-size:clamp(1.35rem,4.2vw,2.15rem);font-weight:400;letter-spacing:.16em;line-height:1.25;text-shadow:0 2px 14px rgba(0,0,0,.55);white-space:nowrap;color:#faf9f5}.opening-date{font-family:var(--font-mono);font-size:clamp(.78rem,1.8vw,.95rem);font-weight:400;letter-spacing:.22em;color:#faf9f5e0;text-shadow:0 1px 12px rgba(0,0,0,.65);margin-top:-.1rem}.opening-scroll-arrow-btn{position:relative;z-index:10;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;color:#ffffffeb;background:#00000052;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.35);border-radius:50%;cursor:pointer;animation:gentleBounceFlow 2.2s ease-in-out infinite;transition:all .25s ease}.opening-scroll-arrow-btn:after{content:"";position:absolute;top:-10px;bottom:-10px;left:-10px;right:-10px}.opening-scroll-arrow-btn:hover{color:#fff;border-color:#ffffffd9;background:#00000080}@keyframes gentleBounceFlow{0%,to{transform:translateY(0);opacity:.75}50%{transform:translateY(6px);opacity:1}}.archive-section{padding-top:var(--space-lg);padding-bottom:var(--space-xl);background-color:var(--bg-primary)}.archive-header{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:1px solid var(--border-subtle);padding-bottom:.85rem;margin-bottom:clamp(1.5rem,3.5vw,2.75rem)}.archive-section-title{font-size:.75rem;letter-spacing:.28em;color:var(--text-muted)}.archive-count{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.15em;color:var(--text-secondary)}.archive-gallery{display:flex;flex-direction:column;gap:clamp(2.5rem,5vw,4.5rem)}.photo-frame{position:relative;display:flex;flex-direction:column}.frame-media{position:relative;width:100%;overflow:hidden;background-color:var(--bg-secondary);border-radius:3px}.frame-media img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--transition-smooth)}@media(hover:hover){.photo-frame:hover .frame-media img{transform:scale(1.015)}}.frame-meta{display:flex;justify-content:flex-end;text-align:right;margin-top:.65rem;border-top:1px solid var(--border-subtle);padding-top:.55rem}.frame-caption{font-size:.8rem;color:var(--text-muted);letter-spacing:.04em;line-height:1.5;text-align:right;margin-left:auto}.layout-hero{max-width:960px;width:100%;margin-left:auto;margin-right:auto}.layout-hero .frame-media{max-height:72vh;display:flex;align-items:center;justify-content:center}.layout-hero .frame-media img{max-height:72vh;width:100%;height:100%;object-fit:cover}.layout-wide{width:100%;max-width:1200px;margin-left:auto;margin-right:auto}.layout-wide .frame-media{aspect-ratio:16 / 10;width:100%}@media(max-width:640px){.layout-wide .frame-media{aspect-ratio:4 / 3}}.layout-pair{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(.75rem,3vw,2.5rem);width:100%;max-width:1200px;margin-left:auto;margin-right:auto}.layout-pair .frame-media{aspect-ratio:2 / 3;width:100%}@media(max-width:640px){.layout-pair{gap:.75rem}.layout-pair .frame-meta{padding-top:.45rem;margin-top:.45rem}.layout-pair .frame-caption{font-size:.72rem;line-height:1.4;text-align:right}}.wedding-details-section{padding-top:var(--space-xl);padding-bottom:var(--space-xl);background-color:var(--bg-secondary)}.wedding-details-card{display:flex;flex-direction:column}.wedding-details-header{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:1px solid var(--border-subtle);padding-bottom:.85rem}.wedding-details-list{display:flex;flex-direction:column}.details-row{display:grid;grid-template-columns:100px 1fr;align-items:baseline;padding:clamp(.85rem,1.8vh,1.35rem) 0;border-bottom:1px solid var(--border-subtle);gap:.85rem}@media(max-width:540px){.details-row{grid-template-columns:80px 1fr;gap:.65rem}}.details-label{font-size:.82rem;letter-spacing:.14em;color:var(--text-muted);font-weight:500}.details-content{display:flex;flex-direction:column;gap:.25rem}.details-value-highlight{font-size:clamp(1.1rem,2.2vw,1.4rem);font-weight:600;color:var(--text-primary);letter-spacing:.02em}.details-sub{font-size:.85rem;color:var(--text-secondary);letter-spacing:.03em;font-weight:400}.details-address-text{font-size:clamp(.85rem,1.5vw,.95rem);font-weight:400;color:var(--text-secondary);line-height:1.6;letter-spacing:.03em}.details-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.85rem;margin-top:clamp(1.25rem,2.5vh,2rem)}.btn-map-primary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.95rem 2rem;background-color:var(--text-primary);color:#faf9f5;font-size:.86rem;letter-spacing:.1em;font-weight:500;border-radius:4px;transition:all .25s ease}.btn-map-primary:hover{background-color:#2b2b2b;transform:translateY(-1px)}.btn-copy-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.95rem 1.8rem;border:1px solid var(--border-strong);background-color:transparent;color:var(--text-primary);font-size:.84rem;letter-spacing:.08em;font-weight:500;border-radius:4px;transition:all .25s ease}.btn-copy-secondary:hover{background-color:#0000000d}@media(max-width:640px){.details-actions{flex-direction:column;width:100%;gap:.65rem}.btn-map-primary,.btn-copy-secondary{width:100%;padding:.95rem 1rem;box-sizing:border-box}}.closing-section{padding-top:var(--space-xl);padding-bottom:clamp(3rem,7vh,5rem);background-color:var(--bg-primary);border-top:1px solid var(--border-subtle);text-align:center}.closing-statement{font-size:clamp(2.2rem,7vw,5.5rem);font-weight:600;letter-spacing:-.02em;line-height:1.08;color:var(--text-primary);margin-bottom:clamp(1rem,2vh,1.8rem)}.closing-subtitle{font-size:clamp(.95rem,2vw,1.18rem);color:var(--text-secondary);letter-spacing:.06em;max-width:44ch;line-height:1.7;margin:0 auto clamp(1.5rem,3vh,2.5rem) auto}.closing-couple-box{display:flex;flex-direction:column;align-items:center;gap:.35rem;margin-bottom:1.75rem}.closing-couple-names{font-size:clamp(1.15rem,2.5vw,1.5rem);font-weight:600;letter-spacing:.08em;color:var(--text-primary)}.closing-date{font-size:.78rem;letter-spacing:.18em;color:var(--text-muted)}.closing-back-to-top-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.75rem 1.75rem;font-size:.84rem;font-weight:500;letter-spacing:.1em;color:var(--text-primary);background:transparent;border:1px solid var(--border-strong);border-radius:9999px;cursor:pointer;transition:all .25s ease}.closing-back-to-top-btn:hover{background-color:var(--text-primary);color:#faf9f5}.music-toggle-btn{position:fixed;top:clamp(1rem,2.5vw,1.75rem);right:clamp(1rem,2.5vw,1.75rem);z-index:100;display:inline-flex;align-items:center;gap:.5rem;padding:.55rem .95rem;border-radius:9999px;background:#faf9f5e0;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(18,18,18,.18);color:var(--text-primary);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;font-family:var(--font-mono);font-weight:500;cursor:pointer;transition:all .25s ease;box-shadow:0 4px 16px #0000000f}.music-toggle-btn:after{content:"";position:absolute;top:-12px;bottom:-12px;left:-12px;right:-12px}@supports (top: env(safe-area-inset-top)){.music-toggle-btn{top:calc(clamp(1rem,2.5vw,1.75rem) + env(safe-area-inset-top));right:calc(clamp(1rem,2.5vw,1.75rem) + env(safe-area-inset-right))}}.music-toggle-btn:hover{background:#faf9f5f5;border-color:#12121266;transform:translateY(-1px)}.music-bars{display:inline-flex;align-items:flex-end;gap:2.5px;height:12px;width:12px}.music-bar{width:2px;height:100%;background-color:var(--text-primary);border-radius:1px;transform-origin:bottom;transition:transform .2s ease}.music-toggle-btn.is-playing .music-bar:nth-child(1){animation:soundWave .8s ease-in-out infinite alternate}.music-toggle-btn.is-playing .music-bar:nth-child(2){animation:soundWave 1.1s ease-in-out infinite alternate .2s}.music-toggle-btn.is-playing .music-bar:nth-child(3){animation:soundWave .9s ease-in-out infinite alternate .4s}.music-toggle-btn:not(.is-playing) .music-bar{transform:scaleY(.25);opacity:.4}@keyframes soundWave{0%{transform:scaleY(.25)}50%{transform:scaleY(1)}to{transform:scaleY(.4)}}@media(max-width:480px){.music-toggle-btn{padding:.45rem .7rem;font-size:.62rem;gap:.4rem}}
