@import "https://fonts.googleapis.com/css2?family=Great+Vibes&family=Playfair+Display:wght@400;600;700&family=Poppins:wght@300;400;500;600&display=swap";:root{color:#3b1f39;--bg:#fff6f8;--surface:#fff;--text:#3b1f39;--muted:#7f5f7c;--accent:#a12f62;--accent-soft:#f5d2e5;--gold:#c69d3d;--border:#a12f6229;--shadow:0 28px 60px #a12f621f;background:#fff6f8;font-family:Poppins,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-height:100vh;color:var(--text);background:linear-gradient(#fff6f8 0%,#fff 100%);margin:0}#root{min-height:100vh}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{width:min(1180px,100% - 24px);margin:0 auto;padding:24px 0 48px}.access-shell{place-items:center;min-height:100vh;padding:24px;display:grid}.access-card{background:var(--surface);border:1px solid var(--border);width:min(560px,100%);box-shadow:var(--shadow);text-align:center;border-radius:28px;padding:36px}.access-card h1{margin:12px 0;font-family:Playfair Display,serif;font-size:clamp(2rem,5vw,3.2rem)}.access-card p:last-child{color:var(--muted);margin:0;line-height:1.7}.cover-section{min-height:84vh;box-shadow:var(--shadow);background:linear-gradient(#f1d6e8f2,#ffffffe6);border-radius:36px;margin-bottom:32px;position:relative;overflow:hidden}.cover-frame{text-align:center;grid-template-columns:1fr;place-items:center;min-height:84vh;padding:44px 24px 32px;display:grid;position:relative}.cover-frame:before{content:"";pointer-events:none;background:radial-gradient(circle at top,#ffffff6b,#0000 40%);position:absolute;inset:0}.cover-image{z-index:0;opacity:.54;position:absolute;inset:0}.cover-image img{object-fit:cover;width:100%;height:100%}.cover-copy{z-index:1;max-width:720px;position:relative}.cover-subtitle{color:var(--accent);letter-spacing:.24em;text-transform:uppercase;margin:0;font-size:.86rem;font-weight:600}.cover-copy h1{color:var(--accent);margin:18px 0 6px;font-family:Great Vibes,cursive;font-size:clamp(3.8rem,7vw,6rem);line-height:.9}.cover-copy h1 span{display:block}.divider{color:#4f1d41;margin:.2rem 0;font-family:Playfair Display,serif;font-size:2.5rem}.cover-date{color:var(--text);letter-spacing:.04em;margin:12px auto 20px;font-size:1rem}.cover-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:24px;display:flex}.btn{border:none;border-radius:999px;justify-content:center;align-items:center;gap:10px;padding:14px 22px;font-weight:600;transition:transform .18s;display:inline-flex}.btn:hover{transform:translateY(-2px)}.primary{background:linear-gradient(135deg, var(--accent), #6e2140);color:#fff}.secondary{color:var(--accent);background:#fffffff2;border:1px solid #a12f6233}.couple-section,.message-section,.event-section,.save-date-section,.gallery-section,.map-guestbook-section,.rsvp-section,.footer{background:var(--surface);box-shadow:var(--shadow);border-radius:32px;margin-bottom:24px;padding:32px}.couple-section{text-align:center;justify-items:center;gap:22px;display:grid}.couple-photo{aspect-ratio:1;border:6px solid #a12f621f;border-radius:50%;width:min(420px,100%);overflow:hidden}.couple-photo img{object-fit:cover;width:100%;height:100%}.couple-names{flex-direction:column;align-items:center;gap:8px;display:flex}.name-large{letter-spacing:.02em;margin:0;font-family:Playfair Display,serif;font-size:clamp(2rem,4vw,3rem)}.name-divider{color:var(--accent);margin:0;font-size:1.3rem}.message-section{text-align:center;gap:16px;display:grid}.family-line,.invite-text{color:var(--text);margin:0;font-size:1rem;line-height:1.8}.together-with{color:var(--accent);margin:0;font-family:Great Vibes,cursive;font-size:2rem}.event-section h2,.save-title h2,.section-heading h2{margin:0 0 18px;font-family:Playfair Display,serif;font-size:clamp(2rem,3vw,2.8rem)}.event-section p,.save-date-section p,.message-section p,.gallery-section p,.route-card p,.entry-card p,.guestbook-card p{color:var(--muted);margin:0}.event-section{text-align:center}.event-extra,.event-note{margin-top:16px}.event-note{color:var(--accent);font-weight:600}.save-date-section{text-align:center}.countdown-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-top:24px;display:grid}.countdown-card{background:#ffdaec2e;border:1px solid #a12f6229;border-radius:26px;padding:24px 16px}.count-value{color:var(--accent);font-family:Playfair Display,serif;font-size:clamp(2.2rem,4vw,3.2rem);display:block}.count-label{text-transform:uppercase;letter-spacing:.18em;color:var(--muted);margin-top:10px;font-size:.85rem;display:block}.gallery-section{padding-top:36px}.section-heading{gap:10px;display:grid}.eyebrow{letter-spacing:.22em;color:var(--accent);text-transform:uppercase;margin:0;font-size:.8rem;font-weight:700}.gallery-collage{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:140px;grid-auto-flow:dense;border-radius:24px;align-items:stretch;gap:0;margin-top:24px;display:grid;overflow:hidden}.gallery-card{appearance:none;background:#f7e6ee;border:0;border-radius:0;width:100%;height:100%;min-height:0;margin:0;padding:0;transition:transform .22s,box-shadow .22s;display:block;position:relative;overflow:hidden}.gallery-card:hover{z-index:1;transform:scale(1.02);box-shadow:inset 0 0 0 1px #ffffff40}.gallery-card img,.related-card img,.modal-media img{width:min(100%, var(--gallery-image-mobile-width,100%));height:var(--gallery-image-mobile-height,100%);max-width:var(--gallery-image-mobile-width,100%);max-height:var(--gallery-image-mobile-height,100%);object-fit:cover;object-position:center;display:block}@media (width>=961px){.gallery-card img,.related-card img,.modal-media img{width:min(100%, var(--gallery-image-desktop-width,100%));height:var(--gallery-image-desktop-height,100%);max-width:var(--gallery-image-desktop-width,100%);max-height:var(--gallery-image-desktop-height,100%)}}.gallery-card-1{grid-area:span 2/span 2}.gallery-card-2,.gallery-card-3{grid-area:span 2/span 1}.gallery-card-4,.gallery-card-5{grid-area:span 1/span 2}.gallery-card-6,.gallery-card-7{grid-area:span 2/span 1}.gallery-card-8,.gallery-card-9{grid-area:span 1/span 1}.gallery-card-10{grid-area:span 1/span 2}.gallery-card-11{grid-area:span 2/span 2}.gallery-card-12{grid-area:span 1/span 2}.gallery-overlay{color:#fff;background:linear-gradient(#0000,#00000094);align-items:center;gap:10px;padding:16px;display:flex;position:absolute;inset:auto 0 0}.map-guestbook-section{grid-template-columns:1.2fr .8fr;gap:24px;display:grid}.route-card,.guestbook-card{border-radius:28px}.route-card iframe{border:none;border-radius:24px;width:100%;height:340px;margin-top:18px}.guestbook-form{gap:14px;display:grid}.guestbook-form label{gap:8px;display:grid}.guestbook-form input,.guestbook-form textarea{background:#fff;border:1px solid #a12f622e;border-radius:16px;padding:14px 16px}.preview-image{object-fit:cover;border-radius:18px;width:100%;margin-top:12px}.guestbook-entries{gap:16px;margin-top:20px;display:grid}.entry-card{background:#ffeff6bf;border:1px solid #a12f621f;border-radius:22px;gap:12px;padding:18px;display:grid}.entry-card h3{margin:0;font-size:1rem}.entry-card img{object-fit:cover;border-radius:18px;width:100%;height:220px}.rsvp-section{padding-top:36px}.rsvp-form{gap:16px;display:grid}.rsvp-form label{gap:10px;display:grid}.rsvp-form input,.rsvp-form select,.rsvp-form textarea{background:#fff;border:1px solid #a12f6224;border-radius:18px;padding:14px 16px}.rsvp-form input[readonly]{color:var(--muted);cursor:not-allowed;background:#ffeff6d9}.rsvp-form small{color:#9b2e58}.success-text{color:var(--accent);margin-top:8px;font-weight:600}.submission-text{margin-top:12px;font-weight:600}.submission-text.success{color:#1a6a3a}.submission-text.error{color:#9b2e58}.footer{text-align:center}.modal-overlay{z-index:50;background:#0000008c;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal-card{width:min(920px,100%);box-shadow:var(--shadow);background:#fff;border-radius:32px;position:relative;overflow:hidden}.modal-media{background:#f9edf3;position:relative}.modal-media img{width:min(100%, var(--gallery-image-mobile-width,100%));height:var(--gallery-image-mobile-height,min(60vh, 460px));max-width:var(--gallery-image-mobile-width,100%);max-height:var(--gallery-image-mobile-height,min(60vh, 460px));object-fit:cover;display:block}@media (width>=961px){.modal-media img{width:min(100%, var(--gallery-image-desktop-width,100%));height:var(--gallery-image-desktop-height,min(60vh, 460px));max-width:var(--gallery-image-desktop-width,100%);max-height:var(--gallery-image-desktop-height,min(60vh, 460px))}}.modal-close{cursor:pointer;background:#ffffffe6;border:none;border-radius:50%;place-items:center;width:42px;height:42px;display:grid;position:absolute;top:18px;right:18px}.modal-card img{object-fit:cover;width:100%;height:420px}.modal-copy{padding:24px}.modal-caption{color:var(--muted);margin:8px 0 0}.related-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:18px;display:grid}.related-card{background:0 0;border:2px solid #0000;border-radius:18px;min-height:120px;padding:0;overflow:hidden}.related-card.active{border-color:var(--accent)}.related-card img{object-fit:cover;width:100%;height:100%;display:block}.gallery-nav{z-index:1;width:44px;height:44px;color:var(--accent);background:#ffffffe6;border:none;border-radius:50%;place-items:center;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.gallery-nav.prev{left:14px}.gallery-nav.next{right:14px}@media (width<=960px){.map-guestbook-section,.countdown-grid{grid-template-columns:1fr}.modal-card{width:100%}.modal-media img{height:320px}.related-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gallery-collage{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:170px}.gallery-card-1{grid-area:span 2/span 2}.gallery-card-2,.gallery-card-3{grid-area:span 2/span 1}.gallery-card-4,.gallery-card-5,.gallery-card-8,.gallery-card-9,.gallery-card-10,.gallery-card-12{grid-area:span 1/span 1}.gallery-card-6,.gallery-card-7,.gallery-card-11{grid-area:span 1/span 2}.cover-frame{padding:32px 18px}.event-section,.save-date-section,.gallery-section,.map-guestbook-section,.rsvp-section{padding:28px}}@media (width<=640px){.app-shell{width:100%;padding:0 16px 32px}.cover-copy h1{font-size:3.2rem}.cover-actions{flex-direction:column;gap:14px}.cover-section{min-height:72vh}.gallery-card img{min-height:180px}}
