:root{--bg: #fdf8f6;--bg-card: #fffbf9;--accent-rose: #e8c4c4;--accent-lavender: #d4c4e8;--accent-mint: #c4e8d4;--accent-peach: #f0d4c4;--text: #3d3530;--text-soft: #6b6159;--border: rgba(61, 53, 48, .12);--shadow: 0 4px 20px rgba(61, 53, 48, .06);--shadow-hover: 0 8px 28px rgba(61, 53, 48, .1);--radius: 16px;--radius-sm: 10px;--font-serif: "Cormorant Garamond", Georgia, serif;--font-sans: "DM Sans", system-ui, sans-serif;--transition: .3s ease}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}body{margin:0;font-family:var(--font-sans);font-size:1rem;line-height:1.6;color:var(--text);background:var(--bg);min-height:100vh}a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--accent-rose);outline-offset:2px}.tour-progress{position:fixed;top:1rem;right:1rem;z-index:100;padding:.5rem .75rem;background:var(--bg-card);border:1px solid var(--border);border-radius:999px;font-size:.85rem;font-weight:500;color:var(--text-soft);box-shadow:var(--shadow);transition:opacity var(--transition),transform var(--transition)}@media (max-width: 480px){.tour-progress{font-size:.75rem;padding:.4rem .6rem}}.passcode-gate{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--accent-lavender) 0%,var(--accent-rose) 100%);padding:1.5rem}.passcode-gate.hidden{display:none}.passcode-gate-inner{background:var(--bg-card);padding:2rem;border-radius:var(--radius);box-shadow:var(--shadow-hover);max-width:360px;width:100%}.passcode-title{font-family:var(--font-serif);font-size:1.75rem;margin:0 0 .5rem;color:var(--text)}.passcode-hint{font-size:.9rem;color:var(--text-soft);margin:0 0 1.25rem}.passcode-form{display:flex;gap:.5rem;margin-bottom:.5rem}.passcode-input{flex:1;padding:.6rem .75rem;border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-sans);font-size:1rem}.passcode-submit{padding:.6rem 1rem;background:var(--accent-rose);color:var(--text);border:none;border-radius:var(--radius-sm);font-family:var(--font-sans);font-weight:600;cursor:pointer;transition:background var(--transition),transform var(--transition)}.passcode-submit:hover{background:var(--accent-lavender)}.passcode-submit:active{transform:scale(.98)}.passcode-error{font-size:.85rem;color:#b34a4a;margin:0}.passcode-error.hidden{display:none}.hero{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem 1.5rem;background:linear-gradient(180deg,var(--accent-peach) 0%,var(--bg) 50%)}.hero-inner{text-align:center;max-width:520px}.hero-title{font-family:var(--font-serif);font-size:clamp(2rem,5vw,3rem);font-weight:600;margin:0 0 .5rem;color:var(--text)}.hero-subtitle{font-size:1.1rem;color:var(--text-soft);margin:0 0 1rem}.hero-names{font-family:var(--font-serif);font-size:1.35rem;font-weight:600;margin:0 0 .25rem;color:var(--text)}.hero-established{font-size:.95rem;color:var(--text-soft);margin:0 0 1.5rem}.ticket-stub{background:var(--bg-card);border:2px dashed var(--accent-rose);border-radius:var(--radius);padding:1rem 1.25rem;margin-bottom:1.5rem;box-shadow:var(--shadow)}.ticket-line{font-size:.9rem;color:var(--text-soft);margin:0;font-style:italic}.hero-cta{display:inline-block;padding:.75rem 1.5rem;background:var(--accent-rose);color:var(--text);font-weight:600;text-decoration:none;border-radius:var(--radius-sm);box-shadow:var(--shadow);transition:background var(--transition),box-shadow var(--transition),transform var(--transition)}.hero-cta:hover{background:var(--accent-lavender);box-shadow:var(--shadow-hover);transform:translateY(-2px)}.section-heading{font-family:var(--font-serif);font-size:clamp(1.5rem,4vw,2rem);font-weight:600;text-align:center;margin:0 0 1.5rem;color:var(--text)}.timeline-section{padding:3rem 1.5rem;max-width:720px;margin:0 auto}.timeline-list{display:flex;flex-direction:column;gap:1.5rem}.timeline-card{background:var(--bg-card);border-radius:var(--radius);padding:1.25rem 1.5rem;border:1px solid var(--border);box-shadow:var(--shadow);transition:box-shadow var(--transition)}.timeline-card:hover{box-shadow:var(--shadow-hover)}.timeline-card-inner{display:grid;gap:1rem}@media (min-width: 600px){.timeline-card-inner.has-image{grid-template-columns:1fr minmax(200px,280px);grid-template-areas:"content image"}.timeline-card-inner.has-image .timeline-image-wrap{grid-area:image}}.timeline-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-soft);margin:0 0 .25rem}.timeline-title{font-family:var(--font-serif);font-size:1.35rem;font-weight:600;margin:0 0 .35rem;color:var(--text)}.timeline-date{font-size:.9rem;color:var(--text-soft);margin:0 0 .5rem}.timeline-description{font-size:1rem;color:var(--text);margin:0;line-height:1.55}.timeline-image-wrap{border-radius:var(--radius-sm);overflow:hidden;background:linear-gradient(135deg,var(--accent-mint) 0%,var(--accent-lavender) 100%);aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;min-height:140px;max-width:100%}.timeline-image-wrap img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;vertical-align:middle}.timeline-image-wrap.image-top img{object-position:center top}.timeline-image-placeholder{font-size:.85rem;color:var(--text-soft);text-align:center;padding:1rem;font-style:italic}.curator-section{padding:2.5rem 1.5rem;background:linear-gradient(180deg,transparent 0%,var(--accent-peach) 15%,var(--accent-lavender) 50%,var(--accent-peach) 85%,transparent 100%)}.curator-list{list-style:none;padding:0;margin:0 auto;max-width:560px;display:flex;flex-direction:column;gap:.75rem}.curator-list li{background:var(--bg-card);border-radius:var(--radius-sm);font-size:.95rem;color:var(--text-soft);border:1px solid var(--border);box-shadow:var(--shadow);position:relative;padding:.75rem 1rem .75rem 2rem}.curator-list li:before{content:"✦";position:absolute;left:.75rem;color:var(--accent-rose);font-size:.8rem}.letter-section{padding:3rem 1.5rem;max-width:640px;margin:0 auto}.letter-body{background:var(--bg-card);border-radius:var(--radius);padding:1.5rem 1.75rem;border:1px solid var(--border);box-shadow:var(--shadow);margin-bottom:2rem}.letter-body p{margin:0 0 .75rem;font-size:1.05rem;line-height:1.65;color:var(--text)}.letter-body p:last-child{margin-bottom:0}.promises-title{font-family:var(--font-serif);font-size:1.25rem;font-weight:600;margin:0 0 1rem;color:var(--text)}.promises-list{list-style:none;padding:0;margin:0}.promises-list li{padding:.6rem 0 .6rem 1.5rem;position:relative;font-size:1rem;color:var(--text);border-bottom:1px solid var(--border)}.promises-list li:last-child{border-bottom:none}.promises-list li:before{content:"♥";position:absolute;left:0;color:var(--accent-rose);font-size:.9rem}.coupons-section{padding:3rem 1.5rem;background:linear-gradient(180deg,transparent 0%,var(--accent-mint) 20%,transparent 100%)}.coupons-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;max-width:900px;margin:0 auto}.coupon-card{background:var(--bg-card);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow);padding:1rem 1.25rem;min-height:100px;transition:transform var(--transition),box-shadow var(--transition);cursor:pointer}.coupon-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-hover)}.coupon-card.redeemed{opacity:.7;border-style:dashed}.coupon-card.redeemed .coupon-text{text-decoration:line-through;color:var(--text-soft)}.coupon-card.redeemed .coupon-badge{display:inline-block}.coupon-text{font-size:.95rem;color:var(--text);margin:0 0 .5rem;line-height:1.4}.coupon-badge{display:none;font-size:.75rem;color:var(--accent-rose);font-weight:600}.coupon-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:500;display:flex;align-items:center;justify-content:center;padding:1rem}.coupon-modal.hidden{display:none!important}.coupon-modal-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#3d353066}.coupon-modal-box{position:relative;background:var(--bg-card);border-radius:var(--radius);padding:1.5rem 1.75rem;max-width:360px;width:100%;box-shadow:var(--shadow-hover);border:1px solid var(--border)}.coupon-modal-title{font-family:var(--font-serif);font-size:1.35rem;font-weight:600;margin:0 0 .5rem;color:var(--text)}.coupon-modal-text{font-size:1rem;color:var(--text-soft);margin:0 0 1.25rem;line-height:1.5}.coupon-modal-actions{display:flex;gap:.75rem;justify-content:flex-end}.coupon-modal-btn{padding:.5rem 1rem;border-radius:var(--radius-sm);font-family:var(--font-sans);font-size:.95rem;font-weight:600;cursor:pointer;border:none;transition:background var(--transition),transform var(--transition)}.coupon-modal-btn-cancel{background:transparent;color:var(--text-soft);border:1px solid var(--border)}.coupon-modal-btn-cancel:hover{background:var(--border)}.coupon-modal-btn-claim{background:var(--accent-rose);color:var(--text)}.coupon-modal-btn-claim:hover{background:var(--accent-lavender)}.coupon-modal-btn:active{transform:scale(.98)}.final-section{min-height:50vh;display:flex;align-items:center;justify-content:center;padding:4rem 1.5rem;background:linear-gradient(180deg,var(--bg) 0%,var(--accent-rose) 40%,var(--accent-lavender) 100%)}.final-inner{text-align:center}.final-title{font-family:var(--font-serif);font-size:clamp(2rem,6vw,3.5rem);font-weight:600;margin:0 0 .5rem;color:var(--text)}.final-subtitle{font-size:1.15rem;color:var(--text-soft);margin:0}.hidden{display:none!important}
