:root{--bg: #f3ede2;--bg-2: #ebe3d2;--ink: #1d1b16;--ink-2: #3c3830;--muted: #807866;--line: rgba(29, 27, 22, .18);--line-soft: rgba(29, 27, 22, .08);--accent: #5d6a4a;--accent-ink: #2f3825;--paper: #fbf7ee;--rsvp-bg: #1d1b16;--rsvp-fg: #f3ede2;--rsvp-card-bg: rgba(243, 237, 226, .05);--rsvp-line: rgba(243, 237, 226, .14);--rsvp-line-strong: rgba(243, 237, 226, .28);--rsvp-muted: rgba(243, 237, 226, .58);--rsvp-hint: rgba(243, 237, 226, .68);--rsvp-dim: rgba(243, 237, 226, .35);--shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 8px 30px rgba(40, 30, 15, .06);--serif: "Cormorant Garamond", "EB Garamond", "Playfair Display", Georgia, serif;--sans: "Inter", ui-sans-serif, system-ui, -apple-system, sans-serif;--script: "Pinyon Script", "Cormorant Garamond", cursive}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{overflow-x:hidden}a{color:inherit}.wrap{max-width:1180px;margin:0 auto;padding:0 32px}.wrap-narrow{max-width:720px;margin:0 auto;padding:0 32px}.eyebrow{font-family:var(--sans);font-size:11px;font-weight:500;letter-spacing:.32em;text-transform:uppercase;color:var(--muted)}.rule{width:1px;height:64px;background:var(--line);margin:0 auto}.hair{height:1px;background:var(--line-soft);width:100%}h1,h2,h3{font-family:var(--serif);font-weight:400;color:var(--ink);margin:0;letter-spacing:-.005em}h1{font-size:clamp(64px,13vw,196px);line-height:.92}h2{font-size:clamp(36px,5.6vw,72px);line-height:1.02}h3{font-size:clamp(22px,2.4vw,30px);line-height:1.15}p{margin:0}.italic{font-style:italic}header.hero{position:relative;min-height:100vh;overflow:hidden;padding:44px 32px 54px;display:grid;grid-template-rows:auto 1fr auto;gap:24px;color:#f4efe2}.hero-bg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center 30%;z-index:0;filter:saturate(.92) contrast(1.02) brightness(.9)}.hero-veil{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:linear-gradient(180deg,#18171085,#1817101f 30%,#18171029 58%,#100f0ac2)}header.hero>:not(.hero-bg):not(.hero-veil){position:relative;z-index:2}.hero-top{display:flex;justify-content:space-between;align-items:center;font-family:var(--sans);font-size:16px;letter-spacing:.32em;text-transform:uppercase;color:#f4efe2d1}.hero-top .mono{font-variant-numeric:tabular-nums}.hero-center{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;text-align:center;gap:16px;padding:clamp(8px,3vh,40px) 0 24px}.hero-center .eyebrow{color:#f4efe2d1}.hero-sd{font-family:var(--script);font-size:clamp(62px,12.5vw,158px);line-height:.86;color:#f5f0e4;text-shadow:0 4px 26px rgba(14,14,9,.45)}.hero-names{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.34em;font-family:var(--serif);font-weight:400;font-size:clamp(23px,4.1vw,46px);letter-spacing:.16em;text-transform:uppercase;text-shadow:0 2px 16px rgba(14,14,9,.42);margin-top:4px}.hero-names .name{display:inline}.hero-names .amp{font-style:italic;letter-spacing:0;text-transform:none;color:#ccd1b6;font-size:1.12em}.hero-date{font-family:var(--sans);font-size:12px;letter-spacing:.34em;text-transform:uppercase;color:#f4efe2db}.hero-foot{display:flex;justify-content:center;align-items:end}.hero-when{display:flex;flex-direction:column;align-items:center;gap:18px}.countdown{display:inline-flex;gap:22px;justify-content:center}.countdown div{text-align:center;min-width:56px}.countdown .n{font-family:var(--serif);font-size:38px;line-height:1;color:#f4efe2;font-variant-numeric:tabular-nums}.countdown .l{font-family:var(--sans);font-size:9px;letter-spacing:.26em;text-transform:uppercase;color:#f4efe2b8;margin-top:6px}section.dedication{padding:120px 32px;text-align:center}.dedication .eyebrow{margin-bottom:22px}.dedication .greeting{font-family:var(--serif);font-style:italic;font-weight:400;font-size:clamp(38px,5.4vw,68px);line-height:1.05;color:var(--ink);margin:0 0 26px;text-wrap:balance}.dedication blockquote{margin:0 auto;max-width:760px;font-family:var(--serif);font-size:clamp(28px,3.6vw,40px);font-weight:300;line-height:1.32;color:var(--ink);text-wrap:balance}.dedication blockquote .em{font-style:italic;color:var(--accent-ink)}.dedication .sign{margin-top:36px;font-family:var(--serif);font-style:italic;font-size:20px;color:var(--ink-2)}section.date{padding:88px 32px 96px;background:var(--bg-2);border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}.date-grid{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:1fr auto 1fr;gap:40px;align-items:center}.date-side{font-family:var(--serif);font-size:clamp(64px,9vw,128px);line-height:1;color:var(--ink);font-weight:300}.date-side.r{text-align:right}.date-mid{text-align:center;display:flex;flex-direction:column;align-items:center;gap:14px}.date-mid .day{font-family:var(--serif);font-size:clamp(96px,14vw,180px);line-height:1.04;padding:0 .08em;font-weight:300;color:var(--accent-ink);font-variant-numeric:tabular-nums}.date-mid .lbl{font-family:var(--sans);font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--muted)}.date-row{display:flex;justify-content:center;align-items:center;text-align:center;margin-top:32px;font-family:var(--sans);font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--muted)}.date-row .dot{width:5px;height:5px;border-radius:50%;background:var(--accent);display:inline-block;margin:0 12px;vertical-align:middle}section.schedule{padding:120px 32px}.schedule-head{text-align:center;margin-bottom:72px}.schedule-head h2{margin-top:12px}.schedule-list{max-width:760px;margin:0 auto;display:flex;flex-direction:column}.sch-item{display:grid;grid-template-columns:100px 1fr auto;gap:28px;align-items:baseline;padding:28px 0;border-bottom:1px solid var(--line-soft);position:relative}.sch-item:last-child{border-bottom:0}.sch-time{font-family:var(--serif);font-size:32px;color:var(--accent-ink);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.sch-body h3{margin-bottom:4px}.sch-body p{font-family:var(--sans);font-size:14px;color:var(--muted);line-height:1.55}.sch-icon{width:32px;height:32px;border-radius:50%;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--accent);font-family:var(--serif);font-style:italic;font-size:14px}section.location{padding:120px 0;background:var(--paper)}.location-head{text-align:center;margin-bottom:84px}.location-head h2{margin-top:12px}.place{position:relative}.place+.place:before{content:"";display:block;width:100%;height:1px;background:var(--line-soft);max-width:1180px;margin:104px auto}.place-cols{display:grid;grid-template-columns:1.05fr 1fr;gap:48px;align-items:start;max-width:1180px;margin:0 auto;padding:0 32px}.loc-photo{aspect-ratio:4 / 3.2;background:var(--bg-2);overflow:hidden}.loc-photo img{display:block;width:100%;height:100%;object-fit:cover}.loc-info{display:flex;flex-direction:column;justify-content:space-between;padding:8px 0;min-height:100%}.loc-info .eyebrow{margin-bottom:14px}.loc-info h2{margin-bottom:18px}.loc-info .addr{font-family:var(--serif);font-style:italic;font-size:22px;color:var(--ink-2);line-height:1.4}.loc-info .lines{margin-top:28px;font-family:var(--sans);font-size:14px;color:var(--ink-2);line-height:1.7}.loc-info .lines b{font-family:var(--sans);font-weight:500;letter-spacing:.04em;text-transform:uppercase;font-size:11px;display:block;color:var(--muted);margin-bottom:4px}.loc-actions{display:flex;gap:12px;margin-top:32px;flex-wrap:wrap}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--ink);background:transparent;color:var(--ink);padding:14px 22px;font-family:var(--sans);font-size:11px;letter-spacing:.28em;text-transform:uppercase;cursor:pointer;transition:.15s;text-decoration:none;display:inline-flex;align-items:center}.btn:hover,.btn.primary{background:var(--ink);color:var(--paper)}.btn.primary:hover{background:var(--accent-ink)}.place-map{margin-top:48px;max-width:1180px;margin-left:auto;margin-right:auto;padding:0 32px}.map-frame{position:relative;width:100%;aspect-ratio:16 / 6;background:var(--bg-2);border:1px solid var(--line);overflow:hidden}.map-frame iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0;filter:grayscale(.18) contrast(1.03)}.map-cap{display:flex;justify-content:space-between;align-items:baseline;margin-top:12px;font-family:var(--sans);font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--muted)}.map-cap .mid{font-family:var(--serif);font-style:italic;font-size:15px;letter-spacing:0;text-transform:none;color:var(--ink-2)}section.rsvp{padding:120px 32px 140px;background:var(--rsvp-bg);color:var(--rsvp-fg)}.rsvp h2{color:var(--rsvp-fg)}.rsvp .eyebrow{color:var(--rsvp-muted)}.rsvp-head{text-align:center;margin-bottom:56px}.rsvp-head p{margin-top:18px;font-family:var(--serif);font-style:italic;font-size:20px;color:var(--rsvp-hint);max-width:560px;margin-left:auto;margin-right:auto;text-wrap:balance}.rsvp-card{max-width:640px;margin:0 auto;background:var(--rsvp-card-bg);border:1px solid var(--rsvp-line);padding:48px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.field{display:flex;flex-direction:column;gap:8px;margin-bottom:24px}.field label{font-family:var(--sans);font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--rsvp-muted)}.field input,.field textarea,.field select{background:transparent;border:0;border-bottom:1px solid var(--rsvp-line);color:var(--rsvp-fg);font-family:var(--serif);font-size:22px;padding:10px 0;outline:none;transition:border-color .15s;font-weight:300}.field input:focus,.field textarea:focus,.field select:focus{border-bottom-color:var(--rsvp-fg)}.field input::placeholder,.field textarea::placeholder{color:var(--rsvp-dim);font-style:italic}.field textarea{resize:none;min-height:88px;font-size:18px;line-height:1.5}.choice{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--rsvp-line-strong)}.choice button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;color:var(--rsvp-fg);border:0;padding:18px 14px;font-family:var(--sans);font-size:11px;letter-spacing:.28em;text-transform:uppercase;cursor:pointer;transition:.15s;position:relative}.choice button+button{border-left:1px solid var(--rsvp-line-strong)}.choice button.on{background:var(--rsvp-fg);color:var(--rsvp-bg)}.choice button.on:after{content:"";position:absolute;top:8px;right:10px;width:6px;height:6px;background:var(--accent);border-radius:50%}.chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}.chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;color:var(--rsvp-fg);border:1px solid var(--rsvp-line-strong);padding:10px 16px;font-family:var(--sans);font-size:12px;letter-spacing:.06em;cursor:pointer;transition:.15s;border-radius:999px}.chip:hover{border-color:var(--rsvp-fg)}.chip.on{background:var(--rsvp-fg);color:var(--rsvp-bg);border-color:var(--rsvp-fg)}.chip.on:before{content:"✓";margin-right:8px;color:var(--accent);font-weight:600}.reveal{max-height:0;opacity:0;overflow:hidden;transition:max-height .5s cubic-bezier(.3,.7,.4,1),opacity .35s ease}.reveal.on{max-height:1200px;opacity:1}.reveal-inner{padding-top:8px}.rsvp-submit{margin-top:36px;display:flex;justify-content:space-between;align-items:center;gap:24px}.rsvp-submit .hint{font-family:var(--serif);font-style:italic;font-size:14px;color:var(--rsvp-dim)}.rsvp-submit button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--rsvp-fg);color:var(--rsvp-bg);border:0;padding:18px 36px;font-family:var(--sans);font-size:11px;letter-spacing:.32em;text-transform:uppercase;cursor:pointer;font-weight:500;transition:.15s}.rsvp-submit button:hover{background:var(--accent);color:var(--rsvp-bg)}.rsvp-submit button:disabled{opacity:.4;cursor:not-allowed}.rsvp-thanks{text-align:center;padding:36px 12px}.rsvp-thanks .mark{width:48px;height:48px;border-radius:50%;border:1px solid var(--rsvp-line-strong);display:inline-flex;align-items:center;justify-content:center;margin-bottom:24px;color:var(--accent)}.rsvp-thanks h3{color:var(--rsvp-fg);font-family:var(--serif);font-size:36px;margin-bottom:14px;font-style:italic;font-weight:300}.rsvp-thanks p{font-family:var(--sans);color:var(--rsvp-hint);font-size:14px;line-height:1.7}.err{font-family:var(--sans);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#e2a98a;margin-top:8px}footer{padding:48px 32px;background:var(--bg);text-align:center;border-top:1px solid var(--line-soft)}footer .mark{font-family:var(--serif);font-style:italic;font-size:32px;color:var(--accent-ink);font-weight:300}footer .meta{margin-top:8px;font-family:var(--sans);font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--muted)}@media (max-width: 860px){.date-grid{grid-template-columns:1fr}.date-side,.date-side.r{text-align:center}.place-cols{grid-template-columns:1fr;gap:32px}.map-frame{aspect-ratio:4 / 3}.sch-item{grid-template-columns:80px 1fr;gap:18px}.sch-icon{display:none}.rsvp-card{padding:28px}.rsvp-submit{flex-direction:column;align-items:stretch}.rsvp-submit .hint{text-align:center}}@media (max-width: 480px){.wrap,.wrap-narrow{padding:0 16px}section.dedication{padding:72px 16px}section.date{padding:56px 16px 64px}section.schedule{padding:72px 16px}section.location{padding:72px 0}.place-cols,.place-map{padding:0 16px}.place+.place:before{margin:64px auto}section.rsvp{padding:72px 16px 88px}footer{padding:40px 16px}header.hero{padding:32px 16px 40px}.hero-top{font-size:11px;letter-spacing:.18em}.schedule-head{margin-bottom:40px}.sch-item{grid-template-columns:64px 1fr;gap:12px;padding:20px 0}.sch-time{font-size:22px}.date-row{flex-direction:column;align-items:center;gap:6px;text-align:center}.date-row .dot{display:none}.rsvp-card{padding:20px 16px}.choice{grid-template-columns:1fr}.choice button+button{border-left:0;border-top:1px solid var(--rsvp-line-strong)}.chip{font-size:11px;padding:8px 13px}}.invite-gate{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:32px}.invite-gate-box{max-width:440px;text-align:center}.invite-gate-mark{font-family:var(--script);font-size:56px;color:var(--accent-ink);line-height:1;margin-bottom:24px}.invite-gate-box h1{font-family:var(--serif);font-size:clamp(32px,6vw,48px);font-weight:300;font-style:italic;margin-bottom:18px}.invite-gate-box p{font-family:var(--sans);font-size:15px;line-height:1.7;color:var(--muted)}.fade{opacity:0;transform:translateY(20px);transition:opacity .9s ease,transform .9s ease}.fade.in{opacity:1;transform:none}.adm{min-height:100vh;background:#f7f4ef;font-family:var(--sans);color:var(--ink)}.adm-login{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.adm-login-box{background:#fff;border:1px solid var(--line);padding:48px;width:100%;max-width:360px;display:flex;flex-direction:column;gap:16px}.adm-login-box h2{font-family:var(--serif);font-size:24px;font-weight:400;margin:0 0 4px}.adm-logo{font-family:var(--script);font-size:40px;color:var(--accent-ink);line-height:1;margin-bottom:4px}.adm-header{display:flex;align-items:center;gap:16px;padding:16px 32px;background:#fff;border-bottom:1px solid var(--line-soft)}.adm-logo-sm{font-family:var(--script);font-size:28px;color:var(--accent-ink);line-height:1}.adm-title{font-size:13px;letter-spacing:.06em;color:var(--muted);flex:1}.adm-btn-link{background:none;border:none;color:var(--muted);font-family:var(--sans);font-size:12px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;padding:4px 0}.adm-btn-link:hover{color:var(--ink)}.adm-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line-soft);border-bottom:1px solid var(--line-soft);margin-bottom:0}.adm-card{background:#fff;padding:28px 32px;text-align:center}.adm-card-n{font-family:var(--serif);font-size:48px;font-weight:300;line-height:1;color:var(--ink)}.adm-card-n.adm-yes{color:var(--accent-ink)}.adm-card-n.adm-no{color:#a05a2c}.adm-card-n.adm-muted{color:var(--muted)}.adm-card-l{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin-top:8px}.adm-card-sub{font-size:11px;color:var(--muted);opacity:.6;margin-top:4px}.adm-section{max-width:1200px;margin:32px auto;padding:0 32px}.adm-section-title{font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--muted);margin-bottom:16px;display:flex;align-items:center;gap:20px}.adm-tabs{display:flex;gap:16px;font-size:11px;letter-spacing:.1em;color:var(--muted)}.adm-drinks{background:#fff;border:1px solid var(--line-soft);display:inline-flex;flex-direction:column;min-width:260px}.adm-drink-row{display:flex;justify-content:space-between;align-items:center;padding:10px 20px;font-size:14px;border-bottom:1px solid var(--line-soft)}.adm-drink-row:last-child{border-bottom:0}.adm-drink-count{font-family:var(--serif);font-size:22px;color:var(--accent-ink);line-height:1}.adm-create{display:flex;gap:12px;align-items:center;max-width:560px}.adm-create .adm-input{flex:1}.adm-input{width:100%;background:#fff;border:1px solid var(--line);color:var(--ink);font-family:var(--sans);font-size:14px;padding:12px 14px;outline:none;transition:border-color .15s;box-sizing:border-box}.adm-input:focus{border-color:var(--accent-ink)}.adm-input::placeholder{color:var(--muted)}.adm-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:1px solid var(--ink);color:var(--ink);font-family:var(--sans);font-size:11px;letter-spacing:.22em;text-transform:uppercase;padding:12px 24px;cursor:pointer;transition:.15s;white-space:nowrap}.adm-btn:hover,.adm-btn.primary{background:var(--ink);color:#fff}.adm-btn.primary:hover{background:var(--accent-ink)}.adm-btn:disabled{opacity:.4;cursor:not-allowed}.adm-err{font-size:12px;color:#c0392b;letter-spacing:.04em;margin:0}.adm-table-wrap{overflow-x:auto;border:1px solid var(--line-soft);background:#fff}.adm-table{width:100%;border-collapse:collapse;font-size:14px}.adm-table th{text-align:left;font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);font-weight:500;padding:12px 16px;border-bottom:1px solid var(--line-soft);background:#faf8f5;white-space:nowrap}.adm-table td{padding:14px 16px;border-bottom:1px solid var(--line-soft);vertical-align:top}.adm-table tr:last-child td{border-bottom:0}.adm-table tr:hover td{background:#faf8f5}.adm-td-name{font-weight:500;white-space:nowrap}.adm-td-note{display:block;font-weight:400;font-size:12px;color:var(--muted);margin-top:2px}.adm-td-drinks{color:var(--ink-2);max-width:180px}.adm-td-comment{color:var(--muted);max-width:240px;font-style:italic;font-size:13px}.adm-td-date{white-space:nowrap;color:var(--muted);font-size:13px}.adm-status{display:inline-block;padding:3px 10px;border-radius:999px;font-size:11px;letter-spacing:.06em;white-space:nowrap}.st-yes{background:#eaf3e6;color:#2f6b1f}.st-no{background:#fdf0e8;color:#a05a2c}.st-none{background:#f0ede8;color:var(--muted)}.st-edit{background:#eef0fb;color:#3a4aab}.adm-copy{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:1px solid var(--line);color:var(--muted);font-family:var(--sans);font-size:11px;letter-spacing:.1em;text-transform:uppercase;padding:6px 12px;cursor:pointer;transition:.15s;white-space:nowrap}.adm-copy:hover{border-color:var(--ink);color:var(--ink)}.adm-row-actions{display:flex;gap:8px;align-items:center}.adm-delete{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:1px solid transparent;color:#a05a2c;font-family:var(--sans);font-size:11px;letter-spacing:.1em;text-transform:uppercase;padding:6px 12px;cursor:pointer;transition:.15s;white-space:nowrap}.adm-delete:hover{border-color:#a05a2c;background:#fdf0e8}.adm-delete:disabled{opacity:.5;cursor:not-allowed}.adm-empty{text-align:center;color:var(--muted);font-style:italic;padding:32px!important}@media (max-width: 700px){.adm-cards{grid-template-columns:1fr 1fr}.adm-section{padding:0 16px}.adm-header{padding:12px 16px}.adm-login-box{padding:32px 24px}.adm-create{flex-direction:column;align-items:stretch}}
