*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:Lato,sans-serif;background-color:#f5f3ee;color:#2c2c2c;-webkit-font-smoothing:antialiased}:root{--navy: #1a2a5e;--gold: #b8972a;--gold-light: #e8c84a;--cream: #f5f3ee;--white: #ffffff;--text: #2c2c2c;--muted: #6b6b6b;--border: #ddd8cc;--radius: 8px;--shadow: 0 2px 12px rgba(0, 0, 0, .08)}.app{display:flex;flex-direction:column;min-height:100vh}.site-header{background:var(--navy);color:var(--white);text-align:center;padding:2.5rem 1rem 2rem;border-bottom:4px solid var(--gold)}.header-school{font-family:Lato,sans-serif;font-size:.95rem;font-weight:300;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-light);margin-bottom:.4rem}.header-title{font-family:Playfair Display,serif;font-size:clamp(2rem,6vw,3.5rem);font-weight:700;line-height:1.1;margin-bottom:.3rem}.header-subtitle{font-family:Lato,sans-serif;font-size:clamp(1rem,3vw,1.3rem);font-weight:300;letter-spacing:.15em;color:var(--gold-light)}.tab-nav{display:flex;justify-content:center;flex-wrap:wrap;gap:0;background:var(--white);border-bottom:2px solid var(--border);position:sticky;top:0;z-index:100;box-shadow:var(--shadow)}.tab-btn{background:none;border:none;padding:1rem 1.5rem;font-family:Lato,sans-serif;font-size:.9rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;transition:color .2s,border-color .2s}.tab-btn:hover{color:var(--navy)}.tab-btn.active{color:var(--navy);border-bottom-color:var(--gold)}.tab-content{flex:1;max-width:860px;width:100%;margin:0 auto;padding:2.5rem 1.5rem}.section-title{font-family:Playfair Display,serif;font-size:1.9rem;color:var(--navy);margin-bottom:.5rem}.section-divider{width:60px;height:3px;background:var(--gold);border:none;margin:0 0 1.8rem}.card{background:var(--white);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.8rem 2rem;margin-bottom:1.5rem;border:1px solid var(--border)}.card-title{font-family:Playfair Display,serif;font-size:1.2rem;color:var(--navy);margin-bottom:.75rem}.site-footer{background:var(--navy);color:#fff9;text-align:center;padding:1.2rem 1rem;font-size:.8rem;letter-spacing:.05em;border-top:3px solid var(--gold)}.std-hero{background:var(--navy);color:var(--white);border-radius:var(--radius);text-align:center;padding:3rem 2rem;margin-bottom:2rem;border:2px solid var(--gold);box-shadow:var(--shadow)}.std-label{font-family:Lato,sans-serif;font-size:.85rem;font-weight:700;letter-spacing:.3em;text-transform:uppercase;color:var(--gold-light);margin-bottom:.75rem}.std-date{font-family:Playfair Display,serif;font-size:clamp(1.6rem,5vw,2.6rem);font-weight:700;margin-bottom:.4rem;line-height:1.2}.std-time{font-size:1.2rem;font-weight:300;color:var(--gold-light);margin-bottom:.3rem}.std-venue{font-size:1.1rem;font-weight:400;letter-spacing:.05em}.photo-section{margin-bottom:2rem}.photo-section-title{font-family:Playfair Display,serif;font-size:1.6rem;color:var(--navy);margin-bottom:.4rem}.section-divider{width:60px;height:3px;background:var(--gold);border:none;margin:0 0 1rem}.photo-note{color:var(--muted);font-size:.9rem;margin-bottom:1.2rem;font-style:italic}.photo-note code{background:#eee;padding:.1em .4em;border-radius:3px;font-size:.85rem;font-style:normal}.upload-gate{margin-bottom:1.5rem}.upload-gate-label{font-size:.9rem;color:var(--muted);margin-bottom:.6rem}.passcode-form{display:flex;gap:.5rem;flex-wrap:wrap}.passcode-input-wrap{position:relative;display:flex;align-items:center}.passcode-input{padding:.5rem 3rem .5rem .75rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.95rem;font-family:inherit;width:180px}.passcode-input:focus{outline:2px solid var(--gold);outline-offset:1px}.passcode-toggle{position:absolute;right:.5rem;background:none;border:none;font-size:.75rem;font-family:inherit;color:var(--muted);cursor:pointer;padding:0}.passcode-toggle:hover{color:var(--navy)}.passcode-btn{padding:.5rem 1.1rem;background:var(--navy);color:var(--white);border:none;border-radius:var(--radius);font-family:inherit;font-size:.9rem;font-weight:700;cursor:pointer;transition:opacity .15s}.passcode-btn:hover{opacity:.85}.upload-area{margin-bottom:1.5rem}.file-input-hidden{display:none}.upload-btn{display:inline-block;padding:.55rem 1.3rem;background:var(--navy);color:var(--white);border-radius:var(--radius);font-family:inherit;font-size:.9rem;font-weight:700;cursor:pointer;transition:opacity .15s;-webkit-user-select:none;user-select:none}.upload-btn:hover{opacity:.85}.upload-btn.uploading{opacity:.6;cursor:default}.auth-success{margin-left:.75rem;font-size:.85rem;color:#2e7d32;font-weight:600}.upload-error{margin-top:.5rem;font-size:.85rem;color:#c0392b}.no-photos{color:var(--muted);font-size:.9rem;font-style:italic;margin:1rem 0 1.5rem}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;margin-top:1.5rem}.photo-item{aspect-ratio:4 / 3;overflow:hidden;border-radius:var(--radius);border:none;padding:0;cursor:pointer;background:var(--border)}.photo-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s ease}.photo-item:hover img{transform:scale(1.04)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000e0;display:flex;align-items:center;justify-content:center;z-index:1000}.lightbox-img{max-width:90vw;max-height:88vh;border-radius:var(--radius);object-fit:contain;box-shadow:0 8px 40px #0009}.lightbox-close,.lightbox-prev,.lightbox-next{position:absolute;background:#ffffff26;border:none;color:var(--white);cursor:pointer;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .15s}.lightbox-close,.lightbox-prev,.lightbox-next:hover{background:#ffffff47}.lightbox-close{top:1rem;right:1rem;width:2.2rem;height:2.2rem;font-size:1rem}.lightbox-prev{left:1rem;width:2.8rem;height:2.8rem;font-size:2rem}.lightbox-next{right:1rem;width:2.8rem;height:2.8rem;font-size:2rem}.info-strip{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center;background:var(--white);border:1px solid var(--border);border-radius:var(--radius);padding:1.2rem 1.5rem;box-shadow:var(--shadow)}.info-strip-item{display:flex;align-items:center;gap:.5rem;font-size:.95rem;font-weight:600;color:var(--navy);white-space:nowrap}.info-strip-icon{font-size:1.1rem}.gi-intro{font-size:1.05rem;line-height:1.8;color:var(--text)}.detail-label{font-weight:700;color:var(--navy);min-width:90px;flex-shrink:0}.detail-value{color:var(--text)}.meal-choices{display:flex;align-items:center;gap:1.5rem;margin:1.2rem 0 .6rem;flex-wrap:wrap}.meal-option{display:flex;align-items:center;gap:.5rem;background:var(--cream);border:1px solid var(--border);border-radius:6px;padding:.6rem 1.2rem;font-weight:600;color:var(--navy)}.meal-icon{font-size:1.3rem}.meal-divider{font-style:italic;color:var(--muted);font-size:.9rem}.meal-note{font-size:.85rem;color:var(--muted);font-style:italic;margin-top:.25rem}.activity-list{list-style:none;display:flex;flex-direction:column;gap:1rem;margin-top:.5rem}.activity-list li{display:flex;gap:.85rem;font-size:.95rem;line-height:1.5;align-items:flex-start}.activity-dot{width:8px;height:8px;border-radius:50%;background:var(--gold);flex-shrink:0;margin-top:.45rem}.gi-reg-reminder{background:#eef1f8;border-color:var(--navy);font-size:.95rem;line-height:1.7}.reg-intro{font-size:1rem;line-height:1.75}.reg-qr-card{overflow:hidden}.reg-placeholder-notice{background:#fff8e1;border:1px solid #f0c040;border-radius:6px;padding:.75rem 1rem;font-size:.88rem;color:#6b5000;margin-bottom:1.5rem;line-height:1.5}.reg-placeholder-notice code{background:#0000000f;padding:.1em .35em;border-radius:3px}.reg-qr-layout{display:flex;gap:2.5rem;align-items:center;flex-wrap:wrap}.reg-qr-box{display:flex;flex-direction:column;align-items:center;gap:.6rem;flex-shrink:0}.reg-qr-label{font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.reg-qr-info{flex:1;min-width:200px;display:flex;flex-direction:column;gap:1.2rem;font-size:.95rem;line-height:1.65;color:var(--text)}.reg-link-btn{display:inline-block;background:var(--navy);color:var(--white);padding:.7rem 1.4rem;border-radius:6px;font-weight:700;font-size:.9rem;text-decoration:none;letter-spacing:.03em;transition:background .2s;align-self:flex-start}.reg-link-btn:hover:not(.disabled){background:#2e4a9e}.reg-link-btn.disabled{background:#bbb;cursor:not-allowed}.detail-list{list-style:none;border-top:1px solid var(--border);margin-top:.5rem}.detail-list li{display:flex;gap:1rem;padding:.7rem 0;border-bottom:1px solid var(--border);font-size:.95rem}.detail-label{font-weight:700;color:var(--navy);min-width:110px;flex-shrink:0}.venue-main-card{text-align:center}.venue-name{font-family:Playfair Display,serif;font-size:1.7rem;color:var(--navy);margin-bottom:.5rem}.venue-address{font-size:1.05rem;line-height:1.7;color:var(--text);margin-bottom:1rem}.venue-contact{display:flex;justify-content:center;flex-wrap:wrap;gap:1.5rem}.venue-contact-link{color:var(--navy);font-weight:600;text-decoration:none;font-size:.95rem;transition:color .2s}.venue-contact-link:hover{color:var(--gold)}.venue-qr-card{overflow:hidden}.venue-qr-layout{display:flex;gap:2.5rem;align-items:center;flex-wrap:wrap}.venue-qr-box{display:flex;flex-direction:column;align-items:center;gap:.6rem;flex-shrink:0}.venue-qr-label{font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.venue-qr-info{flex:1;min-width:200px;display:flex;flex-direction:column;gap:1.2rem;font-size:.95rem;line-height:1.65;color:var(--text)}.venue-link-btn{display:inline-block;background:var(--navy);color:var(--white);padding:.7rem 1.4rem;border-radius:6px;font-weight:700;font-size:.9rem;text-decoration:none;letter-spacing:.03em;transition:background .2s;align-self:flex-start}.venue-link-btn:hover{background:#2e4a9e}.venue-directions-note{font-size:.95rem;line-height:1.6;color:var(--text);margin-bottom:1rem}.venue-map-btn{display:inline-block;color:var(--navy);font-weight:700;font-size:.9rem;text-decoration:none;margin-bottom:1rem;padding:.5rem 1rem;border:2px solid var(--navy);border-radius:6px;transition:background .2s,color .2s}.venue-map-btn:hover{background:var(--navy);color:var(--white)}.venue-map-embed{border-radius:6px;overflow:hidden;border:1px solid var(--border)}
