*{box-sizing:border-box;margin:0;padding:0}:root{--tan:#d4a89f;--peach:#e8d5c4;--gold:#c4a26a;--brown:#6b4e3d;--cream:#faf8f5;--white:#fff}body{font-family:var(--font-inter), "Inter", sans-serif;background:var(--cream);color:var(--brown);line-height:1.6;overflow-x:hidden}h1,h2,h3{font-family:var(--font-playfair), "Playfair Display", serif;font-weight:600}.hero{background:linear-gradient(to bottom, var(--cream) 0%, #fbf9f6 100%);text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex;position:relative;overflow:hidden}.hero:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(circle at 30% 40%,#c4a26a26 0%,#0000 60%),radial-gradient(circle at 70% 60%,#d4a89f1f 0%,#0000 60%);position:absolute;inset:0}.hero:after{content:"";pointer-events:none;z-index:0;border:1px solid #c4a26a33;border-radius:50%;width:600px;height:600px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.hero-photo{opacity:.35;filter:grayscale(.1);z-index:0;background-image:url(/hero-photo.jpg);background-position:57% 43%;background-repeat:no-repeat;background-size:cover;border-radius:50%;width:500px;height:500px;position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%);box-shadow:0 0 80px #c4a26a33}.hero-content{z-index:1;text-align:center;flex-direction:column;justify-content:center;align-items:center;width:min(600px,100% - 4rem);max-width:600px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,calc(2.25rem - 50%))}@media (max-width:768px){.hero-photo{width:350px;height:350px}}.hero h1{color:var(--brown);letter-spacing:.03em;text-align:center;width:100%;margin-bottom:1.2rem;font-size:clamp(2.85rem,8.5vw,5.25rem);font-weight:600;line-height:1.08}.hero-subtitle{color:var(--brown);opacity:.75;letter-spacing:.03em;margin-bottom:2rem;font-size:clamp(1.1rem,2.5vw,1.5rem);font-style:italic;font-weight:300}.hero-date{color:var(--gold);letter-spacing:.1em;text-transform:uppercase;text-shadow:0 2px 20px #c4a26a80;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff80;border:1px solid #c4a26a4d;border-radius:50px;align-self:center;width:fit-content;max-width:100%;margin:2.25rem 0 2.75rem;padding:.55rem calc(1rem + .1em) .55rem 1rem;font-size:.98rem;font-weight:600;box-shadow:0 8px 32px #c4a26a4d,0 0 60px #c4a26a26}.hero-cta{background:var(--brown);width:fit-content;color:var(--cream);letter-spacing:.05em;cursor:pointer;border:1px solid #ffffff1a;border-radius:50px;align-self:center;padding:.7rem 2rem;font-family:inherit;font-size:.9rem;font-weight:500;text-decoration:none;transition:all .4s;display:block;box-shadow:0 8px 30px #6b4e3d40}.hero-cta:hover{background:var(--gold);transform:translateY(-3px);box-shadow:0 12px 40px #6b4e3d59}.rsvp-section{justify-content:center;align-items:center;min-height:100vh;padding:4rem 2rem;display:flex}.rsvp-container{width:100%;max-width:600px}.rsvp-card{background:var(--white);border-radius:20px;padding:3rem;box-shadow:0 10px 60px #6b4e3d1a}.step-indicator{justify-content:center;gap:.5rem;margin-bottom:2rem;display:flex}.step-dot{background:var(--tan);opacity:.3;border-radius:50%;width:8px;height:8px;transition:all .3s}.step-dot.active{opacity:1;border-radius:4px;width:24px}.rsvp-card h2{color:var(--brown);margin-bottom:.5rem;font-size:2rem}.rsvp-card p{color:var(--brown);opacity:.7;margin-bottom:2rem}.choice-buttons{flex-direction:column;gap:1rem;display:flex}.choice-button{background:var(--cream);border:2px solid var(--tan);color:var(--brown);cursor:pointer;text-align:center;border-radius:12px;padding:1.5rem;font-size:1.1rem;font-weight:500;transition:all .3s}.choice-button:hover{background:var(--tan);color:var(--white);transform:translateY(-2px);box-shadow:0 4px 20px #d4a89f4d}.form-group{margin-bottom:1.5rem}.form-group label{color:var(--brown);margin-bottom:.5rem;font-weight:500;display:block}.form-group input,.form-group textarea,.form-group select{border:2px solid var(--tan);background:var(--cream);width:100%;color:var(--brown);border-radius:8px;padding:1rem;font-family:inherit;font-size:1rem;transition:all .3s}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{border-color:var(--gold);background:var(--white);outline:none}.form-group input.field-error,.form-group textarea.field-error,.guest-meal-block.field-error-block{background:#fff8f8;border-color:#b85c5c}.guest-meal-block.field-error-block{border:2px solid #b85c5c;border-radius:12px;padding:1rem}.validation-message{color:#b85c5c;margin-bottom:1rem;font-size:.95rem;display:none}.validation-message.visible{display:block}label .optional{opacity:.65;font-size:.9em;font-weight:400}.meal-options{flex-direction:column;gap:1rem;display:flex}.meal-option{background:var(--cream);border:2px solid var(--tan);cursor:pointer;border-radius:8px;align-items:center;gap:1rem;padding:1rem;transition:all .3s;display:flex}.meal-option:hover{background:var(--peach)}.meal-option input[type=radio]{width:20px;height:20px;accent-color:var(--gold)}.success-card{text-align:center}.success-icon{background:var(--gold);border-radius:50%;justify-content:center;align-items:center;width:80px;height:80px;margin:0 auto 2rem;font-size:3rem;display:flex}.success-card h2{margin-bottom:1rem;font-size:2.5rem}.nav-buttons{gap:1rem;margin-top:2rem;display:flex}.btn{cursor:pointer;border:none;border-radius:8px;flex:1;padding:1rem 2rem;font-size:1rem;font-weight:500;transition:all .3s}.btn-primary{background:var(--brown);color:var(--cream)}.btn-primary:hover{background:var(--gold);transform:translateY(-2px)}.btn-secondary{background:var(--cream);color:var(--brown);border:2px solid var(--tan)}.btn-secondary:hover{background:var(--tan);color:var(--white)}.guest-counter{align-items:center;gap:1rem;margin-top:.5rem;display:flex}.counter-btn{border:2px solid var(--tan);background:var(--cream);width:48px;height:48px;color:var(--brown);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;padding:0;font-size:1.5rem;transition:all .3s;display:flex}.counter-btn:hover{background:var(--tan);color:var(--white)}.counter-display{text-align:center;color:var(--brown);flex:1;font-size:1.5rem;font-weight:600}.guest-list{flex-direction:column;gap:1rem;margin-top:1.5rem;display:flex}.guest-entry{flex-direction:column;gap:.5rem;display:flex}.guest-entry-fields{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.guest-entry-label,.guest-meal-name{color:var(--brown);font-family:Playfair Display,serif;font-size:1.25rem;font-weight:600}.guest-entry-label{color:var(--gold)}.guest-meal-list{flex-direction:column;gap:2rem;display:flex}.guest-meal-block{border-bottom:1px solid #d4a89f66;padding-bottom:2rem}.guest-meal-block:last-child{border-bottom:none;padding-bottom:0}.guest-meal-name{margin-bottom:1rem}.view-switcher{z-index:1000;background:var(--white);border-radius:50px;gap:.5rem;padding:.5rem;display:flex;position:fixed;bottom:2rem;right:2rem;box-shadow:0 4px 20px #0000001a}.view-btn{color:var(--brown);cursor:pointer;background:0 0;border:none;border-radius:50px;padding:.5rem 1rem;font-size:.9rem;transition:all .3s}.view-btn.active{background:var(--tan);color:var(--white)}.section{display:none}.section.active{display:flex}.hero.section.active{text-align:center;flex-direction:column;justify-content:center;align-items:center}.map-section{background:var(--white);padding:4rem 2rem}.map-container{text-align:center;max-width:800px;margin:0 auto}.map-container h2{color:var(--brown);margin-bottom:1rem;font-size:2.5rem}.map-container p{color:var(--brown);opacity:.7;margin-bottom:2rem;font-size:1.1rem}.map-embed{border:none;border-radius:16px;width:100%;height:450px;box-shadow:0 10px 40px #6b4e3d26}.venue-info{background:var(--cream);text-align:left;border-radius:12px;margin-top:2rem;padding:2rem}.venue-info h3{color:var(--brown);margin-bottom:.5rem;font-size:1.5rem}.venue-info .address{color:var(--brown);opacity:.8;margin-bottom:1rem;font-size:1.1rem}.venue-info a{background:var(--gold);color:var(--white);border-radius:8px;padding:.75rem 2rem;font-weight:500;text-decoration:none;transition:all .3s;display:inline-block}.venue-info a:hover{background:var(--brown);transform:translateY(-2px)}@media (max-width:640px){.rsvp-card{padding:2rem 1.5rem}.hero h1{font-size:2.5rem}.map-embed{height:300px}}
