*{box-sizing:border-box;}
  html,body{height:100%;}
  body{ margin:0; background:var(--ivory); color:var(--text-dark); font-family:'Jost','Helvetica Neue',Arial,sans-serif; -webkit-font-smoothing:antialiased; overflow:hidden; }
  h1,h2,h3,.display{ font-family:'Fraunces','Georgia',serif; font-weight:500; margin:0; }
  .eyebrow{ font-family:'Jost',sans-serif; text-transform:uppercase; letter-spacing:0.26em; font-size:11.5px; font-weight:500; }
  button{font-family:inherit;} svg{display:block;}
  :focus-visible{ outline:2px solid var(--highlight-color); outline-offset:3px; }

  .app{ position:relative; width:100%; height:100vh; height:100svh; }

  .col-image{ position:fixed; top:0; left:0; width:var(--col-split); height:100vh; height:100svh; overflow:hidden; background:var(--primary-color-deeper); z-index:1; }
  .slide{ position:absolute; inset:0; opacity:0; transition: opacity 1.4s var(--ease); }
  .slide.active{ opacity:1; }
  .slide .bg{ position:absolute; inset:0; background-size:cover; background-position:center; }
  .slide .bg::after{ content:""; position:absolute; inset:0; background: linear-gradient(180deg, rgba(20,6,12,0.15) 0%, rgba(20,6,12,0.15) 55%, rgba(20,6,12,0.82) 100%); }
  .slide.s1 .bg{ background: radial-gradient(120% 90% at 20% 10%, rgba(201,162,75,0.35), transparent 55%), linear-gradient(150deg, #6b2440, #3a0f21 60%, #200712); }
  .slide.s2 .bg{ background: radial-gradient(100% 80% at 80% 15%, rgba(230,211,161,0.28), transparent 55%), linear-gradient(160deg, #4a1329, #2a0a17 65%, #170510); }
  .slide.s3 .bg{ background: radial-gradient(110% 90% at 50% 90%, rgba(31,77,62,0.35), transparent 60%), linear-gradient(200deg, #5c1a34, #2a0a17); }
  .slide.s4 .bg{ background: radial-gradient(130% 100% at 10% 90%, rgba(201,162,75,0.3), transparent 55%), linear-gradient(210deg, #3a0f21, #170510 70%); }
  .s1bg{ background: radial-gradient(120% 90% at 20% 10%, rgba(201,162,75,0.35), transparent 55%), linear-gradient(150deg, #6b2440, #3a0f21 60%, #200712); }
  .s2bg{ background: radial-gradient(100% 80% at 80% 15%, rgba(230,211,161,0.28), transparent 55%), linear-gradient(160deg, #4a1329, #2a0a17 65%, #170510); }
  .s3bg{ background: radial-gradient(110% 90% at 50% 90%, rgba(31,77,62,0.35), transparent 60%), linear-gradient(200deg, #5c1a34, #2a0a17); }
  .s4bg{ background: radial-gradient(130% 100% at 10% 90%, rgba(201,162,75,0.3), transparent 55%), linear-gradient(210deg, #3a0f21, #170510 70%); }
  .slide-pattern{ position:absolute; inset:0; background-image: linear-gradient(135deg, transparent 48%, var(--highlight-color-line) 48%, var(--highlight-color-line) 52%, transparent 52%); background-size:52px 52px; opacity:0.06; }
  .slide-caption{ position:absolute; left:6%; bottom:16%; right:20%; color:var(--text-light); z-index:2; }
  .slide-caption .eyebrow{ color:var(--highlight-color-soft); margin-bottom:10px; }
  .slide-caption h1{ font-size: clamp(30px, 3.6vw, 50px); line-height:1.05; }
  .slide-caption .amp{ color:var(--highlight-color); font-style:italic; padding:0 8px; }
  .slide-caption p{ margin-top:14px; font-size:14.5px; color:var(--text-muted); max-width:44ch; line-height:1.6; }
  .slide-dots{ position:absolute; left:6%; bottom:9%; display:flex; gap:8px; z-index:3; }
  .slide-dots button{ width:22px; height:2px; background:rgba(246,239,227,0.35); border:none; cursor:pointer; padding:0; transition: background 0.3s ease; }
  .slide-dots button.active{ background:var(--highlight-color); }

  .cta-overlay{ position:absolute; right:5%; bottom:8%; z-index:4; display:flex; align-items:center; gap:10px; flex-wrap:wrap; justify-content:flex-end; }
  .date-pill{ display:flex; align-items:center; background: rgba(20,6,12,0.55); border:1px solid var(--highlight-color-line); backdrop-filter: blur(6px); border-radius:999px; padding:6px; }
  .date-pill .d{ padding:8px 16px; font-size:12.5px; color:var(--text-light); letter-spacing:0.03em; white-space:nowrap; }
  .date-pill button{ background:var(--highlight-color); color:var(--primary-color-deeper); border:none; border-radius:999px; padding:10px 20px; font-size:11.5px; letter-spacing:0.1em; text-transform:uppercase; font-weight:600; cursor:pointer; transition: background 0.25s ease, transform 0.2s ease; white-space:nowrap; }
  .date-pill button:hover{ background:var(--highlight-color-soft); transform:translateY(-1px); }
  .pill-btn.secondary{ background: rgba(20,6,12,0.4); color:var(--text-light); border:1px solid var(--highlight-color-line); backdrop-filter: blur(6px); border-radius:999px; padding:11px 20px; font-size:11px; letter-spacing:0.1em; text-transform:uppercase; cursor:pointer; white-space:nowrap; transition: all 0.25s ease; }
  .pill-btn.secondary:hover{ border-color:var(--highlight-color); color:var(--highlight-color-soft); }

  .menu-btn{ position:absolute; top:5%; left:6%; z-index:6; display:flex; align-items:center; gap:10px; background:rgba(20,6,12,0.45); border:1px solid var(--highlight-color-line); backdrop-filter: blur(6px); color:var(--text-light); padding:12px 18px; border-radius:999px; cursor:pointer; font-size:11px; letter-spacing:0.2em; text-transform:uppercase; }
  .menu-btn .bars{ display:flex; flex-direction:column; gap:3px; }
  .menu-btn .bars span{ width:16px; height:1.5px; background:var(--highlight-color); display:block; }

  .gallery-btn{ position:absolute; top:5%; right:5%; z-index:6; display:flex; align-items:center; gap:9px; background:rgba(20,6,12,0.45); border:1px solid var(--highlight-color-line); backdrop-filter: blur(6px); color:var(--text-light); padding:12px 16px; border-radius:999px; cursor:pointer; font-size:11px; letter-spacing:0.16em; text-transform:uppercase; transition: border-color 0.25s ease, color 0.25s ease; }
  .gallery-btn:hover{ border-color:var(--highlight-color); color:var(--highlight-color-soft); }
  .gallery-btn svg{ width:15px; height:15px; stroke:var(--highlight-color); flex-shrink:0; }

  .gallery-modal{ position:fixed; inset:0; z-index:50; background: rgba(20,6,12,0.82); backdrop-filter: blur(6px); display:flex; align-items:center; justify-content:center; opacity:0; visibility:hidden; pointer-events:none; transition: opacity 0.4s ease; padding:5vh 4vw; }
  .gallery-modal.open{ opacity:1; visibility:visible; pointer-events:auto; }
  .gallery-inner{ width:100%; max-width:920px; max-height:90vh; display:flex; flex-direction:column; }
  .gallery-header{ display:flex; align-items:center; justify-content:space-between; margin-bottom:20px; }
  .gallery-header .gtitle{ font-family:'Fraunces',serif; font-style:italic; font-size:24px; color:var(--highlight-color-soft); }
  .gallery-close{ background:rgba(255,255,255,0.08); border:1px solid var(--highlight-color-line); color:var(--text-light); width:38px; height:38px; border-radius:50%; font-size:18px; cursor:pointer; line-height:1; transition: border-color 0.2s ease; }
  .gallery-close:hover{ border-color:var(--highlight-color); }
  .gallery-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:14px; overflow-y:auto; padding-right:4px; }
  .gallery-thumb{ position:relative; aspect-ratio:4/3; border:1px solid var(--highlight-color-line); cursor:pointer; overflow:hidden; padding:0; background-size:cover; background-position:center; transition: transform 0.3s ease; height: 300px; }
  .gallery-thumb:hover{ transform:scale(1.02); }
  .gallery-thumb::after{ content:""; position:absolute; inset:0; background: linear-gradient(180deg, rgba(20,6,12,0.05) 40%, rgba(20,6,12,0.75) 100%); }
  .gallery-thumb .tlabel{ position:absolute; left:14px; bottom:12px; z-index:2; color:var(--text-light); font-family:'Fraunces',serif; font-size:15px; text-align:left; }
  .gallery-thumb .tlabel .eb{ display:block; font-family:'Jost',sans-serif; text-transform:uppercase; letter-spacing:0.16em; font-size:9.5px; color:var(--highlight-color-soft); margin-bottom:4px; }
  .gallery-lightbox{ display:none; flex-direction:column; align-items:center; justify-content:center; flex:1; position:relative; }
  .gallery-lightbox.show{ display:flex; }
  .lb-image{ width:100%; max-width:640px; aspect-ratio:4/3; border:1px solid var(--highlight-color-line); background-size:cover; background-position:center; position:relative; }
  .lb-image::after{ content:""; position:absolute; inset:0; background: linear-gradient(180deg, rgba(20,6,12,0.1) 45%, rgba(20,6,12,0.78) 100%); }
  .lb-caption{ position:relative; z-index:1; text-align:center; margin-top:18px; color:var(--text-light); }
  .lb-caption .eb{ font-family:'Jost',sans-serif; text-transform:uppercase; letter-spacing:0.2em; font-size:10.5px; color:var(--highlight-color-soft); }
  .lb-caption h3{ margin-top:8px; font-family:'Fraunces',serif; font-size:20px; }
  .lb-controls{ display:flex; align-items:center; gap:20px; margin-top:22px; }
  .lb-nav{ background:rgba(255,255,255,0.08); border:1px solid var(--highlight-color-line); color:var(--text-light); width:40px; height:40px; border-radius:50%; font-size:18px; cursor:pointer; transition: border-color 0.2s ease; }
  .lb-nav:hover{ border-color:var(--highlight-color); }
  .lb-back{ background:none; border:none; color:var(--highlight-color-soft); font-size:11px; letter-spacing:0.14em; text-transform:uppercase; cursor:pointer; border-bottom:1px solid var(--highlight-color-line); padding-bottom:2px; }

  .side-menu{ position:fixed; top:0; left:0; width:min(340px, 82vw); height:100vh; height:100svh; background:var(--ivory); z-index:20; padding:44px 34px; transform:translateX(-105%); transition: transform 0.55s var(--ease); box-shadow: 30px 0 60px rgba(0,0,0,0.25); overflow-y:auto; }
  .side-menu.open{ transform:translateX(0); }
  .side-menu .close{ position:absolute; top:32px; right:28px; background:none; border:none; font-size:20px; color:var(--primary-color); cursor:pointer; }
  .side-menu .brand{ font-family:'Fraunces',serif; font-style:italic; font-size:26px; color:var(--primary-color); margin-bottom:44px; }
  .side-menu nav{ display:flex; flex-direction:column; gap:6px; }
  .side-menu nav a{ display:block; padding:12px 2px; color:var(--text-dark); text-decoration:none; font-size:16px; border-bottom:1px solid rgba(92,26,52,0.1); transition: color 0.2s ease, padding-left 0.2s ease; }
  .side-menu nav a:hover{ color:var(--primary-color); padding-left:6px; }
  .scrim{ position:fixed; inset:0; background:rgba(20,6,12,0.35); z-index:15; opacity:0; pointer-events:none; transition:opacity 0.4s ease; }
  .scrim.show{ opacity:1; pointer-events:auto; }

  .col-content{ position:relative; margin-left:var(--col-split); width:calc(100% - var(--col-split)); height:100vh; height:100svh; overflow-y:auto; background:var(--ivory); z-index:2; scroll-behavior:smooth; }

  .welcome-section{ height:100vh; height:100svh; display:flex; align-items:center; justify-content:center; text-align:center; padding: 40px 8%; position:relative; overflow:hidden;
    background: radial-gradient(50% 42% at 12% 88%, rgba(92,26,52,0.07), transparent 60%), radial-gradient(60% 46% at 50% 15%, rgba(201,162,75,0.16), transparent 62%), linear-gradient(165deg, var(--ivory) 0%, var(--ivory-dim) 100%); }
  .welcome-section::before{ content:""; position:absolute; inset:0; background-image: linear-gradient(135deg, transparent 48%, var(--highlight-color-line) 48%, var(--highlight-color-line) 52%, transparent 52%); background-size:46px 46px; opacity:0.05; pointer-events:none; }
  .welcome-frame{ position:relative; z-index:1; max-width:440px; padding:54px 38px; background: rgba(255,255,255,0.4); border:1px solid var(--highlight-color-line); box-shadow: 0 40px 70px -35px rgba(42,10,23,0.35); opacity:0; transform:translateY(16px); animation: frameIn 1s var(--ease) forwards 0.15s; }
  .welcome-frame::before{ content:""; position:absolute; inset:9px; border:1px solid rgba(201,162,75,0.28); pointer-events:none; } 
  @keyframes frameIn{ to{ opacity:1; transform:translateY(0); } }
  .welcome-frame .eyebrow{ color:var(--primary-color); position:relative; z-index:1; }
  .welcome-frame h1{ margin-top:16px; font-size: clamp(34px, 4vw, 54px); color:var(--ink); line-height:1.05; position:relative; z-index:1; }
  .welcome-frame h1 .amp{ color:var(--highlight-color); font-style:italic; padding:0 6px; }
  .welcome-frame h3 { margin-top:10px; font-size: clamp(18px, 2vw, 24px); color:var(--ink); line-height:1.05; position:relative; z-index:1; }
  .welcome-frame .tagline{ margin-top:14px; font-size:14.5px; color:var(--text-dark-muted); line-height:1.7; position:relative; z-index:1; }
  .ornament{ display:flex; align-items:center; justify-content:center; gap:10px; margin:26px 0 22px; position:relative; z-index:1; }
  .ornament .oline{ width:38px; height:1px; background:var(--highlight-color-line); }
  .ornament .odiamond{ width:6px; height:6px; background:var(--highlight-color); transform:rotate(45deg); }
  .welcome-meta{ display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:10px; position:relative; z-index:1; }
  .meta-chip{ display:inline-flex; align-items:center; gap:7px; font-size:12px; letter-spacing:0.02em; color:var(--primary-color); background: rgba(92,26,52,0.07); border:1px solid rgba(92,26,52,0.16); padding:8px 14px; border-radius:999px; white-space:nowrap; }
  .meta-chip svg{ width:13px; height:13px; stroke:var(--highlight-color); flex-shrink:0; }
  .countdown{ display:flex; gap:16px; justify-content:center; margin-top:26px; position:relative; z-index:1; }
  .countdown .unit{ text-align:center; min-width:44px; }
  .countdown .num{ font-family:'Fraunces',serif; font-size:22px; color:var(--primary-color); }
  .countdown .lab{ font-size:9px; letter-spacing:0.16em; text-transform:uppercase; color:var(--text-dark-muted); margin-top:4px; }
  .cta-btn{ margin-top:30px; background:var(--primary-color); color:var(--text-light); border:1px solid var(--primary-color); padding:14px 32px; border-radius:999px; font-size:11.5px; letter-spacing:0.18em; text-transform:uppercase; cursor:pointer; transition: background 0.25s ease, transform 0.2s ease; position:relative; z-index:1; }
  .cta-btn:hover{ background:var(--primary-color-deep); transform:translateY(-1px); }

  .section{ padding: 76px 8% 76px; max-width:640px; }
  .section + .section{ border-top:1px solid rgba(92,26,52,0.12); }
  .section .eyebrow{ color:var(--primary-color); margin-bottom:12px; }
  .section h2{ font-size: clamp(26px, 2.6vw, 34px); color:var(--ink); }
  .rule{ width:50px; height:2px; background:var(--highlight-color); margin:20px 0 24px; }
  .section p{ font-size:15.5px; line-height:1.75; color:var(--text-dark-muted); }

  .detail-row{ display:flex; gap:14px; margin-top:20px; align-items:flex-start; }
  .detail-row .icon{ width:32px; height:32px; border-radius:50%; border:1px solid var(--highlight-color); color:var(--primary-color); display:flex; align-items:center; justify-content:center; flex-shrink:0; font-size:14px; }
  .detail-row .txt strong{ display:block; font-family:'Fraunces',serif; font-weight:500; font-size:16px; color:var(--ink); }
  .detail-row .txt span{ color:var(--text-dark-muted); font-size:14px; }

  .timeline{ margin-top:30px; display:flex; flex-direction:column; }
  .t-item{ display:grid; grid-template-columns: 78px auto 1fr; gap:14px; padding:16px 0; border-top:1px solid rgba(92,26,52,0.12); align-items:flex-start; }
  .t-item:first-child{ border-top:none; }
  .t-time{ font-family:'Fraunces',serif; font-size:14.5px; color:var(--primary-color); white-space:nowrap; }
  .t-dot{ width:8px; height:8px; border-radius:50%; background:var(--highlight-color); margin-top:6px; }
  .t-txt strong{ display:block; font-size:15px; color:var(--ink); font-family:'Fraunces',serif; font-weight:500; }
  .t-txt span{ font-size:13.5px; color:var(--text-dark-muted); }

  .lookup-form{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:26px; align-items:end; }
  .lookup-form .field{ display:flex; flex-direction:column; gap:7px; }
  .lookup-form .field label{ font-size:10.5px; letter-spacing:0.14em; text-transform:uppercase; color:var(--text-dark-muted); }
  .lookup-form .field input{ border:none; border-bottom:1px solid rgba(92,26,52,0.35); background:transparent; padding:9px 2px; font-size:14.5px; color:var(--text-dark); outline:none; }
  .lookup-form .field input:focus{ border-color:var(--primary-color); }
  .lookup-form .lookup-btn{ grid-column:1/-1; margin-top:6px; background:var(--primary-color); color:var(--text-light); border:1px solid var(--primary-color); padding:14px 30px; font-size:11.5px; letter-spacing:0.18em; text-transform:uppercase; cursor:pointer; transition: background 0.25s ease, transform 0.2s ease; justify-self:start; }
  .lookup-form .lookup-btn:hover{ background:var(--primary-color-deep); transform:translateY(-1px); }
  .lookup-result{ margin-top:22px; display:none; }
  .lookup-result.show{ display:block; }
  .lookup-card{ padding:20px 22px; border:1px solid rgba(92,26,52,0.18); background: rgba(92,26,52,0.04); }
  .lookup-card .name{ font-family:'Fraunces',serif; font-size:18px; color:var(--ink); }
  .lookup-badge{ display:inline-block; margin-top:9px; padding:5px 13px; border-radius:999px; font-size:11px; letter-spacing:0.08em; text-transform:uppercase; }
  .lookup-badge.going{ background: rgba(31,77,62,0.12); color:var(--emerald); }
  .lookup-badge.not{ background: rgba(92,26,52,0.12); color:var(--primary-color); }
  .lookup-badge.maybe{ background: rgba(201,162,75,0.2); color:#8a6a1f; }
  .lookup-card p{ margin-top:10px; font-size:13.5px; color:var(--text-dark-muted); }
  .lookup-card .mini-btn{ margin-top:12px; background:none; border:1px solid var(--primary-color); color:var(--primary-color); padding:8px 16px; font-size:11px; letter-spacing:0.08em; text-transform:uppercase; cursor:pointer; border-radius:999px; }

  .rsvp-hint{ display:flex; align-items:center; gap:7px; font-size:11px; letter-spacing:0.12em; text-transform:uppercase; color:var(--primary-color); margin-bottom:12px; opacity:0; animation: hintFade 0.6s ease 0.3s forwards; }
  .rsvp-hint.hidden{ display:none; }
  .rsvp-hint svg{ width:12px; height:12px; stroke:var(--highlight-color); animation: bounceDown 1.4s ease-in-out infinite; }
  @keyframes hintFade{ to{ opacity:1; } }
  @keyframes bounceDown{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(4px); } }
  .rsvp-toggle{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:8px; margin-bottom:26px; }
  .rsvp-toggle button{ padding:12px 6px; background:transparent; border:1px solid rgba(92,26,52,0.3); color:var(--text-dark); font-size:11.5px; letter-spacing:0.1em; text-transform:uppercase; cursor:pointer; transition: border-color 0.25s ease, background 0.25s ease, box-shadow 0.25s ease; }
  .rsvp-toggle button.active{ background:var(--primary-color); border-color:var(--primary-color); color:var(--text-light); }
  .rsvp-toggle.attn button{ animation: pulseBorder 1.8s ease-in-out infinite; }
  @keyframes pulseBorder{ 0%,100%{ border-color: rgba(92,26,52,0.3); box-shadow:none; } 50%{ border-color: var(--highlight-color); box-shadow: 0 0 0 4px rgba(201,162,75,0.16); } }
  .rsvp-toggle.shake{ animation: shakeX 0.45s ease; }
  @keyframes shakeX{ 0%,100%{ transform:translateX(0); } 20%{ transform:translateX(-6px); } 40%{ transform:translateX(6px); } 60%{ transform:translateX(-4px); } 80%{ transform:translateX(4px); } }
  .rsvp-toggle.small{ grid-template-columns:repeat(4,1fr); margin-bottom:0; }
  .rsvp-toggle.small button{ font-size:10.5px; padding:11px 4px; }
  .group-label{ display:block; font-size:11px; letter-spacing:0.14em; text-transform:uppercase; color:var(--text-dark-muted); margin-bottom:12px; }
  .sub-group{ margin-bottom:26px; }
  .sub-group.hidden{ display:none; }
  .info-box{ display:none; margin-top:16px; padding:16px 18px; background: rgba(92,26,52,0.06); border-left:3px solid var(--highlight-color); font-size:13.5px; line-height:1.65; color:var(--text-dark-muted); }
  .info-box.show{ display:block; }
  .field-row{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:14px; }
  .field{ display:flex; flex-direction:column; gap:7px; }
  .field.full{ grid-column:1/-1; }
  .field label{ font-size:10.5px; letter-spacing:0.14em; text-transform:uppercase; color:var(--text-dark-muted); }
  .field input, .field select{ border:none; border-bottom:1px solid rgba(92,26,52,0.35); background:transparent; padding:9px 2px; font-size:14.5px; color:var(--text-dark); outline:none; }
  .field textarea{ border:1px solid rgba(92,26,52,0.3); background:transparent; padding:10px 12px; font-size:14px; color:var(--text-dark); outline:none; font-family:inherit; resize:vertical; }
  .field input:focus, .field select:focus, .field textarea:focus{ border-color:var(--primary-color); }
  .submit-btn{ margin-top:10px; background:var(--primary-color); color:var(--text-light); border:1px solid var(--primary-color); padding:14px 30px; font-size:11.5px; letter-spacing:0.18em; text-transform:uppercase; cursor:pointer; transition: background 0.25s ease, transform 0.2s ease; }
  .submit-btn:hover{ background:var(--primary-color-deep); transform:translateY(-1px); }
  .rsvp-form.hidden{ display:none; }
  .success{ display:none; padding-top:10px; }
  .success.show{ display:block; }
  .success .seal-mini{ width:50px; height:50px; border-radius:50%; margin-bottom:16px; background: radial-gradient(circle at 35% 30%, #d8b56a, var(--highlight-color) 55%, #93712c 100%); display:flex; align-items:center; justify-content:center; font-family:'Fraunces',serif; font-weight:600; color:#3a2408; font-size:16px; }
  .success h3{ font-family:'Fraunces',serif; font-size:21px; color:var(--ink); }
  .success p{ margin-top:8px; }
  .success .rsvp-summary{ margin-top:14px; font-size:12.5px; letter-spacing:0.06em; color:var(--primary-color); text-transform:uppercase; }

  .wish-form{ margin-top:26px; display:flex; flex-direction:column; gap:14px; }
  .wish-form input, .wish-form textarea{ border:none; border-bottom:1px solid rgba(92,26,52,0.35); background:transparent; padding:9px 2px; font-size:14.5px; color:var(--text-dark); outline:none; font-family:inherit; }
  .wish-form textarea{ border:1px solid rgba(92,26,52,0.3); padding:10px 12px; resize:vertical; }
  .wish-form input:focus, .wish-form textarea:focus{ border-color:var(--primary-color); }
  .wish-form button{ align-self:flex-start; margin-top:4px; background:var(--primary-color); color:var(--text-light); border:1px solid var(--primary-color); padding:13px 28px; font-size:11.5px; letter-spacing:0.18em; text-transform:uppercase; cursor:pointer; transition: background 0.25s ease, transform 0.2s ease; }
  .wish-form button:hover{ background:var(--primary-color-deep); transform:translateY(-1px); }
  .wish-list{ margin-top:32px; display:flex; flex-direction:column; gap:14px; }
  .wish-card{ padding:16px 18px; border-left:3px solid var(--highlight-color); background: rgba(92,26,52,0.04); opacity:0; transform:translateY(8px); animation: wishIn 0.5s ease forwards; }
  @keyframes wishIn{ to{ opacity:1; transform:translateY(0); } }
  .wish-card .who{ font-family:'Fraunces',serif; font-size:14.5px; color:var(--primary-color); }
  .wish-card .msg{ margin-top:6px; font-size:14px; color:var(--text-dark-muted); line-height:1.6; }
  .wish-empty{ margin-top:24px; font-size:13.5px; color:var(--text-dark-muted); font-style:italic; }
  .wish-empty.hidden{ display:none; }

  .col-content footer{ padding:40px 8% 60px; color:var(--text-dark-muted); font-size:12.5px; }
  .col-content footer .mono-foot{ font-family:'Fraunces',serif; font-style:italic; font-size:19px; color:var(--primary-color); margin-bottom:6px; }

  .foot_link {padding: 30px;}
  .foot_link a { color: var(--highlight-color); transition: .3s all ease-in-out; letter-spacing: 2px; text-transform: uppercase; }
  .foot_link span { margin: auto 7px; }

  .confetto{ position:fixed; top:-10px; width:7px; height:14px; z-index:999; pointer-events:none; animation: fall linear forwards; }
  @keyframes fall{ to{ transform: translateY(105vh) rotate(360deg); opacity:0.9; } }

  @media (max-width: 900px){
    body{ overflow:auto; height:auto; }
    .app{ height:auto; }
    .col-image{ position:relative; width:100%; height:70vh; }
    .col-content{ margin-left:0; width:100%; height:auto; overflow:visible; }
    .welcome-section{ height:100vh; }
    .date-pill .d{ display:none; }
    .field-row{ grid-template-columns:1fr; }
    .lookup-form{ grid-template-columns:1fr; }
    .rsvp-toggle{ grid-template-columns:1fr 1fr; }
    .rsvp-toggle button:last-child{ grid-column:1/-1; }
    .rsvp-toggle.small{ grid-template-columns:1fr 1fr; }
    .rsvp-toggle.small button:last-child{ grid-column:auto; }
    .gallery-btn span.gtext{ display:none; }
    .gallery-grid{ grid-template-columns:1fr; }
  }
  @media (prefers-reduced-motion: reduce){ *{ animation-duration:0.01ms !important; transition-duration:0.01ms !important; } }