:root{--color-bg:#faf9f6;--color-text:#2c2c2c;--color-accent:#4a7c6f;--color-accent-hover:#3d6960;--color-accent-light:#e8f0ed;--color-muted:#6b7280;--color-border:#e5e7eb;--color-white:#fff;--color-success:#16a34a;--color-danger:#dc2626;--font-display:"Playfair Display", Georgia, serif;--font-body:"Inter", system-ui, sans-serif;--radius:10px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-body);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;line-height:1.6}h1,h2,h3{font-family:var(--font-display);font-weight:700;line-height:1.2}.page{max-width:680px;margin:0 auto;padding:0 24px}.main-nav{justify-content:space-evenly;padding:0 0 32px;display:flex}.main-nav a{border-radius:var(--radius);font-family:var(--font-display);color:var(--color-muted);padding:8px 18px;font-size:1rem;font-weight:700;text-decoration:none;transition:all .15s}.main-nav a:hover{color:var(--color-text)}.main-nav a.router-link-active{color:var(--color-text);border-bottom:2px solid var(--color-accent);border-radius:0}@media (width<=600px){.main-nav{flex-wrap:wrap;justify-content:center}}.updates-list{flex-direction:column;gap:16px;margin-top:16px;display:flex}.update-card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius);padding:20px}.update-header{justify-content:space-between;align-items:baseline;margin-bottom:8px;display:flex}.update-date{color:var(--color-muted);white-space:nowrap;font-size:.75rem}.update-title{font-size:1.1rem}.update-body{color:var(--color-text);line-height:1.6}.hero{text-align:center;padding:80px 0 48px}.hero h1{margin-bottom:8px;font-size:3rem}.hero .subtitle{font-family:var(--font-display);color:var(--color-muted);font-size:1.25rem;font-style:italic;font-weight:400}.info-section{margin-bottom:48px}.info-section h2{border-bottom:2px solid var(--color-accent);margin-bottom:16px;padding-bottom:8px;font-size:1.5rem;display:inline-block}.info-grid{grid-template-columns:1fr 1fr;gap:12px;margin-top:16px;display:grid}.info-card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius);padding:20px}.info-card-full{grid-column:1/-1}.update-title-small{font-size:.95rem;font-weight:500}.update-body-small{color:var(--color-muted);font-size:.85rem;line-height:1.5}a.info-card-link{color:inherit;text-decoration:none;transition:border-color .2s}a.info-card-link:hover{border-color:var(--color-accent)}.map-icon{font-size:.9em}.info-card .label{text-transform:uppercase;letter-spacing:.05em;color:var(--color-muted);margin-bottom:4px;font-size:.75rem}.info-card .value{font-size:1.1rem;font-weight:500}.photo-grid{grid-template-columns:1fr 1fr;gap:12px;margin:16px 0 48px;display:grid}.photo-grid-single{grid-template-columns:1fr}.photo-grid img{object-fit:cover;border-radius:var(--radius);background:var(--color-border);width:100%;height:300px}.text-block{margin-bottom:48px;font-size:1.05rem;line-height:1.8}.text-block p+p{margin-top:16px}.rsvp-section{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:64px;padding:32px}.rsvp-header{justify-content:space-between;align-items:baseline;margin-bottom:20px;display:flex}.rsvp-header h2{font-size:1.5rem}.save-indicator{color:var(--color-success);font-size:.8rem}.save-indicator.error{color:var(--color-danger)}.rsvp-greeting{color:var(--color-muted);margin-bottom:24px}.rsvp-buttons{gap:12px;margin-bottom:24px;display:flex}.rsvp-btn{border:2px solid var(--color-border);border-radius:var(--radius);background:var(--color-white);font-family:var(--font-body);cursor:pointer;flex:1;padding:8px 16px;font-size:.85rem;font-weight:500;transition:all .2s}.rsvp-btn:hover{border-color:var(--color-accent)}.rsvp-btn.active-yes{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-white)}.rsvp-btn.active-maybe{color:var(--color-white);background:#f59e0b;border-color:#f59e0b}.rsvp-btn.active-no{background:var(--color-danger);border-color:var(--color-danger);color:var(--color-white)}.rsvp-multi{flex-direction:column;gap:12px;margin-bottom:24px;display:flex}.rsvp-person{align-items:center;gap:12px;display:flex}.rsvp-person-name{min-width:100px;font-size:.9rem;font-weight:500}.rsvp-person .rsvp-buttons{margin-bottom:0}.rsvp-fields{flex-direction:column;gap:16px;display:flex}.rsvp-fields label{color:var(--color-muted);margin-bottom:4px;font-size:.85rem;font-weight:500;display:block}.dear-heading{margin-bottom:8px;font-size:1.2rem}.programme-list{flex-direction:column;gap:10px;margin-top:16px;list-style:none;display:flex}.programme-list li{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius);gap:16px;padding:12px 16px;display:flex}.programme-time{white-space:nowrap;min-width:120px;font-weight:500}.programme-desc{color:var(--color-muted)}.travel-text{color:var(--color-text);margin-top:12px;line-height:1.7}.arrival-row{gap:12px;display:flex}.arrival-row>div{flex:1}.arrival-row>div:last-child{flex:2}.arrival-row input{border:1px solid var(--color-border);border-radius:var(--radius);width:100%;height:38px;font-family:var(--font-body);background:var(--color-bg);box-sizing:border-box;padding:8px 12px;font-size:.9rem;transition:border-color .2s}.arrival-row input:focus{border-color:var(--color-accent);outline:none}.airport-input{text-transform:uppercase}.flights-heading{margin-top:24px;margin-bottom:4px;font-size:1.1rem}.flights-text{color:var(--color-text);margin-bottom:4px;line-height:1.7}.flights-row{align-items:flex-end;gap:12px;margin-top:16px;display:flex}.flight-dates{align-items:flex-end;gap:6px;display:flex}.flight-dates input{border:1px solid var(--color-border);border-radius:var(--radius);height:42px;font-family:var(--font-body);background:var(--color-bg);box-sizing:border-box;padding:0 8px;font-size:.9rem;font-weight:500}.flight-dates>div:last-child input{width:3.5em}.flight-dates input:focus{border-color:var(--color-accent);outline:none}.flight-dates span{color:var(--color-muted);line-height:42px}.flight-label{color:var(--color-muted);margin-bottom:4px;font-size:.75rem;display:block}.flight-airport-value{text-transform:uppercase;padding:10px 12px;font-size:.9rem;font-weight:500}.flights-link{background:var(--color-accent);color:var(--color-white);border-radius:var(--radius);margin-left:auto;padding:10px 20px;font-size:.9rem;font-weight:500;text-decoration:none;transition:background .2s;display:inline-block}.flights-link:hover{background:var(--color-accent-hover)}.flights-link.disabled{opacity:.5;pointer-events:none}.chip-group{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.chip{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-white);font-family:var(--font-body);color:var(--color-text);cursor:pointer;padding:5px 12px;font-size:.8rem;transition:all .15s}.chip:hover{border-color:var(--color-accent)}.chip.selected{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-white)}.chip-other{border:1px solid var(--color-border);border-radius:var(--radius);width:100%;font-family:var(--font-body);background:var(--color-bg);padding:6px 12px;font-size:.85rem;transition:border-color .2s}.chip-other:focus{border-color:var(--color-accent);outline:none}.accordion-heading{color:var(--color-muted);margin-bottom:0;padding-top:12px;font-size:.85rem;font-weight:500;display:block}.rsvp-accordion{border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.rsvp-accordion summary{color:var(--color-muted);cursor:pointer;padding:10px 14px;font-size:.85rem;font-weight:500;list-style:none}.rsvp-accordion summary::-webkit-details-marker{display:none}.rsvp-accordion summary:after{content:"▸";float:right}.rsvp-accordion[open] summary:after{content:"▾"}.accordion-content{flex-direction:column;gap:12px;padding:0 14px 14px;display:flex}.accordion-content label{color:var(--color-muted);font-size:.85rem;font-weight:500}.accordion-content input{border:1px solid var(--color-border);border-radius:var(--radius);width:100%;font-family:var(--font-body);background:var(--color-bg);padding:10px 14px;font-size:.95rem;transition:border-color .2s}.accordion-content input:focus{border-color:var(--color-accent);outline:none}.rsvp-fields input,.rsvp-fields textarea{border:1px solid var(--color-border);border-radius:var(--radius);width:100%;font-family:var(--font-body);background:var(--color-bg);padding:10px 14px;font-size:.95rem;transition:border-color .2s}.rsvp-fields input:focus,.rsvp-fields textarea:focus{border-color:var(--color-accent);outline:none}.rsvp-fields textarea{resize:vertical;min-height:80px}.save-btn{background:var(--color-accent);width:100%;color:var(--color-white);border-radius:var(--radius);font-family:var(--font-body);cursor:pointer;border:none;margin-top:20px;padding:14px;font-size:1rem;font-weight:500;transition:background .2s}.save-btn:hover{background:var(--color-accent-hover)}.save-btn:disabled{opacity:.5;cursor:not-allowed}.save-status{text-align:center;color:var(--color-success);margin-top:12px;font-size:.9rem}.save-status.error{color:var(--color-danger)}.loading,.error-page{text-align:center;padding:120px 24px}.error-page h2{margin-bottom:8px}.error-page p{color:var(--color-muted)}.top-bar{justify-content:space-between;align-items:center;padding:16px 0 0;display:flex}.cal-link{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-white);font-family:var(--font-body);color:var(--color-muted);padding:4px 12px;font-size:.8rem;text-decoration:none;transition:all .2s}.cal-link:hover{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-white)}.lang-switcher{justify-content:flex-end;gap:4px;display:flex}.lang-switcher button{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-white);font-family:var(--font-body);color:var(--color-muted);cursor:pointer;padding:4px 12px;font-size:.8rem;transition:all .2s}.lang-switcher button.active{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-white)}.guest-flag{margin-right:4px;font-size:1.3em}.guestlist{margin-bottom:48px}.guestlist ul{flex-direction:column;gap:8px;margin-top:16px;list-style:none;display:flex}.guestlist li{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius);justify-content:space-between;align-items:center;padding:10px 14px;font-size:.95rem;display:flex}.guestlist li.current-guest{border-color:var(--color-accent);background:var(--color-accent-light)}.guestlist .guest-info{align-items:center;display:flex}.guestlist .flag{width:1.4em;margin-right:6px;display:inline-block}.you-label{color:var(--color-accent);font-size:.8rem;font-weight:400}.guest-map-wrap{margin-bottom:24px}.guest-map{width:100%;height:auto;display:block}.map-label{font-family:var(--font-body);fill:var(--color-white);font-size:18px;font-weight:600}.map-label-party{fill:var(--color-white);font-weight:700}.guest-public-note{color:var(--color-muted);font-size:.8rem;font-style:italic;display:block}.rsvp-status{border-radius:var(--radius);white-space:nowrap;padding:2px 8px;font-size:.75rem;font-weight:500}.rsvp-summary{justify-content:center;gap:16px;margin-bottom:16px;font-size:.85rem;display:flex}.rsvp-summary span{border-radius:var(--radius);padding:4px 10px}.status-yes{color:#16a34a;background:#dcfce7}.status-maybe{color:#d97706;background:#fef3c7}.status-no{color:#dc2626;background:#fee2e2}.status-pending{color:#6b7280;background:#f3f4f6}.footer{text-align:center;color:var(--color-muted);padding:32px 0;font-size:.85rem}@media (width<=600px){.hero{padding:48px 0 32px}.hero h1{font-size:2.2rem}.info-grid,.photo-grid{grid-template-columns:1fr}.photo-grid img{height:240px}.rsvp-section{padding:24px}.rsvp-buttons{flex-direction:column}}.airport-search{position:relative}.airport-search-display{cursor:pointer;text-transform:uppercase}.airport-search-display.is-placeholder{color:var(--color-muted)}.airport-search-results{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius);z-index:10;min-width:250px;max-height:240px;margin:4px 0 0;padding:0;list-style:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px #0000001a}.airport-search-results li{cursor:pointer;padding:8px 12px;font-size:.85rem}.airport-search-results li:hover{background:var(--color-accent-light)}.airport-search-results li strong{margin-right:6px}.guest-map-wrap{width:100%;overflow:hidden}.robinson-inline{width:100%;height:auto;display:block}
