*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--sage: #7a9e7e;--sage-light: #a8c5aa;--sage-pale: #d6e8d7;--sage-deep: #4d7352;--cream: #f8f4ed;--cream-warm: #f0e9dc;--linen: #e8dfd0;--ink: #2c3a2e;--ink-soft: #4a5c4c;--gold: #c9a86c;--gold-light: #e8d5a8;--muted: #888;--radius: 14px;--font-serif: "Cormorant Garamond", Georgia, serif;--font-sans: "Jost", system-ui, sans-serif}html{scroll-behavior:smooth}body{background:var(--cream);color:var(--ink);font-family:var(--font-sans);font-weight:300;line-height:1.7;overflow-x:hidden}.botanical{position:absolute;pointer-events:none;opacity:.18}.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:var(--cream);overflow:hidden;padding:4rem 2rem}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 70% 55% at 50% 42%,rgba(122,158,126,.13) 0%,transparent 70%);pointer-events:none}.hero-botanical-tl{top:-40px;left:-60px;width:420px;transform:rotate(-15deg)}.hero-botanical-br{bottom:-50px;right:-60px;width:380px;transform:rotate(168deg)}.hero-eyebrow{font-family:var(--font-sans);font-size:.72rem;font-weight:500;letter-spacing:.28em;text-transform:uppercase;color:var(--sage-deep);margin-bottom:1.6rem;opacity:0;animation:fadeUp .8s .2s ease forwards}.hero-names{font-family:var(--font-serif);font-size:clamp(3.8rem,10vw,8rem);font-weight:300;line-height:1;color:var(--ink);letter-spacing:-.01em;opacity:0;animation:fadeUp .9s .4s ease forwards}.hero-names em{font-style:italic;color:var(--sage-deep)}.hero-ampersand{display:block;font-size:clamp(2.4rem,6vw,5rem);color:var(--gold);margin:.1em 0;font-weight:300}.hero-divider{width:120px;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);margin:2.2rem auto;opacity:0;animation:fadeUp .8s .6s ease forwards}.hero-tagline{font-family:var(--font-serif);font-size:clamp(1.15rem,2.8vw,1.6rem);font-style:italic;font-weight:300;color:var(--ink-soft);max-width:520px;line-height:1.5;opacity:0;animation:fadeUp .8s .75s ease forwards}.hero-date-badge{margin-top:2.6rem;padding:.9rem 2.4rem;border:1px solid var(--sage-light);border-radius:60px;background:#ffffff8c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;color:var(--sage-deep);font-weight:500;opacity:0;animation:fadeUp .8s .9s ease forwards}.hero-scroll{position:absolute;bottom:2.4rem;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:.6rem;color:var(--sage);font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;opacity:0;animation:fadeUp .8s 1.3s ease forwards}.hero-scroll svg{animation:bounce 2s ease infinite}.story{position:relative;background:var(--sage-deep);color:var(--cream);padding:7rem 2rem;overflow:hidden;text-align:center}.story:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 80% 60% at 50% 50%,rgba(255,255,255,.05) 0%,transparent 70%)}.story-botanical{position:absolute;opacity:.12}.story-botanical-l{top:0;left:-80px;width:360px;transform:rotate(20deg)}.story-botanical-r{bottom:0;right:-80px;width:360px;transform:rotate(195deg)}.section-label{font-size:.68rem;letter-spacing:.3em;text-transform:uppercase;font-weight:500;color:var(--gold-light);margin-bottom:1.4rem;display:block}.story-heading{font-family:var(--font-serif);font-size:clamp(2.4rem,5vw,4rem);font-weight:300;font-style:italic;line-height:1.2;color:#fff;margin-bottom:2rem}.story-text{font-family:var(--font-serif);font-size:clamp(1.05rem,2vw,1.25rem);font-weight:300;color:#ffffffd1;max-width:640px;margin:0 auto;line-height:1.85}.story-text+.story-text{margin-top:1.4rem}.details{padding:7rem 2rem;background:var(--cream);text-align:center;position:relative;overflow:hidden}.details-heading{font-family:var(--font-serif);font-size:clamp(2.2rem,4.5vw,3.4rem);font-weight:300;color:var(--ink);margin-bottom:1rem}.details-sub{font-family:var(--font-serif);font-style:italic;font-size:1.05rem;color:var(--ink-soft);margin-bottom:4rem}.cards{display:flex;flex-wrap:wrap;gap:1.6rem;justify-content:center;max-width:900px;margin:0 auto}.card{flex:1 1 240px;max-width:280px;background:#fff;border:1px solid var(--linen);border-radius:20px;padding:2.4rem 2rem;text-align:center;transition:transform .3s ease,box-shadow .3s ease;position:relative;overflow:hidden}.card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--sage-light),var(--sage-deep),var(--sage-light))}.card:hover{transform:translateY(-4px);box-shadow:0 16px 40px #4d73521f}.card-icon{font-size:1.8rem;margin-bottom:1rem;display:block}.card-label{font-size:.68rem;letter-spacing:.25em;text-transform:uppercase;font-weight:500;color:var(--sage);margin-bottom:.6rem}.card-value{font-family:var(--font-serif);font-size:1.35rem;font-weight:400;color:var(--ink);line-height:1.35}.card-note{margin-top:.5rem;font-size:.82rem;color:var(--ink-soft)}.dress-strip{background:var(--sage-pale);padding:3.6rem 2rem;text-align:center}.dress-strip .section-label{color:var(--sage-deep)}.dress-palette{display:flex;justify-content:center;gap:.8rem;flex-wrap:wrap;margin-top:1.6rem}.swatch{display:flex;flex-direction:column;align-items:center;gap:.5rem;font-size:.7rem;letter-spacing:.1em;color:var(--ink-soft)}.swatch-circle{width:52px;height:52px;border-radius:50%;border:2px solid rgba(0,0,0,.08);box-shadow:0 2px 8px #00000014}.dress-note{font-family:var(--font-serif);font-style:italic;font-size:1.1rem;color:var(--ink);margin-top:1.8rem}.rsvp{padding:7rem 2rem;background:var(--cream-warm);text-align:center;position:relative;overflow:hidden}.rsvp-botanical{position:absolute;opacity:.1}.rsvp-botanical-l{bottom:-60px;left:-80px;width:380px;transform:rotate(30deg)}.rsvp-botanical-r{top:-40px;right:-80px;width:320px;transform:rotate(200deg)}.rsvp-heading{font-family:var(--font-serif);font-size:clamp(2.2rem,4.5vw,3.4rem);font-weight:300;color:var(--ink);margin-bottom:.6rem}.rsvp-sub{font-family:var(--font-serif);font-style:italic;font-size:1.05rem;color:var(--ink-soft);margin-bottom:3rem}.rsvp-form{max-width:480px;margin:0 auto;display:flex;flex-direction:column;gap:1rem;position:relative;z-index:1}.field-group{display:flex;gap:1rem}.field{display:flex;flex-direction:column;align-items:flex-start;flex:1;gap:.35rem}label{font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;font-weight:500;color:var(--sage-deep)}input,select,textarea{width:100%;padding:.85rem 1.1rem;border:1px solid var(--linen);border-radius:12px;background:#fff;font-family:var(--font-sans);font-size:.9rem;color:var(--ink);font-weight:300;outline:none;transition:border-color .25s,box-shadow .25s;-webkit-appearance:none}input:focus,select:focus,textarea:focus{border-color:var(--sage);box-shadow:0 0 0 3px #7a9e7e26}input.error{border-color:#c0392b}select{cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%237a9e7e' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;padding-right:2.5rem}textarea{resize:vertical;min-height:90px}.btn{margin-top:.6rem;padding:1.05rem 2.8rem;background:var(--sage-deep);color:#fff;border:none;border-radius:60px;font-family:var(--font-sans);font-size:.8rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;cursor:pointer;transition:background .25s,transform .2s,box-shadow .25s;align-self:center}.btn:hover{background:var(--sage);transform:translateY(-2px);box-shadow:0 8px 24px #4d735240}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.6;cursor:not-allowed;transform:none!important}.rsvp-deadline{margin-top:2rem;font-size:.78rem;color:var(--ink-soft);letter-spacing:.05em}.thankyou{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:3rem 2rem}.thankyou-icon{font-size:2.8rem}.thankyou-heading{font-family:var(--font-serif);font-size:2rem;font-style:italic;color:var(--sage-deep)}.thankyou-text{font-size:.95rem;color:var(--ink-soft);max-width:320px;text-align:center}footer{background:var(--ink);color:#ffffff8c;text-align:center;padding:3rem 2rem;font-size:.78rem;letter-spacing:.08em}footer strong{display:block;font-family:var(--font-serif);font-size:1.4rem;font-style:italic;font-weight:300;color:#ffffffd9;margin-bottom:.5rem}.footer-divider{width:60px;height:1px;background:var(--gold);margin:1.2rem auto;opacity:.5}.guest-block{border:1px solid var(--linen);border-radius:16px;padding:1.4rem 1.4rem 1rem;background:#fff9;display:flex;flex-direction:column;gap:.85rem;animation:fadeUp .35s ease forwards}.guest-block-label{font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;font-weight:500;color:var(--sage);margin-bottom:-.2rem}.gate-wrap{min-height:100vh;background:var(--cream);display:flex;align-items:center;justify-content:center}.gate-card{background:#fff;border:1px solid var(--linen);border-radius:24px;padding:2.8rem 2.4rem 2.4rem;width:min(380px,92vw);text-align:center;box-shadow:0 8px 40px #0000000f}.gate-card h1{font-family:var(--font-serif);font-weight:300;font-size:2rem;margin-bottom:.4rem}.gate-card p{color:var(--muted);font-size:.85rem;margin-bottom:1.6rem}.gate-card input[type=password]{width:100%;padding:.8rem 1rem;border:1px solid var(--linen);border-radius:var(--radius);font-family:var(--font-sans);font-size:.95rem;background:var(--cream);outline:none;transition:border-color .2s;margin-bottom:.9rem;-webkit-appearance:none}.gate-card input[type=password]:focus{border-color:var(--sage)}.gate-btn{width:100%;padding:.85rem;background:var(--sage-deep);color:#fff;border:none;border-radius:var(--radius);font-family:var(--font-sans);font-size:.85rem;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;transition:background .2s}.gate-btn:hover{background:var(--sage)}.gate-error{font-size:.8rem;color:#c0392b;margin-top:.6rem;min-height:1.2em}.gl-header{background:#fff;border-bottom:1px solid var(--linen);padding:1.4rem 2rem;display:flex;align-items:baseline;gap:1rem;flex-wrap:wrap}.gl-header h1{font-family:var(--font-serif);font-weight:300;font-size:1.7rem;flex:1}.gl-header .subtitle{color:var(--muted);font-size:.82rem}.gl-main{max-width:1100px;margin:0 auto;padding:2rem 1.5rem 4rem}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;margin-bottom:2rem}.stat-card{background:#fff;border:1px solid var(--linen);border-radius:var(--radius);padding:1.2rem 1.4rem}.stat-card .stat-label{font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:.3rem}.stat-card .stat-value{font-family:var(--font-serif);font-size:2.4rem;font-weight:300;line-height:1;color:var(--sage-deep)}.table-wrap{background:#fff;border:1px solid var(--linen);border-radius:var(--radius);overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.88rem}thead th{text-align:left;padding:.9rem 1rem;font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--linen);white-space:nowrap}tbody tr{border-bottom:1px solid var(--linen);transition:background .15s}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:var(--cream)}tbody td{padding:.85rem 1rem;vertical-align:top}.name-cell strong{display:block}.name-cell span{font-size:.8rem;color:var(--muted)}.pill{display:inline-block;padding:.2rem .6rem;border-radius:99px;font-size:.74rem;background:var(--linen);color:var(--ink)}.pill.green{background:#dff0e0;color:var(--sage-deep)}.dietary-text{font-size:.82rem;color:var(--ink)}.dietary-none{font-size:.82rem;color:var(--muted)}.note-text{font-size:.82rem;font-style:italic;color:var(--ink);max-width:220px}.guests-detail{font-size:.78rem;color:var(--muted);margin-top:.3rem;line-height:1.5}.date-text{font-size:.8rem;color:var(--muted);white-space:nowrap}.empty{text-align:center;padding:4rem 2rem;color:var(--muted);font-family:var(--font-serif);font-size:1.2rem;font-style:italic}.loading{text-align:center;padding:4rem 2rem;color:var(--muted);font-size:.85rem}@keyframes fadeUp{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(6px)}}.reveal{opacity:0;transform:translateY(30px);transition:opacity .7s ease,transform .7s ease}.reveal.visible{opacity:1;transform:none}.reveal-delay-1{transition-delay:.1s}.reveal-delay-2{transition-delay:.2s}.reveal-delay-3{transition-delay:.3s}@media(max-width:560px){.field-group{flex-direction:column}.cards{gap:1.2rem}.card{max-width:100%}}
