@import url('https://fonts.googleapis.com/css2?family=Amatic+SC:wght@400;700&family=Cormorant+Garamond:wght@300;400;500;600;700&display=swap');:root{--color-primary:#4a5d3a;--color-secondary:#8b7355;--color-accent:#6b5b73;--color-text-dark:#2c3e20;--color-text-light:#5a5a5a;--color-background:#fefefe;--color-white:#fff;--font-heading:'Amatic SC',cursive;--font-body:'Cormorant Garamond',serif;--spacing-xs:.5rem;--spacing-sm:1rem;--spacing-md:2rem;--spacing-lg:3rem;--spacing-xl:4rem;--spacing-xxl:6rem;--mobile-max:767px;--tablet-max:1024px;--desktop-min:1025px;--header-height:80px;--mobile-header-height:60px}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;font-size:16px;overflow-x:hidden}body{font-family:var(--font-body);font-size:16px;line-height:1.6;color:var(--color-text-light);background-color:var(--color-background);overflow-x:hidden;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{max-width:100%;height:auto;display:block}body.menu-open{overflow:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:700;color:var(--color-text-dark);margin-bottom:var(--spacing-sm);line-height:1.2}h1{font-size:3.5rem;letter-spacing:.05em}h2{font-size:2.8rem;letter-spacing:.05em;margin-bottom:var(--spacing-md)}h3{font-size:2.2rem;margin-bottom:var(--spacing-sm)}h4{font-size:1.8rem;font-weight:600}p{margin-bottom:var(--spacing-md);font-size:1.1rem}p strong{font-weight:600}.small-text{font-size:.9rem}.large-text{font-size:1.3rem}.text-primary{color:var(--color-primary)}.text-secondary{color:var(--color-secondary)}a{color:var(--color-primary);text-decoration:underline;transition:color .3s ease,transform .3s ease}a:hover{color:var(--color-secondary)}.btn{display:inline-block;padding:.8rem 2rem;font-family:var(--font-heading);font-size:1.5rem;font-weight:700;text-align:center;text-decoration:none;cursor:pointer;border:2px solid;border-radius:5px;transition:all .3s ease}.btn-primary{background-color:var(--color-primary);color:var(--color-white);border-color:var(--color-primary)}.btn-primary:hover{background-color:transparent;color:var(--color-primary)}.btn-secondary{background-color:transparent;color:var(--color-primary);border-color:var(--color-primary)}.btn-secondary:hover{background-color:var(--color-primary);color:var(--color-white)}.main-navigation{position:fixed;top:0;left:0;width:100%;height:var(--header-height);background-color:rgba(255,255,255,.95);box-shadow:0 2px 10px rgba(0,0,0,.1);z-index:1000;transition:all .3s ease}.main-navigation .container{display:flex;justify-content:center;align-items:center;height:100%}.nav-menu{display:flex;justify-content:center;align-items:center;gap:var(--spacing-md);width:100%}.nav-link{font-family:var(--font-heading);font-size:1.5rem;font-weight:700;color:var(--color-primary);text-decoration:none;position:relative;padding:.5rem 0}.nav-link::after{content:'';position:absolute;bottom:0;left:0;width:0;height:2px;background-color:var(--color-primary);transition:width .3s ease}.nav-link:hover::after,.nav-link.active::after{width:100%}.mobile-menu-toggle{display:none;background:none;border:none;cursor:pointer;width:30px;height:25px;position:relative;z-index:1001}.mobile-menu-toggle span{display:block;width:100%;height:3px;background-color:var(--color-primary);position:absolute;left:0;transition:all .3s ease}.mobile-menu-toggle span:nth-child(1){top:0}.mobile-menu-toggle span:nth-child(2){top:50%;transform:translateY(-50%)}.mobile-menu-toggle span:nth-child(3){bottom:0}.mobile-menu-toggle.active span:nth-child(1){transform:translateY(11px) rotate(45deg)}.mobile-menu-toggle.active span:nth-child(2){opacity:0}.mobile-menu-toggle.active span:nth-child(3){transform:translateY(-11px) rotate(-45deg)}.mobile-menu{display:none;position:fixed;top:var(--header-height);left:0;width:100%;height:calc(100vh - var(--header-height));background-color:var(--color-white);padding:var(--spacing-lg) var(--spacing-md);flex-direction:column;align-items:center;justify-content:flex-start;gap:var(--spacing-lg);z-index:999;transform:translateX(100%);transition:transform .3s ease}.mobile-menu.open{transform:translateX(0)}.mobile-nav-link{font-family:var(--font-heading);font-size:2.2rem;font-weight:700;color:var(--color-primary);text-decoration:none;padding:var(--spacing-sm) 0}.text-center{text-align:center}.container{max-width:1200px;margin:0 auto;padding:0 var(--spacing-md)}.section{padding:var(--spacing-lg) 0;min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative}.section-content{width:100%;max-width:900px;margin:0 auto}.hero-section{background-color:var(--color-white);position:relative;color:var(--color-text-dark);text-align:center;padding-top:calc(var(--header-height) + var(--spacing-xxl));will-change:transform}.hero-section .container{position:relative}.hero-main-title{font-size:5rem;margin-bottom:var(--spacing-sm);color:var(--color-primary)}.hero-subtitle{font-size:3rem;margin-bottom:var(--spacing-lg);color:var(--color-text-dark)}.story-title{font-size:2.8rem;color:var(--color-text-dark);margin-bottom:var(--spacing-md)}.hero-story{max-width:800px;margin:0 auto var(--spacing-lg);background-color:rgba(255,255,255,.85);padding:var(--spacing-lg);border-radius:10px;color:var(--color-text-dark)}.hero-story p{margin-bottom:var(--spacing-md)}.cta-buttons{margin-top:var(--spacing-lg)}.rsvp-section{background-color:rgba(139,115,85,.05);position:relative;overflow:hidden}@media (min-width:769px){.rsvp-section{min-height:70vh;padding:var(--spacing-xl) 0}.registry-section{min-height:75vh;padding:var(--spacing-xl) 0}}.rsvp-form-container{position:relative;z-index:2;background-color:rgba(255,255,255,.9);padding:var(--spacing-lg);border-radius:10px;box-shadow:0 5px 15px rgba(0,0,0,.1);max-width:600px;margin:var(--spacing-lg) auto}.schedule-section{background-color:var(--color-white)}@media (min-width:769px){.schedule-composite{position:relative;display:block;max-width:1600px;margin:var(--spacing-lg) auto;padding:0 15%;overflow:visible}.schedule-image-background{position:relative;display:flex;justify-content:center;z-index:1}.schedule-image-background .schedule-events-image{width:120%;max-width:960px;height:auto;border-radius:8px;box-shadow:none;mix-blend-mode:multiply;opacity:.98;filter:contrast(1.1) brightness(1.05)}.schedule-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;pointer-events:none}.schedule-overlay .schedule-item{position:absolute;background:transparent;border:none;box-shadow:none;padding:var(--spacing-sm);max-width:300px;text-align:center;pointer-events:auto}.schedule-item-1{top:4%;left:-10%;max-width:280px}.schedule-item-2{top:16%;right:-14%;max-width:290px}.schedule-item-3{top:48%;left:-7%;max-width:270px}.schedule-item-4{top:62%;right:-11%;max-width:280px}.schedule-item-5{top:88%;left:4%;max-width:290px}.schedule-item-6{top:95%;right:12%;max-width:270px}.schedule-overlay .schedule-item h3{font-size:1.9rem;font-weight:700;margin-bottom:var(--spacing-xs);color:var(--color-primary)}.schedule-overlay .schedule-item h4{font-size:1.4rem;font-weight:600;margin-bottom:var(--spacing-xs);color:var(--color-text-dark)}.schedule-overlay .schedule-item p{font-size:1rem;font-weight:500;margin-bottom:var(--spacing-xs);line-height:1.4;color:var(--color-text-dark)}.schedule-content-mobile{display:none}}@media (max-width:768px){.schedule-composite{display:block}.schedule-image-background,.schedule-overlay{display:none}.schedule-content-mobile{display:block}.schedule-content-mobile .schedule-image{margin:var(--spacing-lg) 0;display:flex;justify-content:center}.schedule-items-mobile{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--spacing-lg);margin:var(--spacing-lg) 0}.schedule-content-mobile .schedule-item{flex:1;min-width:250px;background-color:var(--color-white);padding:var(--spacing-md);border-radius:10px;box-shadow:none;text-align:center;opacity:.98;border:1px solid rgba(0,0,0,.02)}}.schedule-content{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--spacing-lg);margin:var(--spacing-lg) 0}.schedule-item{flex:1;min-width:250px;background-color:var(--color-white);padding:var(--spacing-md);border-radius:10px;box-shadow:none;text-align:center;opacity:.98;border:1px solid rgba(0,0,0,.02)}.dress-code-section{margin-top:var(--spacing-xxl);padding-top:var(--spacing-xl);border-top:1px solid rgba(0,0,0,.1)}@media (min-width:769px){.dress-code-section{margin-top:11rem;padding-top:var(--spacing-xxl)}}.dress-code-icons{display:flex;justify-content:center;gap:var(--spacing-md);margin:var(--spacing-md) 0;flex-wrap:wrap}.dress-code-icon{width:80px;height:80px;border-radius:50%;object-fit:cover;box-shadow:0 3px 10px rgba(0,0,0,.1);transition:transform .3s ease}.dress-code-icon:hover{transform:scale(1.1)}.icon-placeholder{width:80px;height:80px;background-color:rgba(0,0,0,.1);border-radius:50%}.dress-code-details{max-width:700px;margin:0 auto}.accommodation-section{background-color:rgba(74,93,58,.05)}.accommodation-content{margin-bottom:var(--spacing-lg)}.accommodation-links{display:flex;flex-direction:column;gap:var(--spacing-md);margin-top:var(--spacing-lg)}@media (min-width:769px){.wedding-map-composite{position:relative;display:block;max-width:1200px;margin:var(--spacing-lg) auto;padding:0 10%;overflow:visible}.wedding-map-background{position:relative;display:flex;justify-content:center;z-index:1}.wedding-map-background .map-image{width:100%;max-width:780px;height:auto;border-radius:10px;box-shadow:0 5px 15px rgba(0,0,0,.1)}.wedding-map-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;pointer-events:none}.wedding-map-overlay .map-location{position:absolute;background:rgba(255,255,255,.9);border:2px solid var(--color-primary);border-radius:6px;padding:8px 12px;max-width:180px;text-align:center;pointer-events:auto;box-shadow:0 3px 10px rgba(0,0,0,.2)}.map-location-matamba{top:42%;right:25%}.map-location-berchtesgaden{top:25%;right:2%}.map-location-waterhoutkloof{top:50%;left:12%}.map-location-vaalwater{bottom:20%;right:2%}.wedding-map-overlay .map-location h3{font-size:1.1rem;font-weight:700;margin:0;color:var(--color-primary);line-height:1.2}.wedding-map-overlay .map-location a{color:var(--color-primary);text-decoration:none;font-weight:600}.wedding-map-overlay .map-location a:hover{text-decoration:underline;color:var(--color-secondary)}.wedding-map-mobile{display:none}}@media (max-width:768px){.wedding-map-composite{position:relative;display:block;max-width:100%;margin:var(--spacing-md) auto;padding:0;overflow:visible}.wedding-map-background{position:relative;display:flex;justify-content:center;z-index:1}.wedding-map-background .map-image{width:100%;max-width:100%;height:auto;border-radius:8px;box-shadow:0 3px 10px rgba(0,0,0,.1)}.wedding-map-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;pointer-events:none}.wedding-map-overlay .map-location{position:absolute;background:rgba(255,255,255,.95);border:1px solid var(--color-primary);border-radius:4px;padding:6px 10px;max-width:150px;text-align:center;pointer-events:auto;box-shadow:0 2px 8px rgba(0,0,0,.15)}.map-location-matamba{top:42%;right:18%}.map-location-berchtesgaden{top:5%;right:-10%}.map-location-waterhoutkloof{top:50%;left:2%}.map-location-vaalwater{bottom:15%;right:-8%}.wedding-map-overlay .map-location h3{font-size:.6rem;font-weight:700;margin:0;color:var(--color-primary);line-height:1.1}.wedding-map-overlay .map-location a{color:var(--color-primary);text-decoration:none;font-weight:600}.wedding-map-overlay .map-location a:hover{text-decoration:underline;color:var(--color-secondary)}.wedding-map-mobile{display:none}}.accommodation-map{width:100%;max-width:780px;margin:0 auto var(--spacing-md);border-radius:10px;overflow:hidden;box-shadow:0 5px 15px rgba(0,0,0,.1)}.accommodation-venues{display:flex;justify-content:center;gap:var(--spacing-xl);margin-bottom:var(--spacing-md);flex-wrap:wrap}.venue{text-align:center}.directions{text-align:center;margin-top:var(--spacing-md)}.registry-section{background-color:rgba(139,115,85,.05)}.banking-details{background-color:var(--color-white);padding:var(--spacing-md) var(--spacing-lg);border-radius:10px;box-shadow:0 5px 15px rgba(0,0,0,.05);max-width:700px;margin:var(--spacing-lg) auto 0;text-align:left}.banking-row{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-xs) 0;border-bottom:1px solid rgba(139,115,85,.1);position:relative}.banking-row:last-child{border-bottom:none}.banking-label{font-weight:600;color:var(--color-text-dark);font-family:var(--font-heading);font-size:1.2rem;flex:0 0 auto;margin-right:var(--spacing-sm)}.banking-value{color:var(--color-text-light);font-weight:500;font-size:1.1rem;flex:1;text-align:right}.banking-row.copyable-row{position:relative}.banking-row.copyable-row .banking-value{padding-right:3rem}.banking-value-container{display:flex;align-items:center;justify-content:flex-end;flex:1;position:relative}.account-number-row{position:relative}.copy-button{background:none;border:none;cursor:pointer;padding:.6rem;border-radius:6px;color:var(--color-secondary);opacity:0;transform:translateX(10px);transition:all .3s ease;display:inline-flex;align-items:center;justify-content:center;position:absolute;right:.5rem;top:50%;transform:translateY(-50%) translateX(10px)}.banking-row.copyable-row:hover .copy-button{opacity:1;transform:translateY(-50%) translateX(0)}.copy-button:hover{background-color:rgba(139,115,85,.1);color:var(--color-primary)}.copy-button:active{transform:scale(.95)}.copy-button.copied{color:#4caf50}.copy-button.copied::after{content:'Copied!';position:absolute;top:-30px;left:50%;transform:translateX(-50%);background-color:#4caf50;color:#fff;padding:.3rem .6rem;border-radius:4px;font-size:.8rem;white-space:nowrap;animation:fadeInOut 2s ease-in-out}@keyframes fadeInOut{0%,100%{opacity:0;transform:translateX(-50%) translateY(5px)}20%,80%{opacity:1;transform:translateX(-50%) translateY(0)}}.scroll-progress{position:fixed;top:0;left:0;width:100%;height:4px;background-color:var(--color-primary);transform-origin:left;transform:scaleX(0);transition:transform .3s ease;z-index:1001}.section{opacity:0;transform:translateY(30px);transition:opacity .6s ease,transform .6s ease;will-change:opacity,transform}.section.in-view{opacity:1;transform:translateY(0);will-change:auto}.hero-section{opacity:1;transform:none;will-change:auto}@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.section{opacity:1;transform:none}}.back-to-top{position:fixed;bottom:2rem;right:2rem;width:50px;height:50px;background-color:var(--color-primary);color:var(--color-white);border:none;border-radius:50%;cursor:pointer;font-size:1.5rem;display:none;align-items:center;justify-content:center;z-index:100;transition:all .3s ease;box-shadow:0 5px 15px rgba(0,0,0,.2)}.back-to-top:hover{background-color:var(--color-secondary);transform:translateY(-3px)}.back-to-top.visible{display:flex}.site-footer{background-color:var(--color-primary);color:var(--color-white);padding:var(--spacing-md) 0;text-align:center}.footer-content p{margin-bottom:0;font-family:var(--font-heading);font-size:1.2rem}@media (max-width:1024px){.container{max-width:90%}.nav-link{font-size:1.3rem}.nav-menu{gap:var(--spacing-sm)}.hero-main-title{font-size:4.5rem}.hero-subtitle{font-size:2.8rem}.story-title{font-size:2rem}.hero-story{max-width:90%}}@media (max-width:768px){:root{font-size:14px}.main-navigation{height:var(--mobile-header-height)}.nav-menu{display:none}.mobile-menu-toggle{display:block}.mobile-menu{display:flex;top:var(--mobile-header-height);height:calc(100vh - var(--mobile-header-height))}h1{font-size:2.5rem}h2{font-size:2rem}h3{font-size:1.8rem}.hero-main-title{font-size:3.5rem}.hero-subtitle{font-size:2.3rem}.story-title{font-size:1.8rem}.section{padding:var(--spacing-lg) 0;min-height:auto}.container{padding:0 var(--spacing-sm)}.hero-section{padding-top:calc(var(--mobile-header-height) + var(--spacing-lg))}.hero-story{padding:var(--spacing-md)}.schedule-item{flex:100%;margin-bottom:var(--spacing-md)}.accommodation-venues{gap:var(--spacing-md)}}@media (max-width:480px){h1{font-size:2rem}h2{font-size:1.5rem}.hero-main-title{font-size:2.8rem}.hero-subtitle{font-size:1.8rem}.story-title{font-size:1.5rem}.hero-story{padding:var(--spacing-sm)}.rsvp-form-container{padding:var(--spacing-sm)}.dress-code-icons{gap:var(--spacing-sm)}.icon-placeholder{width:60px;height:60px}}.hero-engagement-photo{margin:var(--spacing-lg) 0}.engagement-photo{width:100%;max-width:768px;height:auto;border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,.1);margin:0 auto}.hero-additional-photo{margin:var(--spacing-lg) 0}.couple-photo-additional{width:100%;max-width:991px;height:auto;border-radius:8px;box-shadow:none;margin:0 auto;mix-blend-mode:multiply;opacity:.98;filter:contrast(1.1) brightness(1.05)}.schedule-image{margin:var(--spacing-lg) 0;display:flex;justify-content:center}.schedule-events-image{width:100%;max-width:732px;height:auto;border-radius:8px;box-shadow:none;mix-blend-mode:multiply;opacity:.98;filter:contrast(1.1) brightness(1.05)}@media (max-width:768px){.engagement-photo,.couple-photo-additional{border-radius:4px;box-shadow:none}.schedule-events-image{max-width:100%;border-radius:4px;box-shadow:none}.hero-engagement-photo,.hero-additional-photo,.schedule-image{margin:var(--spacing-md) 0}}@media (max-width:480px){.hero-engagement-photo,.hero-additional-photo,.schedule-image{margin:var(--spacing-sm) 0}.engagement-photo,.couple-photo-additional,.schedule-events-image{border-radius:3px;box-shadow:none}}
