:root{--bg:#f5f2ec;--bg-warm:#eae6dc;--bg-green:#e8eedf;--text:#2d3328;--text-muted:#5e6b54;--accent:#6a9b50;--accent-light:#a3c78f;--accent-dark:#4a7a35;--warm:#c17f4a;--warm-light:#daa876;--berry:#b5577a;--sky:#5a9ebd;--divider:#c8cfc0;--stroke:#3d4a35;--stroke-light:#3d4a3526;--font-display:"Playfair Display",serif;--font-body:"Cormorant Garamond",serif;--font-mono:"DM Mono",monospace;--section-pad:clamp(4rem,10vw,8rem);--content-max:720px}*,:before,:after{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-body);color:var(--text);background:var(--bg);font-size:19px;font-weight:400;line-height:1.8;overflow-x:hidden}h1,h2,h3{font-family:var(--font-display);font-weight:400;line-height:1.2}h1{letter-spacing:.02em;font-size:clamp(2.5rem,8vw,5rem)}h2{letter-spacing:.03em;color:var(--text);margin-bottom:2rem;font-size:clamp(1.6rem,4vw,2.4rem)}p{max-width:60ch}a{color:var(--accent);border-bottom:1px solid var(--accent-light);text-decoration:none;transition:border-color .3s}a:hover{border-color:var(--accent)}.section{padding:var(--section-pad)1.5rem;text-align:center;flex-direction:column;align-items:center;display:flex;position:relative}.section-content{max-width:var(--content-max);width:100%}.divider-gold{background:var(--accent);opacity:.7;border-radius:1px;width:80px;height:2px;margin:0 auto}.divider-light{background:var(--divider);width:40px;height:1px;margin:0 auto}.amp{font-family:var(--font-body);color:var(--accent);font-style:italic;font-weight:300}.reveal{opacity:0;transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1);transform:translateY(24px)}.reveal.visible{opacity:1;transform:translateY(0)}.reveal-delay-1{transition-delay:.1s}.reveal-delay-2{transition-delay:.2s}.reveal-delay-3{transition-delay:.3s}.reveal-delay-4{transition-delay:.4s}.parallax-wrapper{position:relative}.doodle{pointer-events:none;z-index:0;opacity:.35;transition:opacity .6s;position:absolute}.doodle img{object-fit:contain;width:100%;height:100%}.doodle-path{stroke-dasharray:500;stroke-dashoffset:500px;transition:stroke-dashoffset 2s cubic-bezier(.16,1,.3,1)}.doodle-visible .doodle-path{stroke-dashoffset:0}.envelope-overlay{z-index:1000;background:var(--bg);justify-content:center;align-items:center;transition:opacity .8s,visibility .8s;display:flex;position:fixed;inset:0}.envelope-overlay.hidden{opacity:0;visibility:hidden;pointer-events:none}.envelope-card{aspect-ratio:105/148;perspective:1200px;cursor:pointer;width:min(380px,85vw)}.envelope-card-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform 1s cubic-bezier(.16,1,.3,1);position:relative}.envelope-card.flipped .envelope-card-inner{transform:rotateY(180deg)}.envelope-front,.envelope-back{backface-visibility:hidden;border:2px dashed var(--accent-light);background:var(--bg);border-radius:8px;flex-direction:column;justify-content:center;align-items:center;padding:2rem;display:flex;position:absolute;inset:0}.envelope-back{gap:0;padding:2.5rem 2rem;transform:rotateY(180deg)}.envelope-seal{border:2px solid var(--accent);width:80px;height:80px;font-family:var(--font-display);color:var(--accent);border-radius:50%;justify-content:center;align-items:center;margin-bottom:1.5rem;font-size:1.5rem;display:flex;position:relative}.envelope-hint{color:var(--text-muted);margin-top:1rem;font-size:.85rem;font-style:italic;animation:2s ease-in-out infinite pulse-hint}@keyframes pulse-hint{0%,to{opacity:.5}50%{opacity:1}}.envelope-back .back-line{opacity:0;transition:opacity .6s,transform .6s;transform:translateY(12px)}.envelope-card.flipped .back-line{opacity:1;transform:translateY(0)}.envelope-card.flipped .back-line:first-child{transition-delay:.6s}.envelope-card.flipped .back-line:nth-child(2){transition-delay:.8s}.envelope-card.flipped .back-line:nth-child(3){transition-delay:1s}.envelope-card.flipped .back-line:nth-child(4){transition-delay:1.2s}.envelope-card.flipped .back-line:nth-child(5){transition-delay:1.4s}.envelope-card.flipped .back-line:nth-child(6){transition-delay:1.6s}.back-intro{color:var(--stroke);margin-bottom:.25rem;font-size:.95rem;line-height:1.6}.back-names{font-family:var(--font-display);color:var(--text);letter-spacing:.02em;margin-bottom:.75rem;font-size:clamp(1.8rem,6vw,2.2rem)}.back-when{font-family:var(--font-display);color:var(--text-muted);margin-bottom:.75rem;font-size:.9rem;font-style:italic;line-height:1.75}.back-body{color:var(--stroke);max-width:280px;font-size:.85rem;line-height:1.85}.envelope-skip{z-index:1001;font-family:var(--font-body);color:var(--text-muted);border:1px solid var(--divider);cursor:pointer;background:0 0;border-radius:20px;padding:.4rem 1.2rem;font-size:.85rem;transition:all .3s;position:fixed;bottom:2rem;right:2rem}.envelope-skip:hover{border-color:var(--accent);color:var(--accent)}.header{z-index:100;-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--stroke-light);background:#f5f2ecd9;padding:0 1.5rem;transition:transform .5s cubic-bezier(.16,1,.3,1);position:fixed;top:0;left:0;right:0;transform:translateY(-100%)}.header.visible{transform:translateY(0)}.header-inner{justify-content:space-between;align-items:center;max-width:900px;height:56px;margin:0 auto;display:flex}.header-brand{font-family:var(--font-display);color:var(--text);letter-spacing:.05em;font-size:1.1rem}.header-nav{align-items:center;gap:1.5rem;display:flex}.header-nav a{color:var(--text-muted);letter-spacing:.05em;text-transform:uppercase;border-bottom:none;font-size:.85rem;text-decoration:none;transition:color .3s}.header-nav a:hover{color:var(--accent)}.lang-toggle{background:var(--bg-warm);border:1px solid var(--divider);border-radius:20px;gap:0;padding:3px;display:flex}.lang-btn{font-family:var(--font-body);color:var(--text-muted);cursor:pointer;letter-spacing:.05em;background:0 0;border:none;border-radius:16px;padding:.2rem .75rem;font-size:.8rem;transition:all .3s}.lang-btn.active{background:var(--accent);color:#fff}.hero{flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:6rem 1.5rem 4rem;display:flex;position:relative}.hero-names{font-family:var(--font-display);color:var(--text);letter-spacing:.02em;margin-bottom:1rem;font-size:clamp(3rem,10vw,6rem);font-weight:400;line-height:1.1}.hero-amp{font-family:var(--font-body);color:var(--accent);margin:0 .15em;font-size:.65em;font-style:italic;font-weight:300;display:inline-block}.hero-date{font-family:var(--font-display);color:var(--text-muted);letter-spacing:.05em;margin-bottom:2.5rem;font-size:clamp(1rem,2.5vw,1.3rem);font-style:italic}.hero-flip-card{aspect-ratio:3/4;perspective:1000px;cursor:pointer;width:min(320px,75vw);margin:0 auto}.hero-flip-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .8s cubic-bezier(.16,1,.3,1);position:relative}.hero-flip-card.flipped .hero-flip-inner{transform:rotateY(180deg)}.hero-flip-front,.hero-flip-back{backface-visibility:hidden;border-radius:6px;position:absolute;inset:0;overflow:hidden}.hero-flip-front .hero-photo-frame{width:100%;height:100%;position:relative}.hero-photo-frame img{object-fit:cover;border-radius:6px;width:100%;height:100%;display:block}.hero-flip-front:before{content:"";border:2px dashed var(--accent-light);pointer-events:none;z-index:1;border-radius:8px;position:absolute;inset:-8px}.hero-flip-back{background:var(--bg);border:2px dashed var(--accent-light);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:2rem;display:flex;transform:rotateY(180deg)}.flip-back-intro{color:var(--stroke);margin-bottom:.5rem;font-size:.9rem;line-height:1.6}.flip-back-names{font-family:var(--font-display);color:var(--text);letter-spacing:.02em;margin-bottom:.75rem;font-size:clamp(1.8rem,6vw,2.2rem)}.flip-back-when{font-family:var(--font-display);color:var(--text-muted);margin-bottom:.75rem;font-size:.85rem;font-style:italic;line-height:1.75}.flip-back-body{color:var(--stroke);max-width:280px;font-size:.85rem;line-height:1.85}.hero-scroll-hint{color:var(--text-muted);letter-spacing:.1em;text-transform:uppercase;margin-top:3rem;font-size:.8rem;animation:2s ease-in-out infinite float-down}@keyframes float-down{0%,to{opacity:.5;transform:translateY(0)}50%{opacity:1;transform:translateY(6px)}}.venue-details{flex-direction:column;align-items:center;gap:1.5rem;display:flex}.venue-details p{text-align:center;line-height:1.8}.venue-address{color:var(--text);font-size:1.1rem}.venue-note{color:var(--text-muted);font-size:.95rem;font-style:italic}.venue-map-link{border:1px solid var(--accent);color:var(--accent);border-bottom:1px solid var(--accent);border-radius:24px;align-items:center;gap:.5rem;padding:.6rem 1.5rem;font-size:.9rem;transition:all .3s;display:inline-flex}.venue-map-link:hover{background:var(--accent);color:#fff}.timeline{text-align:left;width:100%;max-width:480px;padding-left:2rem;position:relative}.timeline:before{content:"";background:var(--accent-light);width:2px;position:absolute;top:0;bottom:0;left:0}.timeline-item{padding:0 0 2.5rem 1.5rem;position:relative}.timeline-item:last-child{padding-bottom:0}.timeline-item:before{content:"";background:var(--bg);border:2px solid var(--accent);border-radius:50%;width:10px;height:10px;margin-left:-4px;position:absolute;top:.5rem;left:-2rem}.timeline-time{font-family:var(--font-display);color:var(--accent);margin-bottom:.25rem;font-size:.9rem;font-style:italic}.timeline-label{color:var(--text);font-size:1.05rem}.timeline-desc{color:var(--text-muted);margin-top:.15rem;font-size:.85rem}.carousel-section{overflow:hidden}.carousel-container{width:100%;max-width:600px;margin:0 auto;position:relative}.carousel-viewport{aspect-ratio:4/3;background:var(--bg-warm);border-radius:3px;position:relative;overflow:hidden}.carousel-track{height:100%;transition:transform .7s cubic-bezier(.16,1,.3,1);display:flex}.carousel-slide{min-width:100%;height:100%;position:relative}.carousel-slide img{object-fit:cover;width:100%;height:100%;display:block}.carousel-viewport:before{content:"";border:2px dashed var(--accent-light);pointer-events:none;z-index:2;border-radius:6px;position:absolute;inset:-6px}.carousel-controls{justify-content:center;align-items:center;gap:1.5rem;margin-top:1.5rem;display:flex}.carousel-btn{border:1px solid var(--divider);background:var(--bg);width:40px;height:40px;color:var(--text-muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;font-size:1.2rem;transition:all .3s;display:flex}.carousel-btn:hover{border-color:var(--accent);color:var(--accent)}.carousel-dots{gap:.5rem;display:flex}.carousel-dot{border:1px solid var(--accent-light);cursor:pointer;background:0 0;border-radius:50%;width:8px;height:8px;padding:0;transition:all .3s}.carousel-dot.active{background:var(--accent);border-color:var(--accent)}.info-card{background:var(--bg);border:1px solid var(--divider);text-align:left;border-radius:8px;padding:1.5rem}.info-card strong{font-family:var(--font-display);color:var(--accent-dark);margin-bottom:.5rem;font-size:1rem;display:block}.info-card p{max-width:none;font-size:.95rem;line-height:1.7}.funfacts-grid{grid-template-columns:1fr 1fr;gap:1.25rem;max-width:560px;margin:0 auto;display:grid}.funfact-card{background:var(--bg);border:1px solid var(--divider);text-align:center;border-radius:10px;padding:1.5rem 1.25rem}.funfact-number{font-family:var(--font-display);color:var(--accent);margin-bottom:.5rem;font-size:clamp(1.8rem,5vw,2.4rem);line-height:1.1}.funfact-label{color:var(--text-muted);font-size:.85rem;line-height:1.5}.rsvp-card{background:var(--bg-green);border:1px dashed var(--accent-light);border-radius:8px;width:100%;max-width:500px;padding:2.5rem 2rem}.rsvp-card p{text-align:center;margin:0 auto}.rsvp-contact{color:var(--text);font-size:1rem;margin-top:1rem!important}.footer{text-align:center;color:var(--text-muted);padding:3rem 1.5rem;font-size:.85rem;position:relative}.footer-names{font-family:var(--font-display);color:var(--text);margin-bottom:.5rem;font-size:1rem}.footer-doodle{opacity:.3;width:40px;height:40px;margin:1rem auto 0}.section-label{font-family:var(--font-mono);letter-spacing:.3em;text-transform:uppercase;color:var(--accent);opacity:.7;margin-bottom:.8rem;font-size:.6rem}.tag-row{flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:.5rem;display:flex}.tag{font-family:var(--font-mono);letter-spacing:.08em;border:1px solid var(--stroke-light);color:var(--text-muted);cursor:default;background:0 0;padding:.35rem .9rem;font-size:.62rem;transition:all .25s}.tag:hover{border-color:var(--accent);color:var(--accent)}.stats-section{background:var(--bg-warm);text-align:left}.stats-inner{z-index:1;grid-template-columns:1fr 1fr;align-items:start;gap:3.5rem;max-width:960px;margin:0 auto;display:grid;position:relative}.stats-heading{font-family:var(--font-display);margin-bottom:.5rem;font-size:clamp(1.6rem,4vw,2.4rem)}.stats-heading strong{letter-spacing:.05em;font-weight:700}.stats-comment{font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.1em;max-width:none;margin-bottom:0;font-size:.55rem}.stats-footnote{font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.05em;max-width:none;margin-top:1rem;font-size:.52rem}.prog-list{margin-top:2rem}.prog-row{margin-bottom:1.6rem}.prog-meta{font-family:var(--font-mono);color:var(--text-muted);letter-spacing:.04em;justify-content:space-between;gap:1rem;margin-bottom:.4rem;font-size:.56rem;display:flex}.prog-meta .pv{color:var(--accent);white-space:nowrap}.prog-track{background:var(--stroke-light);height:2px;position:relative;overflow:hidden}.prog-fill{background:var(--accent);height:100%;animation:2s .5s both fillProg;box-shadow:0 0 6px #6a9b5066}@keyframes fillProg{0%{width:0!important}}.term-win{font-family:var(--font-mono);background:#2d33280d;border:1px solid #6a9b5033;border-radius:4px;overflow:hidden;box-shadow:0 4px 24px #2d33280f}.tw-bar{background:#6a9b5014;border-bottom:1px solid #6a9b5026;align-items:center;gap:.4rem;padding:.5rem .9rem;display:flex}.td{border-radius:50%;width:8px;height:8px}.td.r{opacity:.8;background:#ff5f57}.td.y{opacity:.8;background:#ffbd2e}.td.g{opacity:.8;background:#28ca41}.tw-title{color:var(--accent);opacity:.5;letter-spacing:.15em;margin-left:auto;font-size:.52rem}.tw-body{color:var(--text-muted);padding:1.4rem 1.5rem;font-size:.68rem;line-height:2}.tw-body p{max-width:none}.tp{color:var(--accent-dark)}.to{color:#2d332873}.tc{color:#2d33284d;font-style:italic}.ta{color:var(--warm)}.tg{color:var(--accent)}.term-input{font-family:var(--font-mono);font-size:inherit;color:var(--text);line-height:inherit;caret-color:#0000;background:0 0;border:none;outline:none;min-width:1ch;padding:0}.tcur:after{content:"▌";color:var(--accent);animation:1s step-end infinite blink}@keyframes blink{50%{opacity:0}}.cats-grid{grid-template-columns:1fr 1fr;gap:1.5rem;margin-top:2rem;display:grid}.cat-cell{background:var(--bg);border:1px solid var(--divider);text-align:left;border-radius:8px;padding:2rem;transition:background .3s}.cat-cell:hover{background:var(--bg-green)}.cat-em{margin-bottom:1rem;font-size:1.8rem;display:block}.cat-name{font-family:var(--font-display);color:var(--text);margin-bottom:.2rem;font-size:1.8rem;font-style:italic;font-weight:400}.cat-role{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--accent);opacity:.8;margin-bottom:1rem;font-size:.55rem}.cat-bio{color:var(--text-muted);font-size:.95rem;line-height:1.8}.cat-term{font-family:var(--font-mono);color:var(--text-muted);background:#6a9b500f;border:1px solid #6a9b5026;border-radius:3px;margin-top:1.2rem;padding:.8rem 1rem;font-size:.58rem;line-height:1.85}.cat-term .k{color:var(--accent)}body:before{content:"";pointer-events:none;z-index:9999;opacity:.025;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:256px 256px;position:fixed;inset:0}@media (max-width:768px){.header-nav a{display:none}.doodle{opacity:.2}.timeline{padding-left:1.5rem}.timeline-item{padding-left:1rem}.carousel-viewport{aspect-ratio:3/2}.funfacts-grid{grid-template-columns:1fr;max-width:320px}.stats-inner{grid-template-columns:1fr;gap:2.5rem}.cats-grid{grid-template-columns:1fr}.prog-meta{flex-direction:column;gap:.2rem}}@media (max-width:480px){body{font-size:16px}.section{padding:clamp(3rem,8vw,4rem) 1rem}.hero{padding:4rem 1rem 3rem}.envelope-card{width:88vw}.rsvp-card{padding:2rem 1.5rem}}
