:root {
  --ink: #24201e;
  --muted: #746d68;
  --paper: #f7f3ee;
  --paper-deep: #eee5dc;
  --rose: #9f5967;
  --rose-dark: #7d414f;
  --line: rgba(70, 54, 46, .13);
  --serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
  --sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
html { min-height: 100%; scroll-behavior: smooth; }
body { margin: 0; min-height: 100%; font-family: var(--sans); color: var(--ink); background: var(--paper); -webkit-font-smoothing: antialiased; }
button, input, textarea, select { font: inherit; }
a { color: inherit; text-decoration: none; }
button { color: inherit; }
.public-body { position: relative; overflow-x: hidden; }
.ambient { position: fixed; z-index: -1; width: 34rem; height: 34rem; border-radius: 50%; filter: blur(85px); opacity: .3; pointer-events: none; }
.ambient-one { top: -16rem; left: -12rem; background: #e8c8c5; }
.ambient-two { right: -18rem; bottom: -14rem; background: #d8d2bb; }

.public-header { width: min(1180px, calc(100% - 40px)); height: 84px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between; position: relative; z-index: 20; }
.guest-header { justify-content: center; height: 70px; }
.guest-header .public-brand { pointer-events: none; }
.guest-surface .public-main { min-height: calc(100vh - 70px); }
.public-brand { display: inline-flex; align-items: center; gap: 10px; font-family: var(--serif); font-size: 19px; letter-spacing: .02em; }
.brand-mark { width: 30px; height: 30px; border: 1px solid rgba(159, 89, 103, .26); border-radius: 50%; display: grid; place-items: center; color: var(--rose); font: 11px var(--sans); }
.public-nav { display: flex; align-items: center; gap: 36px; font-size: 14px; color: #514b47; }
.public-nav a { position: relative; padding: 10px 0; }
.public-nav a::after { content: ""; position: absolute; left: 50%; right: 50%; bottom: 3px; height: 1px; background: var(--rose); transition: .25s ease; }
.public-nav a:hover::after { left: 0; right: 0; }
.nav-toggle { display: none; background: none; border: 0; width: 42px; height: 42px; padding: 10px; }
.nav-toggle span { display: block; width: 21px; height: 1px; margin: 6px auto; background: var(--ink); transition: .2s; }
.public-main { min-height: calc(100vh - 164px); }

.wedding-hero { width: min(1180px, calc(100% - 40px)); margin: 12px auto 0; min-height: calc(100vh - 160px); display: grid; grid-template-columns: 1.05fr .95fr; align-items: center; gap: clamp(40px, 8vw, 110px); padding: 46px 0 90px; }
.hero-copy { max-width: 650px; }
.hero-kicker { display: flex; align-items: center; gap: 12px; color: var(--rose-dark); font-size: 11px; font-weight: 650; letter-spacing: .2em; text-transform: uppercase; }
.hero-kicker::before { content: ""; width: 34px; height: 1px; background: currentColor; }
.hero-title { margin: 25px 0 20px; font: 400 clamp(59px, 8vw, 108px)/.88 var(--serif); letter-spacing: -.055em; }
.hero-title em { display: block; color: var(--rose); font-weight: 400; }
.hero-lead { max-width: 540px; margin: 0; color: var(--muted); font-size: clamp(16px, 1.7vw, 20px); line-height: 1.65; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 34px; }
.primary-link, .secondary-link { min-height: 52px; padding: 0 24px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; gap: 13px; font-size: 14px; font-weight: 650; transition: transform .2s, box-shadow .2s, background .2s; }
.primary-link { color: white; background: var(--ink); box-shadow: 0 12px 28px rgba(36, 32, 30, .16); }
.primary-link:hover { transform: translateY(-2px); box-shadow: 0 16px 34px rgba(36, 32, 30, .22); }
.secondary-link { border: 1px solid var(--line); background: rgba(255,255,255,.36); }
.secondary-link:hover { background: white; transform: translateY(-2px); }
.hero-art { position: relative; min-height: 610px; display: grid; place-items: center; }
.art-arch { position: absolute; inset: 0 9% 0; overflow: hidden; border-radius: 240px 240px 28px 28px; background: linear-gradient(145deg, #d8c8bd, #b5988d 52%, #80675f); box-shadow: 0 32px 80px rgba(74, 53, 44, .2); }
.art-arch::before { content: ""; position: absolute; inset: 0; background: radial-gradient(circle at 68% 22%, rgba(255,255,255,.58), transparent 25%), linear-gradient(32deg, rgba(54,37,31,.55), transparent 46%); }
.art-arch>span { position: absolute; inset: 0; display: grid; place-items: center; color: rgba(255,255,255,.9); font: italic 400 clamp(54px, 7vw, 92px) var(--serif); letter-spacing: -.06em; text-shadow: 0 8px 28px rgba(35,22,18,.2); }
.date-card { position: absolute; left: 0; bottom: 48px; width: 172px; padding: 20px; border: 1px solid rgba(255,255,255,.7); border-radius: 20px; background: rgba(250,247,243,.82); backdrop-filter: blur(18px); box-shadow: 0 16px 42px rgba(67,48,40,.14); }
.date-card small { display: block; color: var(--muted); font-size: 10px; letter-spacing: .16em; text-transform: uppercase; }
.date-card strong { display: block; margin-top: 5px; font: 27px var(--serif); }
.love-note { position: absolute; right: 0; top: 66px; width: 128px; height: 128px; border-radius: 50%; display: grid; place-items: center; text-align: center; color: white; background: rgba(125,65,79,.9); box-shadow: 0 18px 40px rgba(91,46,56,.24); font: italic 16px/1.2 var(--serif); transform: rotate(7deg); }

.public-footer { width: min(1180px, calc(100% - 40px)); min-height: 80px; margin: 0 auto; border-top: 1px solid var(--line); display: flex; align-items: center; justify-content: center; gap: 14px; color: var(--muted); font-size: 12px; letter-spacing: .08em; text-transform: uppercase; }
.footer-heart { color: var(--rose); font-size: 9px; }

.rsvp-page{width:min(1080px,calc(100% - 40px));margin:0 auto;padding:55px 0 90px;display:grid;grid-template-columns:.78fr 1.22fr;gap:clamp(45px,8vw,105px);align-items:start}.rsvp-intro{position:sticky;top:110px;padding-top:38px}.rsvp-intro h1{margin:22px 0 18px;font:400 clamp(48px,6vw,76px)/.95 var(--serif);letter-spacing:-.05em}.rsvp-intro p{color:var(--muted);font-size:17px;line-height:1.7}.rsvp-flourish{margin-top:29px;display:flex;align-items:center;gap:12px;color:var(--rose);font-size:10px}.rsvp-flourish span{width:44px;height:1px;background:var(--line)}.rsvp-card{min-height:500px;padding:clamp(24px,5vw,48px);border:1px solid rgba(255,255,255,.72);border-radius:28px;background:rgba(255,255,255,.68);backdrop-filter:blur(24px);box-shadow:0 28px 80px rgba(70,49,40,.1)}.rsvp-form{display:flex;flex-direction:column;gap:27px}.rsvp-fields{display:grid;gap:15px}.rsvp-fields.two{grid-template-columns:1fr 1fr}.rsvp-form label,.rsvp-field{display:flex;flex-direction:column;gap:8px}.rsvp-form label>span:first-child,.rsvp-field>span{font-size:12px;font-weight:700}.rsvp-form input[type=text],.rsvp-form input[type=tel]{height:52px;padding:0 15px;border:1px solid var(--line);border-radius:13px;background:rgba(255,255,255,.76);outline:none;transition:.2s}.rsvp-form input:focus{border-color:rgba(159,89,103,.6);box-shadow:0 0 0 4px rgba(159,89,103,.08);background:white}.rsvp-field small{color:var(--muted);font-size:10px}.attendance-choice,.guest-picker{margin:0;padding:0;border:0}.attendance-choice legend,.guest-picker legend{margin-bottom:13px;font:500 16px var(--serif)}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.choice-card{position:relative;min-height:145px;padding:19px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.46);cursor:pointer;transition:.2s}.choice-card:hover{transform:translateY(-2px);background:white}.choice-card input{position:absolute;opacity:0}.choice-card:has(input:checked){border-color:var(--rose);background:#fff8f9;box-shadow:0 0 0 3px rgba(159,89,103,.07)}.choice-card .choice-icon{color:var(--rose);font-size:20px}.choice-card strong{font-size:12px}.choice-card small{color:var(--muted);font-size:9px;line-height:1.4}.guest-options{display:flex;flex-wrap:wrap;gap:9px}.guest-options label{cursor:pointer}.guest-options input{position:absolute;opacity:0}.guest-options span{width:48px;height:48px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:white;font-size:13px;transition:.2s}.guest-options input:checked+span{color:white;border-color:var(--rose);background:var(--rose)}.rsvp-submit{height:54px;padding:0 20px;border:0;border-radius:14px;display:flex;align-items:center;justify-content:space-between;color:white;background:var(--ink);cursor:pointer;font-weight:700;font-size:13px;transition:.2s}.rsvp-submit:hover{transform:translateY(-2px);box-shadow:0 14px 26px rgba(36,32,30,.17)}.rsvp-submit:disabled{opacity:.55}.privacy-note{text-align:center!important;margin:-15px 0 0!important;color:var(--muted);font-size:9px!important}.rsvp-error{padding:12px 14px;border-radius:11px;color:#8f3028;background:#fff0ee;font-size:11px}.rsvp-success,.closed-state{min-height:400px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.rsvp-success[hidden],.closed-state[hidden]{display:none}.success-heart,.closed-state>span{width:68px;height:68px;display:grid;place-items:center;border-radius:50%;color:var(--rose);background:#f6e7ea;font-size:24px}.rsvp-success h2,.closed-state h2{margin:22px 0 8px;font:400 34px var(--serif)}.rsvp-success p,.closed-state p{max-width:360px;color:var(--muted);line-height:1.6}.rsvp-success a{margin-top:18px;padding-bottom:3px;border-bottom:1px solid var(--ink);font-size:11px}
.memories-page{width:min(1080px,calc(100% - 40px));min-height:calc(100vh - 164px);margin:0 auto;padding:70px 0 100px;display:grid;grid-template-columns:1fr 1fr;gap:clamp(50px,9vw,120px);align-items:center}.memory-visual{position:relative;height:570px}.memory-frame{position:absolute;display:grid;place-items:center;color:rgba(255,255,255,.9);font:italic 50px var(--serif);box-shadow:0 25px 65px rgba(58,41,34,.18)}.memory-frame.one{inset:0 21% 12% 0;border-radius:180px 180px 20px 20px;background:linear-gradient(145deg,#d2bbb0,#755951)}.memory-frame.two{right:0;bottom:0;width:45%;height:42%;border:10px solid var(--paper);border-radius:20px;background:linear-gradient(145deg,#9b7175,#4d3840);transform:rotate(4deg)}.memory-frame.three{right:1%;top:5%;width:120px;height:150px;border:8px solid var(--paper);border-radius:15px;background:#c9ad95;transform:rotate(7deg);font-size:25px}.memory-copy h1{margin:22px 0 22px;font:400 clamp(46px,6vw,72px)/.98 var(--serif);letter-spacing:-.045em}.memory-copy h1 em{color:var(--rose);font-weight:400}.memory-copy>p{color:var(--muted);font-size:17px;line-height:1.7}.coming-soon{margin-top:30px;padding:16px;border:1px solid var(--line);border-radius:14px;display:flex;align-items:center;gap:13px;background:rgba(255,255,255,.45)}.coming-soon>span{width:9px;height:9px;border-radius:50%;background:#dfa847;box-shadow:0 0 0 5px rgba(223,168,71,.12)}.coming-soon strong,.coming-soon small{display:block}.coming-soon strong{font-size:11px}.coming-soon small{margin-top:3px;color:var(--muted);font-size:9px}

.memories-upload-page{align-items:start}.memories-upload-page .memory-copy{padding:10px 0}.memory-upload-card{margin-top:28px;padding:20px;border:1px solid rgba(255,255,255,.86);border-radius:22px;background:rgba(255,255,255,.6);box-shadow:0 24px 60px rgba(70,49,40,.09);backdrop-filter:blur(20px)}.uploader-name-field{display:flex;flex-direction:column;gap:8px}.uploader-name-field>span{font-size:12px;font-weight:700}.uploader-name-field small{color:var(--muted);font-weight:500}.uploader-name-field input{height:48px;padding:0 14px;border:1px solid var(--line);border-radius:12px;outline:0;background:rgba(255,255,255,.76);font-size:13px;transition:.2s}.uploader-name-field input:focus{border-color:rgba(159,89,103,.6);box-shadow:0 0 0 4px rgba(159,89,103,.08);background:#fff}.file-drop-zone{position:relative;min-height:198px;margin-top:16px;padding:25px 20px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;border:1px dashed rgba(159,89,103,.45);border-radius:16px;background:linear-gradient(135deg,rgba(255,251,251,.87),rgba(248,241,235,.82));text-align:center;cursor:pointer;transition:.2s}.file-drop-zone:hover,.file-drop-zone:focus-within{border-color:var(--rose);background:#fffafa;box-shadow:0 0 0 4px rgba(159,89,103,.06)}.file-drop-zone input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.upload-symbol{width:38px;height:38px;display:grid;place-items:center;border-radius:50%;color:var(--rose);background:#f5e7e9;font-size:20px}.file-drop-zone strong{margin-top:3px;font:500 20px var(--serif)}.file-drop-zone>small{max-width:250px;color:var(--muted);font-size:11px;line-height:1.45}.file-select-button{margin-top:8px;padding:8px 13px;border:1px solid rgba(159,89,103,.25);border-radius:999px;color:var(--rose-dark);background:rgba(255,255,255,.74);font-size:11px;font-weight:700}.upload-limits{margin:13px 1px 0;color:var(--muted);font-size:10px;line-height:1.5}.upload-list{display:grid;gap:9px;margin:17px 0 0;padding:0;list-style:none}.upload-list:empty{display:none}.upload-empty{margin:17px 0 0;color:var(--muted);font-size:11px}.upload-empty[hidden]{display:none}.upload-item{display:grid;grid-template-columns:31px minmax(0,1fr);gap:10px;padding:11px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.52)}.upload-item.is-complete{border-color:rgba(69,123,88,.24);background:#f7fcf8}.upload-item.is-error{border-color:rgba(161,69,59,.24);background:#fff8f6}.upload-item-icon{width:31px;height:31px;display:grid;place-items:center;border-radius:9px;color:var(--rose);background:#f5e9e9;font-size:14px}.upload-item-body{min-width:0}.upload-item-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.upload-item-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:700}.upload-item-size,.upload-item-state{flex:0 0 auto;color:var(--muted);font-size:9px}.upload-item.is-complete .upload-item-state{color:#38734c}.upload-item.is-error .upload-item-state{color:#9b433b}.upload-progress{height:4px;margin-top:8px;overflow:hidden;border-radius:99px;background:#ebe4df}.upload-progress>span{display:block;width:0;height:100%;border-radius:inherit;background:var(--rose);transition:width .18s ease}.upload-item.is-complete .upload-progress>span{background:#4d9162}.upload-item-error{display:block;margin-top:6px;color:#9b433b;font-size:9px;line-height:1.4}.upload-message,.upload-success{margin-top:14px;padding:11px 12px;border-radius:11px;font-size:11px;line-height:1.5}.upload-message{color:#8f3028;background:#fff0ee}.upload-success{color:#306941;background:#eff8f0}.memory-upload-submit{width:100%;height:52px;margin-top:17px;padding:0 18px;border:0;border-radius:13px;display:flex;align-items:center;justify-content:space-between;color:#fff;background:var(--ink);font-size:13px;font-weight:700;cursor:pointer;transition:.2s}.memory-upload-submit:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 14px 26px rgba(36,32,30,.17)}.memory-upload-submit:disabled{cursor:not-allowed;opacity:.48}.upload-privacy-note{margin:13px 0 0;color:var(--muted);font-size:9px;text-align:center}.memory-closed-state{margin-top:30px;padding:17px;display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:15px;background:rgba(255,255,255,.45);text-align:left}.memory-closed-state>span{width:35px;height:35px;display:grid;place-items:center;flex:0 0 auto;border-radius:50%;color:var(--rose);background:#f6e7ea}.memory-closed-state strong,.memory-closed-state small{display:block}.memory-closed-state strong{font-size:12px}.memory-closed-state small{margin-top:4px;color:var(--muted);font-size:10px;line-height:1.4}

@media (max-width: 820px) {
  .public-header { height: 72px; }
  .nav-toggle { display: block; }
  .public-nav { display: none; position: absolute; top: 66px; left: 0; right: 0; padding: 16px; flex-direction: column; gap: 3px; align-items: stretch; border: 1px solid var(--line); border-radius: 18px; background: rgba(250,247,243,.96); backdrop-filter: blur(20px); box-shadow: 0 18px 42px rgba(50,38,33,.12); }
  .public-nav.open { display: flex; }
  .public-nav a { padding: 13px 14px; border-radius: 11px; }
  .public-nav a:hover { background: white; }
  .wedding-hero { grid-template-columns: 1fr; padding-top: 38px; gap: 58px; }
  .hero-copy { text-align: center; margin: 0 auto; }
  .hero-kicker, .hero-actions { justify-content: center; }
  .hero-title { font-size: clamp(57px, 18vw, 82px); }
  .hero-art { min-height: 510px; width: min(100%, 470px); margin: 0 auto; }
  .art-arch { inset: 0 7%; }
  .love-note { width: 108px; height: 108px; right: -5px; }
  .rsvp-page,.memories-page{grid-template-columns:1fr}.rsvp-intro{position:static;text-align:center;padding-top:10px}.rsvp-intro .hero-kicker,.rsvp-flourish{justify-content:center}.rsvp-intro p{max-width:560px;margin-left:auto;margin-right:auto}.memory-visual{height:480px;width:min(100%,500px);margin:0 auto}.memory-copy{text-align:center}.memory-copy .hero-kicker{justify-content:center}.coming-soon{text-align:left}.memories-upload-page .memory-copy{padding-top:0}.memory-upload-card{text-align:left}
}

@media (max-width: 520px) {
  .public-header, .wedding-hero, .public-footer { width: min(100% - 28px, 1180px); }
  .wedding-hero { padding-bottom: 58px; }
  .hero-actions { flex-direction: column; }
  .primary-link, .secondary-link { width: 100%; }
  .hero-art { min-height: 430px; }
  .date-card { left: -2px; bottom: 25px; width: 150px; }
  .love-note { top: 36px; }
  .rsvp-page,.memories-page{width:min(100% - 24px,1080px);padding-top:30px}.rsvp-card{padding:23px 16px;border-radius:21px}.rsvp-fields.two,.choice-grid{grid-template-columns:1fr}.choice-card{min-height:116px}.memory-visual{height:390px}.memory-frame.three{width:90px;height:115px}.memory-copy h1{font-size:43px}
}

@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; } }
