*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:Montserrat,Raleway,sans-serif;font-weight:300;color:#3d3d3d;background:#f5f1ed;overflow:hidden;line-height:1.6}#root{height:100vh;overflow:hidden}h1,h2,h3{font-family:Playfair Display,Cormorant Garamond,serif;font-weight:400}.cursive{font-family:Great Vibes,Parisienne,cursive;font-weight:400}.section-title{font-size:clamp(38px,4vw,48px);color:#5c4a3d;margin-bottom:16px;letter-spacing:.5px}.section-subtitle{font-size:clamp(40px,3vw,36px);color:#6b7b5f;margin-bottom:32px}.fullpage-container{height:100dvh;overflow:hidden;scroll-snap-type:y mandatory;position:relative}.section{height:100dvh;width:100%;overflow:hidden;scroll-snap-align:start;display:flex;align-items:center;justify-content:center;position:relative;padding:40px 20px}.section-content{max-width:800px;width:100%;text-align:center;padding:20px}body.scroll-mode{overflow:auto}body.scroll-mode #root{height:auto;overflow:visible}body.scroll-mode .fullpage-container{height:auto;overflow:visible;scroll-snap-type:none}body.scroll-mode .section{height:auto;min-height:100vh;scroll-snap-align:none}.nav-dots{position:fixed;right:24px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:12px;z-index:100}.nav-dot{width:10px;height:10px;border-radius:50%;border:2px solid #8B9D83;background:transparent;cursor:pointer;transition:all .3s ease;padding:0}.nav-dot.active{background:#8b9d83;transform:scale(1.3)}.nav-dot:hover{background:#8b9d83;opacity:.7}.hero-section{background:linear-gradient(135deg,#666740,#757f5c,#666740)}.hero-content{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;padding:0 20px}.hero-image-wrapper{width:100%;max-width:400px;border-radius:16px;overflow:hidden;box-shadow:0 8px 32px #5c4a3d1f;margin:0 auto}.hero-image{display:block;width:100%;height:auto;aspect-ratio:3 / 4;object-fit:cover;transition:transform .3s ease}.hero-image:hover{transform:scale(1.02)}.hero-title{font-size:clamp(30px,6vw,72px);color:#e8dfd8;letter-spacing:2px}.hero-subtitle{font-size:clamp(35px,3.5vw,42px);color:#d4c9b8;margin-top:24px;text-align:center}.hero-divider{display:flex;align-items:center;justify-content:center;gap:16px;margin:24px 0}.divider-line{width:80px;height:1px;background:#d4c9b8}.divider-star{color:#d4c9b8;font-size:14px}.hero-date{font-size:clamp(18px,2vw,24px);color:#e8dfd8;letter-spacing:1px}.decorative-star{position:absolute;color:#d4c9b8;opacity:.3;font-size:24px}.top-left{top:6%;left:6%}.top-right{top:6%;right:6%}.bottom-left{bottom:6%;left:6%}.bottom-right{bottom:6%;right:6%}.date-section{background:#fff}.date-section__inner{width:800px;padding:0 32px;text-align:center}.date-time{font-size:30px;color:#6b7b5f;margin-top:32px}.calendar{width:100%;margin:0 auto}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:16px}.calendar-weekday{font-family:Montserrat,sans-serif;font-size:32px;font-weight:500;color:#8b9d83;text-transform:uppercase;letter-spacing:1.5px;padding:8px 0}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:0;row-gap:14px}.calendar-day{display:flex;align-items:center;justify-content:center;position:relative;font-family:Montserrat,sans-serif;font-size:45px;font-weight:400;color:#3d3d3d;min-height:48px;cursor:default}.calendar-day--blank{visibility:hidden}.calendar-day--selected .calendar-day__number{position:relative;z-index:1;font-weight:600;color:#f5f1ed}.calendar-day__heart{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-12deg);width:95px;height:86px;z-index:0;pointer-events:none}.calendar-heart-svg{display:block;width:100%;height:100%}.schedule-section{background:#f5f1ed}.timeline{position:relative;max-width:500px;margin:0 auto;padding-left:32px}.timeline-line{position:absolute;left:12px;top:0;bottom:0;width:2px;background:#8b9d83;opacity:.4}.timeline-item{position:relative;margin-bottom:20px;display:flex;align-items:flex-start}.timeline-dot{position:absolute;left:-24px;top:6px;width:12px;height:12px;border-radius:50%;background:#6b7b5f;border:2px solid #F5F1ED;z-index:1}.timeline-content{background:#fff;padding:14px 20px;border-radius:10px;box-shadow:0 4px 12px #5c4a3d0f;width:100%;display:flex;gap:16px;align-items:baseline}.timeline-time{font-weight:600;color:#6b7b5f;white-space:nowrap}.timeline-event{font-family:Montserrat,Raleway,sans-serif;font-weight:300;font-size:15px;color:#3d3d3d;width:80%}.timeline-header{font-size:20px;color:#5c4a3d;place-items:center;width:100%}.time-container{font-family:Playfair Display,Cormorant Garamond,serif;font-weight:600;font-size:24px;display:grid;grid-template-columns:auto 1fr;align-items:start;gap:16px;width:100%}.left{align-self:center}.timeline-right{display:flex;flex-direction:column;align-items:center;text-align:center}.center{grid-column:2;justify-self:center}.location-section{background:#fff}.location-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:24px}.photo-frame{border:2px solid #E8DFD8;border-radius:12px;overflow:hidden;box-shadow:0 8px 24px #5c4a3d0f}.photo-placeholder{min-height:200px;height:100%;display:flex;flex-direction:column;justify-content:center;background:#f5f1ed;color:#8b9d83;font-style:italic;gap:8px}.location-image{width:100%;height:100%;object-fit:cover;display:block}.placeholder-icon{font-size:36px}.map-wrapper{border-radius:12px;overflow:hidden;box-shadow:0 8px 24px #5c4a3d0f}.map-wrapper iframe{display:block}.location-address{font-size:16px;color:#5c4a3d;text-align:center}.dresscode-section{background:#f5f1ed}.color-palette{display:flex;justify-content:center;gap:32px;margin-bottom:32px;flex-wrap:wrap}.dresscode-item{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:14px;color:#5c4a3d}.dresscode-image{width:100%;height:100%;object-fit:cover;display:block}.color-swatch{width:48px;height:48px;border-radius:50%;border:2px solid #E8DFD8}.color-swatch.sage{background:#8b9d83}.color-swatch.beige{background:#e8dfd8}.color-swatch.blush{background:#d4a5a5}.color-swatch.cream{background:#f5f1ed}.gift-section{background:#fff}.gift-text{max-width:600px;margin:0 auto 32px;padding:40px}.gift-text p{font-size:clamp(14px,4vw,26px);line-height:1.8;color:#3d3d3d;margin-bottom:12px}.meeting-text .cursive{font-size:34px;color:#6b7b5f}.form-section{background:#f5f1ed}.dropdown-toggle{display:none}.dropdown-label{display:block;width:100%;padding:10px 40px 10px 14px;border:1px solid #E8DFD8;border-radius:8px;font-size:15px;font-family:Montserrat,sans-serif;background-color:#f5f1ed;color:#3d3d3d;cursor:pointer;transition:border-color .3s,background .3s;position:relative;-webkit-user-select:none;user-select:none}.dropdown-label:after{content:"";position:absolute;right:14px;top:50%;transform:translateY(-50%);width:16px;height:16px;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235C4A3D' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center;background-size:16px;transition:transform .3s}.dropdown-toggle:checked~.dropdown-label:after{transform:translateY(-50%) rotate(180deg)}.dropdown-label:hover{border-color:#8b9d83}.dropdown-toggle:checked~.dropdown-label{border-color:#8b9d83;background:#fff}.dropdown-content{display:none;left:0;right:0;background:#fff;border:1px solid #E8DFD8;border-top:none;border-radius:0 0 8px 8px;box-shadow:0 8px 24px #5c4a3d1f;z-index:10;overflow-y:auto}.dropdown-toggle:checked~.dropdown-content{display:block}.dropdown-content ul{list-style:none;margin:0;padding:8px 0}.dropdown-content li{display:flex;align-items:center;gap:10px;padding:8px 14px;cursor:pointer;transition:background .2s}.dropdown-content li:hover{background:#f5f1ed}.dropdown-content li input[type=checkbox]{width:16px;height:16px;accent-color:#6B7B5F;cursor:pointer;margin:0;flex-shrink:0}.dropdown-content li label{font-size:14px;color:#3d3d3d;cursor:pointer;margin:0;font-weight:400;flex:1}.selected-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.tag{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:#8b9d83;color:#fff;border-radius:16px;font-size:13px}.tag-remove{background:none;border:none;color:#fff;cursor:pointer;font-size:16px;padding:0;line-height:1}.form-description{font-size:16px;color:#5c4a3d;margin-bottom:32px}.guest-form{max-width:460px;margin:0 auto;background:#fff;padding:32px;border-radius:16px;box-shadow:0 8px 24px #5c4a3d0f}.form-group{margin-bottom:20px;text-align:left;position:relative}.form-group label{display:block;margin-bottom:6px;font-size:14px;font-weight:500;color:#5c4a3d}.form-group input,.form-group select{width:100%;padding:10px 14px;border:1px solid #E8DFD8;border-radius:8px;font-size:15px;font-family:Montserrat,sans-serif;background:#f5f1ed;transition:border-color .3s,background .3s;color:#3d3d3d}.form-group input:focus,.form-group select:focus{outline:none;border-color:#8b9d83;background:#fff}.form-error{color:#d4a5a5;font-size:14px;margin-bottom:16px;padding:10px;background:#fff5f5;border-radius:8px}.btn-submit{width:100%;padding:12px;background:#6b7b5f;color:#fff;border:none;border-radius:8px;font-size:16px;font-family:Montserrat,sans-serif;font-weight:500;cursor:pointer;transition:background .3s,transform .2s}.btn-submit:hover{background:#5a6a4f;transform:scale(1.02)}.btn-submit:active{transform:scale(.98)}.btn-submit:disabled{background:#999;cursor:not-allowed;transform:none}.footer{text-align:center;padding:12px 0;color:#8b9d83;font-size:14px;border-top:1px solid #E8DFD8}.footer .cursive{font-size:18px}@media (max-width: 768px){.location-grid{grid-template-columns:1fr}.nav-dots{right:12px}.nav-dot{width:8px;height:8px}.date-section__inner{padding:0 16px}.calendar-weekday{font-size:22px;letter-spacing:.5px;padding:6px 0}.calendar-day{font-size:30px;min-height:40px}.calendar-grid{row-gap:10px}.calendar-day__heart{width:64px;height:56px}.timeline-content{flex-direction:column;gap:4px}.gift-text .cursive{font-size:20px}}@media (max-width: 480px){.guest-form{padding:20px}}
