:root{--sky:#9db8cd;--sky-deep:#5f7d95;--meadow:#6f7f4a;--meadow-deep:#495536;--gold:#c3a266;--granite:#63696f;--ink:#2c3033;--muted:#5c6259;--paper:#eff1e9;--paper-2:#e5e8dc;--card:#f8f9f4;--line:#d3d7c7}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--paper-2);color:var(--ink);font-family:Nunito Sans,system-ui,sans-serif;font-weight:400;line-height:1.6;-webkit-font-smoothing:antialiased}img{max-width:100%}.wrap{max-width:940px;margin:0 auto;background:var(--paper);box-shadow:0 1px 40px rgba(44,48,51,.1)}.hero{position:relative;height:min(78vh,660px);min-height:440px;display:flex;align-items:flex-end;overflow:hidden;background-size:cover;background-position:center 42%;background-repeat:no-repeat}.hero-fallback{background-image:linear-gradient(180deg,var(--sky) 0,#c6d3c2 55%,var(--meadow) 100%)}.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(44,52,46,.12),rgba(44,52,46,0) 34%,rgba(40,48,42,.3) 62%,rgba(35,44,38,.82))}.hero-inner{position:relative;z-index:2;width:100%;padding:0 44px 46px;color:#fff}.eyebrow{font-weight:700;letter-spacing:.34em;text-transform:uppercase;font-size:.72rem;margin:0 0 .5rem;color:#eef1e6;opacity:.94}.hero h1{font-family:Fraunces;font-optical-sizing:auto;font-weight:500;font-size:clamp(2.9rem,8vw,5.4rem);line-height:.98;margin:.2rem 0 .6rem;letter-spacing:-.01em;text-shadow:0 2px 30px rgba(20,26,20,.45)}.hero .sub{font-family:Fraunces;font-style:italic;font-weight:400;font-size:clamp(1.05rem,2.4vw,1.4rem);margin:0 0 1.1rem;color:#f3f5ec;text-shadow:0 2px 20px rgba(20,26,20,.5);max-width:34ch}.hero-cta{display:inline-block;font-weight:700;background:var(--gold);color:#3a2f16;text-decoration:none;border-radius:8px;padding:12px 26px;transition:filter .15s}.hero-cta:hover{filter:brightness(1.06)}.ridge{height:26px;color:var(--meadow)}.ridge,.ridge svg{display:block;width:100%}.ridge svg{height:100%}.ridge-small{width:64px;height:14px;margin:0 auto 16px;color:var(--gold)}.invite{padding:52px 44px 8px}.invite .lead{font-family:Fraunces;font-weight:400;font-size:clamp(1.18rem,2.6vw,1.5rem);line-height:1.5;color:var(--meadow-deep);margin:0 auto;max-width:56ch;text-align:center}.meet{display:grid;grid-template-columns:250px 1fr;grid-gap:38px;gap:38px;align-items:center;padding:44px 44px 40px}.portrait{margin:0}.portrait img{display:block}.portrait img,.portrait-ph{width:100%;border-radius:6px;box-shadow:0 10px 34px rgba(44,48,51,.22);border:5px solid #fff}.portrait-ph{aspect-ratio:3/4;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--sky) 0,var(--meadow) 100%);color:#fff;font-family:Fraunces;font-size:3.4rem}.portrait figcaption{font-family:Fraunces;font-style:italic;color:var(--muted);text-align:center;font-size:.95rem;margin-top:.7rem}.details h2{font-family:Fraunces;font-weight:500;font-size:1.7rem;color:var(--meadow-deep);margin:0 0 1.1rem;letter-spacing:-.01em}.row{display:flex;gap:14px;padding:11px 0;border-bottom:1px solid var(--line)}.row:last-child{border-bottom:0}.row .k{flex:0 0 74px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;font-size:.68rem;color:var(--gold);padding-top:4px}.row .v{font-size:1.06rem;color:var(--ink)}.row .v .big{font-family:Fraunces;font-weight:500;font-size:1.22rem;display:block;color:var(--ink);line-height:1.25}.gallery{padding:34px 44px 40px}.form-head,.gallery-head,.stay-head{text-align:center;max-width:60ch;margin:0 auto 26px}.form-head h2,.gallery-head h2,.stay-head h2{font-family:Fraunces;font-weight:500;font-size:1.9rem;color:var(--meadow-deep);margin:0 0 .5rem}.gallery-head p{color:var(--muted);margin:0;font-family:Fraunces;font-style:italic;font-size:1.08rem}.form-head p,.stay-head p{color:var(--muted);margin:.3rem auto 0;font-size:1rem}.form-head a{color:var(--meadow-deep)}.grid{column-count:3;column-gap:13px}.grid figure{page-break-inside:avoid;break-inside:avoid;margin:0 0 13px}.grid img{width:100%;display:block;border-radius:7px;border:4px solid #fff;box-shadow:0 6px 20px rgba(44,48,51,.16)}.grid figcaption{font-size:.85rem;margin-top:.35rem}.empty-note,.grid figcaption{color:var(--muted);font-family:Fraunces;font-style:italic;text-align:center}.empty-note{padding:8px 0 4px}.contrib{margin:26px auto 0;max-width:620px}.contrib h3{font-family:Fraunces;font-weight:500;text-align:center;color:var(--meadow-deep);font-size:1.3rem;margin:0 0 14px}.stay{padding:30px 44px 46px}.cols{display:grid;grid-template-columns:1fr 1fr;grid-gap:22px;gap:22px}.col{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:24px 24px 20px}.col>h3{font-family:Fraunces;font-weight:600;font-size:1.28rem;margin:0 0 .1rem;color:var(--ink)}.col>.tag{font-size:.78rem;text-transform:uppercase;letter-spacing:.14em;color:var(--gold);font-weight:700;margin:0 0 1rem}.col ul{list-style:none;margin:0;padding:0}.col li{padding:9px 0;border-top:1px solid var(--line)}.col li:first-child{border-top:0}.col li .name{font-weight:700;color:var(--ink);text-decoration:none;border-bottom:1px solid transparent;transition:color .15s,border-color .15s}.col li a.name:focus-visible,.col li a.name:hover{color:var(--meadow-deep);border-bottom-color:var(--gold);outline:none}.col li a.name:after{content:"\2197";font-size:.72em;margin-left:.34em;color:var(--gold);font-weight:700;vertical-align:1px}.col li .desc{display:block;font-size:.9rem;color:var(--muted);line-height:1.45}.section-pad{padding:44px 44px 46px}.card-form{max-width:620px;margin:0 auto;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:26px}.field{margin-bottom:16px}.field>label{display:block;font-weight:700;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);margin-bottom:6px}.field input,.field select,.field textarea{width:100%;font:inherit;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:8px;padding:11px 13px;transition:border-color .15s,box-shadow .15s}.field textarea{min-height:120px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--meadow);box-shadow:0 0 0 3px rgba(111,127,74,.16)}.field-row{display:flex;gap:16px}.field-row .field{flex:1 1}.choice{display:flex;gap:10px;flex-wrap:wrap}.choice label{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px 14px;cursor:pointer;font-size:1rem;color:var(--ink);margin:0}.choice input{width:auto;margin:0}.choice label:has(input:checked){border-color:var(--meadow);background:rgba(111,127,74,.09)}button.submit{font:inherit;font-weight:700;background:var(--meadow-deep);color:#f3f5ec;border:none;border-radius:8px;padding:13px 26px;cursor:pointer;transition:background .15s,transform .05s}button.submit:hover{background:#3a4429}button.submit:active{transform:translateY(1px)}button.submit:disabled{opacity:.6;cursor:default}.muted-note{text-align:center;color:var(--muted);font-size:.88rem;margin:14px 0 0}.muted-note.left{text-align:left;margin:0 0 16px}.err{color:#a13d34;font-size:.95rem;margin:0 0 12px}.form-success{max-width:620px;margin:0 auto;text-align:center;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:34px}.form-success h3{font-family:Fraunces;color:var(--meadow-deep);font-size:1.5rem;margin:0 0 .4rem}.form-success p{color:var(--muted);margin:0}.wall{max-width:680px;margin:30px auto 0;display:flex;flex-direction:column;gap:16px}.story{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--gold);border-radius:10px;padding:20px 22px}.story .txt{font-family:Fraunces;font-style:italic;font-size:1.12rem;line-height:1.55;color:var(--meadow-deep);margin:0 0 10px;white-space:pre-wrap}.story .who{font-weight:700;color:var(--ink);font-size:.95rem}.story .who span{font-weight:400;color:var(--muted)}.wall-empty{text-align:center;color:var(--muted);font-family:Fraunces;font-style:italic;padding:8px}.rsvp-footer{background:var(--meadow-deep);color:#eef1e6;text-align:center;padding:42px 44px}.rsvp-footer h2{font-family:Fraunces;font-weight:500;font-size:1.55rem;margin:0 0 .5rem;color:#fff}.rsvp-footer p{margin:.35rem auto;max-width:46ch;color:#dfe4d3}.rsvp-footer .close{font-family:Fraunces;font-style:italic;font-size:1.12rem;margin-top:1.5rem;color:#f3f5ec}.admin-login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:var(--paper-2)}.admin-login h1{font-family:Fraunces;font-weight:500;color:var(--meadow-deep);margin:0 0 .4rem}.admin-wrap{max-width:1100px;margin:0 auto;padding:30px 20px 60px}.admin-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.admin-head h1{font-family:Fraunces;font-weight:500;color:var(--meadow-deep);font-size:1.7rem;margin:0}.admin-actions{display:flex;gap:8px;align-items:center}.muted{color:var(--muted)}.saved{color:var(--meadow-deep);font-weight:700}a.ghost,button.ghost{font:inherit;background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px 14px;cursor:pointer;color:var(--ink)}a.ghost{text-decoration:none;display:inline-block}a.ghost:hover,button.ghost:hover{border-color:var(--meadow)}.login-back{text-align:center;margin:16px 0 0}.login-back a{color:var(--muted)}.warn{background:#fdf3e3;border:1px solid var(--gold);border-radius:10px;padding:14px 18px;margin:18px 0;color:#5a4a22}.tabbar{display:flex;gap:8px;margin:22px 0;flex-wrap:wrap}.tab{font:inherit;font-weight:700;background:#fff;border:1px solid var(--line);border-radius:999px;padding:9px 18px;cursor:pointer;color:var(--muted)}.tab.on{background:var(--meadow-deep);color:#fff;border-color:var(--meadow-deep)}.badge{background:var(--gold);color:#3a2f16;border-radius:999px;font-size:.72rem;padding:2px 8px;margin-left:8px}.admin-wrap h2{font-family:Fraunces;font-weight:500;color:var(--meadow-deep);font-size:1.3rem;margin:26px 0 12px}.pend{background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin-bottom:12px}.pend-txt{font-family:Fraunces;font-style:italic;color:var(--meadow-deep);margin:0 0 8px;white-space:pre-wrap}.pend-who{font-size:.9rem;color:var(--muted);margin:0 0 10px}.btnrow{display:flex;gap:8px}button.approve{font:inherit;font-weight:700;background:var(--meadow-deep);color:#fff;border:none;border-radius:7px;padding:8px 16px;cursor:pointer}button.approve:disabled{opacity:.5;cursor:default}button.reject{font:inherit;font-weight:700;background:#fff;color:#a13d34;border:1px solid #d8b3ae;border-radius:7px;padding:8px 16px;cursor:pointer}.thumbrow{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:12px;gap:12px}.pend.photo img{width:100%;border-radius:7px;display:block;margin-bottom:8px}.row-between{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.tablewrap{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:10px}table{border-collapse:collapse;width:100%;font-size:.92rem}td,th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;color:var(--gold);white-space:nowrap}td.strong{font-weight:700}td.notecell{max-width:220px}.noteinput{width:180px}.noteinput,table select{font:inherit;border:1px solid var(--line);border-radius:6px;padding:6px 8px}table td.actions,table th:last-child{position:-webkit-sticky;position:sticky;right:0;background:#fff;box-shadow:-8px 0 8px -8px rgba(44,48,51,.25)}@media (max-width:760px){.tablewrap{overflow-x:visible;background:transparent;border:0;border-radius:0}.tablewrap table,.tablewrap tbody{display:block;width:100%}.tablewrap thead{display:none}.tablewrap tr{display:block;background:#fff;border:1px solid var(--line);border-radius:10px;padding:6px 14px;margin-bottom:12px}.tablewrap td{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:9px 0;border-bottom:1px solid var(--line)}.tablewrap td:empty{display:none}.tablewrap td:before{content:attr(data-label);flex:0 0 auto;font-size:.66rem;text-transform:uppercase;letter-spacing:.1em;color:var(--gold);font-weight:700}.tablewrap td.notecell{max-width:none}.tablewrap td .noteinput{width:auto;flex:1 1 auto;min-width:0}.tablewrap td.actions{position:static;box-shadow:none;border-bottom:0;justify-content:flex-end}.tablewrap td.actions:before{content:none}.row-between{align-items:center}}.sitegrid{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}.sitecard{background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px}.sitecard h3{margin:0 0 10px;font-family:Fraunces;font-weight:500;color:var(--ink)}.sitecard img{width:100%;border-radius:7px;margin-bottom:10px}@media (max-width:680px){.hero-inner{padding:0 26px 34px}.gallery,.invite,.section-pad,.stay{padding-left:20px;padding-right:20px}.meet{gap:22px;padding:34px 26px 12px;max-width:340px;margin:0 auto}.cols,.meet,.sitegrid{grid-template-columns:1fr}.grid{column-count:2}.field-row{flex-direction:column;gap:0}.card-form{padding:20px}.rsvp-footer{padding:36px 26px}}