@import url(https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700&family=Playfair+Display:wght@400;500;600;700&display=swap);:root{--color-primary:#bd684d;--color-primary-dark:#a94f38;--color-accent:#737b62;--color-accent-dark:#626951;--color-bg:#f8f3e9;--color-bg-alt:#eee6d9;--color-text:#292724;--color-text-muted:#706b63;--color-border:#dfd3c1;--color-error:#b54a4a;--color-success:#4a8b5a;--color-surface:#fcf8f0;--color-surface-strong:#ffffff;--color-art-bg:#e5dfd4;--color-error-bg:#f0ded5;--font-serif:'Playfair Display',Georgia,serif;--font-sans:'Lato',-apple-system,sans-serif}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{background:var(--color-bg);color:var(--color-text);font:300 18px/1.35 var(--font-sans)}a{color:inherit;text-decoration:none}img{max-width:100%}h1,h2,h3{font-family:var(--font-serif);font-weight:600;letter-spacing:-.04em}.htmx-indicator{opacity:0}.htmx-request .htmx-indicator,.htmx-request.htmx-indicator{opacity:1;transition:opacity .2s ease-in}.btn,button[type=submit],input[type=submit]{display:inline-block;border:0;border-radius:8px;background:var(--color-primary);color:#fff;cursor:pointer;font:400 1rem var(--font-sans);padding:16px 30px;text-align:center;transition:background .2s ease}.btn:hover,button[type=submit]:hover,input[type=submit]:hover{background:var(--color-primary-dark)}.btn-outline{background:0 0;border:2px solid var(--color-accent);color:var(--color-accent-dark)}.btn-outline:hover{background:var(--color-accent);color:#fff}form label{display:block;color:var(--color-text);font-size:1rem;margin-bottom:8px}form input[type=email],form input[type=file],form input[type=number],form input[type=password],form input[type=text],form select,form textarea{width:100%;border:2px solid var(--color-border);border-radius:8px;background:var(--color-surface);color:var(--color-text);font:inherit;padding:17px 20px}form select{padding-right:30px;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%23292724' stroke-width='1.5' d='M1 1L6 6L11 1'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 15px center}form input:focus,form select:focus,form textarea:focus{border-color:var(--color-primary);outline:0}form textarea{min-height:140px;resize:none}form div{margin-bottom:24px}.flash{background:var(--color-success);color:#fff;margin-bottom:32px;padding:16px 24px;text-align:center}.error,div.error{background:var(--color-error-bg);color:var(--color-primary-dark);border-radius:10px;margin-bottom:22px;padding:18px 22px}.site-nav{display:flex;justify-content:flex-end;padding:40px 5vw 0}.nav-links{display:flex;gap:20px}.nav-actions{display:none}.site-nav a{border-bottom:2px solid transparent;color:var(--color-text);font-size:.9rem;font-weight:500;padding:8px 8px}.site-nav a.live,.site-nav a:hover{border-bottom-color:var(--color-primary);color:var(--color-text)}main{margin:0 auto;max-width:1400px;min-height:calc(100vh - 150px);padding:48px 5vw 90px}.hero{display:flex;min-height:600px}.hero-copy{flex:0 0 60%}.hero .welcome{color:var(--color-text);font-size:1.15rem;margin-bottom:16px}.hero h2{font-size:5.8rem;line-height:.9;margin-bottom:24px}.hero .date{color:var(--color-accent);font-size:1.3rem;font-weight:600;margin-bottom:10px;font-family:var(--font-serif)}.hero .hero-message{color:var(--color-text);font-size:1.15rem;font-weight:350}.hero .btn{margin-top:36px}.hero-art{flex:0 0 40%}.hero-art .image-placeholder{display:block;height:600px;object-fit:cover}.gift-detail,.info-page,.location-page,.received-page,.rsvp-page{display:grid;grid-template-columns:1.3fr 1fr;column-gap:clamp(56px,8vw,150px)}.checkout-page,.gift-detail{display:grid;grid-template-columns:1fr 1.3fr;column-gap:clamp(56px,8vw,150px)}.content-page,.gifts-page,.page-form{margin:0 auto;max-width:1040px}h2{font-size:clamp(2.5rem, 5vw, 4rem);line-height:.9;margin-bottom:28px}.page-intro{color:var(--color-text-muted);font-size:clamp(1.1rem, 2vw, 1.35rem);margin-bottom:20px}.info-date,.location-address{color:var(--color-accent);font:600 1.45rem/1.25 var(--font-serif);margin-bottom:50px}.timeline{display:grid;grid-template-columns:repeat(3,1fr);margin-bottom:45px;position:relative;column-gap:10vw}.timeline:before{border-top:2px solid var(--color-accent);content:'';left:4vw;position:absolute;right:4vw;top:9px}.timeline div{position:relative;text-align:center}.timeline i{background:var(--color-bg);border:2px solid var(--color-accent);border-radius:50%;display:block;height:22px;margin:0 auto 15px;width:22px}.timeline span,.timeline strong{display:block}.timeline span{color:var(--color-accent)}.countdown{border-bottom:1px solid var(--color-border);display:grid;grid-template-columns:repeat(3,1fr);padding:25px 0;text-align:center}.countdown h3{font-size:1.5rem;grid-column:1/-1;margin-bottom:22px;display:flex;align-items:center;gap:16px}.countdown h3::after,.countdown h3::before{content:'';flex:1;height:1px;background:var(--color-border)}.countdown span,.countdown strong{display:block}.countdown strong{font:700 3.5rem var(--font-serif)}.countdown span{color:var(--color-accent)}.countdown .left{padding-left:6vw}.countdown .right{padding-right:6vw}.info-side article,.location-copy article{background:var(--color-surface);border:2px solid var(--color-border);border-radius:10px;margin-bottom:36px;padding:40px 45px}.info-side article h3,.location-copy article h3{font-size:clamp(1.2rem, 3.5vw, 1.5rem);margin-bottom:5px}.info-side article p,.location-copy article p{color:var(--color-text-muted)}.page-actions{display:grid;gap:20px;grid-template-columns:1fr 1fr;margin-bottom:24px}.map-placeholder{object-fit:cover;max-width:40vw;max-height:75vh}.rsvp-page{align-items:start;grid-template-columns:48% 52%}.rsvp-copy h2{max-width:680px}.rsvp-art{display:block;object-fit:cover;max-width:40vw;max-height:75vh}.rsvp-mobile-art{display:none;width:100%;height:auto;border-radius:12px;margin:24px 0}.rsvp-form{max-width:745px}.rsvp-form fieldset{border:0;margin:0 0 30px;padding:0}.rsvp-form legend{color:var(--color-text);font-size:1rem;margin-bottom:8px}.rsvp-form legend.error{color:var(--color-error)}.choice{align-items:center;border:2px solid var(--color-border);border-radius:9px;color:var(--color-text-muted);display:flex;font-size:1.15rem;font-weight:600;gap:14px;height:94px;margin-bottom:14px;padding:0 25px;cursor:pointer;transition:border-color .2s ease,color .2s ease}.choice:hover{border-color:var(--color-primary);color:var(--color-text)}.choice.selected{border-color:var(--color-primary);color:var(--color-text)}.choice input{display:none}.rsvp-form textarea{height:160px}.rsvp-form>div:last-of-type{text-align:left}.received-art{align-items:center;background:var(--color-art-bg);border-radius:46% 54% 52% 48%;color:var(--color-accent);display:grid;min-height:620px}.received-art span{font:700 11rem var(--font-serif)}.gifts-page>h2{margin-bottom:35px}.gifts-page>.page-intro{max-width:760px}.gifts{display:grid;gap:70px;grid-template-columns:repeat(2,1fr);margin-top:45px}.gift{background:var(--color-surface);border:2px solid var(--color-border);border-radius:12px;display:flex;flex-direction:column;padding:38px;text-align:left}.gift img{border-radius:12px;height:330px;object-fit:cover;width:100%}.gift h3{line-height:1;margin-top:20px;font-size:clamp(1.5rem, 2vw, 2rem)}.gift p{color:var(--color-text-muted);font-size:1.1rem;margin:12px 0}.gift .price{color:var(--color-text-muted);font-family:var(--font-sans);font-size:clamp(1.1rem, 2vw, 1.6rem)}.gift .btn{margin-top:auto;width:100%}.gift-detail{align-items:start}.gift-detail-image{border-radius:12px;height:100%;object-fit:cover;width:100%}.gift-detail h2{max-width:600px}.gift-price{margin-bottom:15px;font-size:clamp(1.1rem, 2vw, 1.5rem)}.checkout-page{align-items:start}.checkout-summary{border:2px solid var(--color-border);border-radius:12px;padding:45px;background:var(--color-surface)}.checkout-summary h2,.transfer-details h2{font-size:clamp(2.5rem, 5vw, 4rem)}.checkout-item{align-items:center;display:grid;gap:18px;grid-template-columns:65px 1fr auto}.checkout-item img{border-radius:10px;height:65px;object-fit:cover;width:65px}.checkout-summary hr{border:0;border-top:2px solid var(--color-border);margin:30px 0}.checkout-summary h3{font:700 1.2rem var(--font-sans)}.checkout-summary p{margin:15px 0}.checkout-summary dl,.transfer-details dl{color:var(--color-text-muted);display:grid;grid-template-columns:1fr auto}.checkout-summary dt,.transfer-details dt{font-weight:500;user-select:none}.checkout-summary .total{color:var(--color-text);font-size:1.5rem;margin-top:15px}.checkout-summary dd,.transfer-details dd{text-align:right}.checkout-actions{display:flex;gap:16px;margin-top:25px}.checkout-actions form{margin:0}.copy-toast{background:var(--color-text);border-radius:8px;bottom:24px;color:#fff;opacity:0;padding:12px 18px;pointer-events:none;position:fixed;left:50%;width:min(420px,calc(100vw - 48px));text-align:center;transform:translate(-50%,10px);transition:opacity 150ms ease,transform 150ms ease;z-index:101}.copy-toast.is-visible{opacity:1;transform:translate(-50%,0)}@media (max-width:767px){.copy-toast{display:none}}table{background:var(--color-surface-strong);border-collapse:collapse;margin-bottom:32px;width:100%}td,th{border-bottom:1px solid var(--color-border);padding:14px 18px;text-align:left}th{background:var(--color-bg-alt);color:var(--color-text-muted);font-size:.85rem;letter-spacing:.05em;text-transform:uppercase}tr:hover{background:var(--color-bg-alt)}.admin-section{margin-bottom:48px}.stats{display:flex;flex-wrap:wrap;gap:24px;margin-bottom:48px}.stat{background:var(--color-surface-strong);border:1px solid var(--color-border);display:block;flex:1;min-width:150px;padding:24px;text-align:center}.stat .label{color:var(--color-text-muted);display:block;font-size:.85rem;letter-spacing:.05em;margin-bottom:8px;text-transform:uppercase}.stat .value{color:var(--color-primary-dark);font:2.5rem var(--font-serif)}.admin-nav{display:flex;gap:16px;margin-bottom:32px}.admin-nav a{background:var(--color-surface-strong);border:1px solid var(--color-border);padding:12px 24px}.logout-btn{background:0 0;border:0;color:var(--color-text-muted);cursor:pointer}.logout-btn:hover{color:var(--color-error)}#modal{align-items:center;animation:fadeIn 150ms ease;display:flex;flex-direction:column;inset:0;position:fixed;z-index:1000}#modal>.modal-underlay{background:rgba(0,0,0,.5);inset:0;position:absolute;z-index:-1}#modal>.modal-content{animation:zoomIn 150ms ease;background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;margin-top:10vh;max-width:500px;padding:32px;position:relative;width:90%}#modal>.modal-content .modal-close{background:0 0;border:0;color:var(--color-text-muted);cursor:pointer;font-size:24px;height:32px;padding:0;position:absolute;right:12px;top:12px;width:32px}#modal.closing{animation:fadeOut 150ms ease}#modal.closing>.modal-content{animation:zoomOut 150ms ease}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes zoomIn{from{transform:scale(.9)}to{transform:scale(1)}}@keyframes zoomOut{from{transform:scale(1)}to{transform:scale(.9)}}@media (max-width:767px){body{font-size:16px}.site-nav{position:fixed;bottom:0;left:0;right:0;justify-content:center;padding:12px 4vw;background:var(--color-bg);border-top:1px solid var(--color-border);z-index:100}.nav-links{gap:4px;justify-content:center}.site-nav a{font-size:1rem;padding:10px 12px}main{padding:24px 7vw 80px}.hero{display:flex;flex-direction:column;gap:28px;min-height:auto;padding:24px 0}.hero-art{order:1;width:100%}.hero-copy{order:2;padding-top:0;text-align:center}.hero-art .image-placeholder{height:auto;width:100%}.hero h2{font-size:clamp(4.5rem, 19vw, 6.5rem)}.hero .date{font-size:1.1rem}.hero .btn{width:100%}.info-page,.location-page,.received-page,.rsvp-page{align-items:stretch;display:flex;flex-direction:column;gap:35px;min-height:auto}.checkout-page,.gift-detail{align-items:stretch;display:flex;flex-direction:column-reverse;gap:35px;min-height:auto}.gift-detail-copy,.info-main,.location-copy,.rsvp-copy,.transfer-details{order:1}.checkout-summary,.gift-detail-image,.info-side,.map-placeholder,.rsvp-form{order:2}.info-date,.location-address{margin-bottom:55px}.timeline{column-gap:11vw;margin-bottom:35px}.timeline:before{left:12vw;right:12vw}.timeline strong{font-size:.9rem}.countdown strong{font-size:2.5rem}.countdown .left{padding-left:12vw}.countdown .right{padding-right:12vw}.info-side article,.location-copy article{padding:28px}.info-side article h3,.location-copy article h3{font-size:clamp(1.5rem, 4vw, 2rem)}.map-placeholder{max-width:100%;max-height:100%}.rsvp-art{display:none}.rsvp-mobile-art{display:block}.rsvp-form{max-width:745px}.rsvp-form textarea{height:160px}.rsvp-form>div:last-of-type{text-align:left}.rsvp-form textarea{height:160px}.rsvp-form .btn{width:100%}.received-art{min-height:500px;width:100%}.received-art span{font-size:8rem}.gifts{gap:35px;grid-template-columns:1fr}.gift{padding:25px}.gift img{height:auto;width:100%}.checkout-summary{padding:28px}.checkout-actions,.page-actions{gap:10px}.checkout-actions .btn,.page-actions .btn{min-width:0;padding-left:12px;padding-right:12px}.stats{flex-direction:column}.gift-detail-copy .btn{width:100%;margin-bottom:24px}.transfer-details .btn{width:100%;margin-bottom:24px}}