:root{--cream: #f5f6fa;--sand: #e1e4ed;--ink: #1a2744;--accent: #2c4a7c;--accent-dark: #1e3558;--accent-light: #4a6fa5;--gold: #c9a247;--gold-light: #e8d49a;--border: #c5cad9;--radius: 24px;--shadow: 0 24px 60px rgba(26, 39, 68, .12);--shadow-sm: 0 8px 24px rgba(26, 39, 68, .08);--shadow-lg: 0 32px 80px rgba(26, 39, 68, .16)}*{box-sizing:border-box}body{margin:0;font-family:Montserrat,Helvetica Neue,sans-serif;color:var(--ink);background:var(--cream);line-height:1.7;font-size:16px}h1,h2,h3{font-family:Cormorant Garamond,Times New Roman,serif;letter-spacing:.5px;margin:0 0 16px;line-height:1.2}h2{font-size:32px}h3{font-size:24px}p{margin:0 0 16px;color:#3a4254}a{color:inherit;text-decoration:none}.page{max-width:1600px;margin:0 auto;padding:40px 24px 96px;display:flex;flex-direction:column;gap:44px;position:relative}.eyebrow{text-transform:uppercase;letter-spacing:4px;font-size:14px;color:var(--gold);font-weight:600}.hero{background:linear-gradient(160deg,#fff,#eef1f8,#e1e4ed);border-radius:40px;padding:72px 64px 0;text-align:center;box-shadow:var(--shadow-lg);position:relative;overflow:hidden}.rsvp-cta{display:flex;justify-content:center;margin-top:-12px}.hero h1{font-size:68px;font-weight:500;background:linear-gradient(135deg,var(--ink) 0%,var(--accent-dark) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero .date{font-size:18px;letter-spacing:2px;margin-bottom:32px;display:grid;gap:6px;color:var(--accent-dark);font-weight:500}.hero .date-location{font-size:15px;letter-spacing:1px;color:var(--ink);opacity:.7}.hero-stencil{max-width:320px;width:100%;height:auto;margin:24px auto 0;display:block;filter:drop-shadow(0 8px 24px rgba(0,0,0,.1))}.align-right{margin-left:auto;margin-right:0}.align-left{margin-left:0;margin-right:auto}.pets-row{display:flex;justify-content:space-between;align-items:flex-end;width:100%;margin-top:24px}.pets-row .align-left{max-width:600px}.pets-row .align-right{max-width:400px}.vineyard-silhouette{display:block;width:calc(100% + 128px);height:100px;margin-top:24px;margin-left:-64px;margin-right:-64px;color:#1a2744;opacity:.85}.button{display:inline-flex;align-items:center;justify-content:center;padding:16px 36px;border-radius:999px;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-dark) 100%);color:#fff;font-weight:600;letter-spacing:1px;border:none;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 16px #2c4a7c4d}.button:hover{transform:translateY(-2px);box-shadow:0 8px 28px #2c4a7c66}.button:active{transform:translateY(0)}.button:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.button-small{padding:10px 20px;font-size:14px}.section{display:grid;gap:24px;animation:fadeInUp .5s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.section-title{font-size:38px;color:var(--ink);position:relative;display:inline-block}.section-title:after{content:"";display:block;width:60px;height:3px;background:linear-gradient(90deg,var(--gold) 0%,var(--gold-light) 100%);margin:12px auto 0;border-radius:2px}.tab-nav{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;margin-top:-10px}.tab-button{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);background:#fff;color:var(--ink);padding:12px 20px;border-radius:999px;font-family:inherit;font-size:15px;font-weight:500;line-height:1;cursor:pointer;transition:all .3s ease;box-shadow:0 2px 8px #0000000a}.tab-button:hover:not(.is-active){border-color:var(--accent-light);background:var(--sand);transform:translateY(-1px)}.tab-button.is-active{background:linear-gradient(135deg,var(--accent) 0%,var(--accent-dark) 100%);color:#fff;border-color:transparent;box-shadow:0 4px 12px #2c4a7c40}.tab-content{display:none}.tab-content.is-active{display:grid}.cards{display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.cards-3col{grid-template-columns:repeat(3,1fr)}@media(max-width:720px){.cards-3col{grid-template-columns:1fr}}.playlist-section{margin-top:32px;text-align:center}.playlist-section h3{margin-bottom:8px}.playlist-section p{color:#4a5a7c;margin-bottom:16px}.spotify-embed{border-radius:12px;max-width:500px;margin:0 auto}.card{background:#fff;padding:28px;border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-sm);transition:transform .3s ease,box-shadow .3s ease}.card:hover{transform:translateY(-4px);box-shadow:var(--shadow)}.card h3{color:var(--accent-dark);font-size:22px}.rsvp-section{display:flex;justify-content:center}.rsvp-card{width:min(680px,100%);background:#fff;padding:44px;border-radius:28px;border:1px solid var(--border);border-top:3px solid var(--gold);box-shadow:var(--shadow);display:grid;gap:24px}.rsvp-header h2{display:inline-block;position:relative;padding-bottom:12px}.rsvp-header h2:after{content:"";display:block;width:60px;height:3px;background:linear-gradient(90deg,var(--gold) 0%,var(--gold-light) 100%);margin-top:12px;border-radius:2px}.rsvp-card form{display:grid;gap:20px}.rsvp-card label{font-weight:500;color:#4a5a7c}.form-group{display:grid;gap:10px}input[type=text],textarea{width:100%;border:1px solid var(--border);border-radius:14px;padding:12px 16px;font-family:inherit;font-size:16px;background:#f5f7fa}input[type=text]:focus,textarea:focus{outline:2px solid rgba(44,74,124,.35);border-color:var(--accent)}.guest-list{display:grid;gap:16px}.guest-item{display:grid;gap:10px;padding:16px;border-radius:18px;border:1px solid var(--border);background:#f5f7fa;transition:border-color .2s ease,box-shadow .2s ease}.guest-item:has(input[value=yes]:checked){border-color:var(--gold);box-shadow:0 0 0 1px var(--gold-light)}.guest-name{font-weight:600}.drink-preference-section{margin-top:8px;padding-top:12px;border-top:1px dashed var(--border)}.drink-label{font-weight:500;color:#4a5a7c;margin-bottom:8px;font-size:14px}.radio-group{display:flex;gap:16px;flex-wrap:wrap}.radio-group label{display:inline-flex;align-items:center;gap:8px;background:#f0f3fa;border:1px solid var(--border);padding:10px 16px;border-radius:999px}.field-note{font-size:14px;color:#5a6a7c;margin:8px 0 0}.rsvp-card .button{width:fit-content;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-dark) 100%);border:2px solid transparent}.rsvp-card .button:hover{background:linear-gradient(135deg,var(--gold) 0%,#b8923f 100%);box-shadow:0 8px 28px #c9a24766}.badge{display:inline-flex;padding:6px 14px;border-radius:999px;background:linear-gradient(135deg,var(--gold-light) 0%,var(--gold) 100%);color:#5a4a2a;font-size:12px;font-weight:600;letter-spacing:1px;text-transform:uppercase;margin-bottom:12px}.footer{text-align:center;color:#5a6a7c;font-size:14px}.corner-images{display:flex;justify-content:space-between;align-items:flex-end;width:100%;margin-top:-40px}.corner-image{display:block;height:auto;margin-top:-40px}.corner-left{width:80px;margin-right:auto}.corner-right{width:160px;margin-left:auto}.notice{background:var(--sand);padding:16px;border-radius:16px;font-size:14px}.venue-grid{display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.venue-card{background:#fff;padding:24px;border-radius:var(--radius);border:1px solid var(--border);box-shadow:0 12px 30px #2c26210d;display:grid;gap:16px;justify-items:start;align-items:start}.venue-card .tab-button{justify-self:center;margin-top:-8px}.venue-address{font-style:normal;line-height:1.8}.map-container{position:relative;width:100%;min-height:280px;border-radius:18px;overflow:hidden;background:var(--sand)}.map-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--ink);font-size:14px;transition:opacity .3s ease}.map-placeholder.is-hidden{opacity:0;pointer-events:none}.map-spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:map-spin .8s linear infinite}@keyframes map-spin{to{transform:rotate(360deg)}}.map-frame{width:100%;border:0;border-radius:18px;min-height:280px;opacity:0;transition:opacity .3s ease}.map-frame.is-loaded{opacity:1}.photo-grid{display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}.photo-grid img{width:100%;height:200px;object-fit:cover;border-radius:18px;border:1px solid var(--border);cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.photo-grid img:hover{transform:scale(1.02);box-shadow:0 16px 40px #2c26212e}.lightbox{position:fixed;inset:0;background:#16120fbf;display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:50}.lightbox.is-active{opacity:1;pointer-events:auto}.lightbox img{max-width:min(960px,100%);max-height:85vh;width:auto;height:auto;border-radius:24px;box-shadow:0 24px 80px #00000059}.lightbox-close{position:absolute;top:24px;right:24px;background:#fff;border:none;border-radius:50%;width:44px;height:44px;font-size:20px;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}.lightbox-close:hover{background:var(--sand)}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);background:#fff;border:none;border-radius:50%;width:48px;height:48px;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}.lightbox-nav:hover{background:var(--sand)}.lightbox-prev{left:24px}.lightbox-next{right:24px}.lightbox-counter{position:absolute;bottom:24px;left:50%;transform:translate(-50%);background:#ffffffe6;padding:8px 16px;border-radius:999px;font-size:14px;color:var(--ink)}.confetti-container{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:100}.confetti-piece{position:absolute;top:-10px;width:8px;height:14px;border-radius:2px;background:var(--accent);opacity:.9;animation:confetti-fall var(--confetti-duration, 3.5s) ease-out forwards;animation-delay:var(--confetti-delay, 0s)}@keyframes confetti-fall{0%{transform:translateY(0) rotate(0)}to{transform:translateY(110vh) rotate(360deg)}}@media(max-width:720px){.hero{padding:56px 24px 0}.hero h1{font-size:36px}.hero-stencil{max-width:240px;margin-top:24px}.vineyard-silhouette{height:70px;margin-left:-24px;margin-right:-24px;width:calc(100% + 48px);margin-top:16px}.rsvp-cta{margin-bottom:20px}.rsvp-card{padding:24px 16px;border-radius:20px}input[type=text],textarea{max-width:100%}.section-title{font-size:28px}.section-title:after{width:40px;height:2px;margin-top:8px}.card:hover{transform:none}.photo-grid img{height:180px}}
