*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-brand: #277B72;--color-brand-dark: #1E5E57;--color-brand-light: #E8F5F3;--color-primary: #EF7060;--color-primary-hover: #D95F50;--color-amber: #F5B729;--color-danger: #DC2626;--color-success: #16A34A;--color-warning: #D97706;--color-navy: #1B2340;--color-bg: #F7F8FA;--color-surface: #FFFFFF;--color-border: #E4E7EC;--color-text: #1B2340;--color-text-muted: #6B7280;--radius: 8px;--radius-lg: 14px;--radius-xl: 20px;--shadow: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 4px 12px rgba(0,0,0,.08), 0 2px 4px rgba(0,0,0,.04);--shadow-lg: 0 8px 28px rgba(0,0,0,.1);--max-width: 1200px;--font: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}body{font-family:var(--font);background:var(--color-bg);color:var(--color-text);line-height:1.6;-webkit-font-smoothing:antialiased}#root{display:flex;flex-direction:column;min-height:100dvh}.app-main{flex:1 1 auto}a{color:var(--color-brand);text-decoration:none}a:hover{text-decoration:underline}.topbar{background:#fff;position:sticky;top:0;z-index:100;border-bottom:1px solid var(--color-border);box-shadow:0 1px 4px rgba(0,0,0,.06);padding-top:env(safe-area-inset-top)}.topbar-inner{max-width:var(--max-width);margin:0 auto;padding:0 1.5rem;height:110px;display:flex;align-items:center;gap:2rem}.topbar-brand{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:.2rem;flex:1;text-decoration:none}.topbar-brand:hover{text-decoration:none}.topbar-logo{height:90px;width:auto}.topbar-tagline{font-size:.45rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#0b4344;white-space:nowrap}.topbar-wordmark{display:none}.topbar-nav{display:flex;align-items:center;gap:.125rem;list-style:none}.topbar-nav a{font-size:.9rem;color:var(--color-text-muted);font-weight:600;padding:.4rem .75rem;border-radius:var(--radius);transition:color .15s,background .15s}.topbar-nav a:hover{color:var(--color-brand);text-decoration:none;background:var(--color-brand-light)}.topbar-btn-cta{background:var(--color-primary);color:#fff!important;padding:.45rem 1rem!important;border-radius:var(--radius)!important;font-weight:700!important;font-size:.875rem!important;transition:background .15s,box-shadow .15s!important}.topbar-btn-cta:hover{background:var(--color-primary-hover)!important;box-shadow:0 2px 8px rgba(239,112,96,.35)!important;color:#fff!important}.topbar-btn-ghost{background:transparent;border:1.5px solid var(--color-border);color:var(--color-text)!important;padding:.4rem .875rem!important;border-radius:var(--radius)!important;font-size:.875rem!important;font-weight:600!important;cursor:pointer;transition:border-color .15s,background .15s!important}.topbar-btn-ghost:hover{border-color:var(--color-brand)!important;color:var(--color-brand)!important;background:var(--color-brand-light)!important}.topbar-user-name{font-size:.875rem;color:var(--color-text-muted);font-weight:600;padding:0 .5rem}.topbar-hamburger{display:none;background:none;border:none;color:var(--color-navy);cursor:pointer;padding:.25rem;line-height:0}.topbar-mobile-menu{display:flex;flex-direction:column;background:var(--color-brand);border-top:1px solid rgba(255,255,255,.1);padding:.5rem 0 1rem}.topbar-mobile-user{padding:.75rem 1.5rem .5rem;font-size:.8125rem;color:rgba(255,255,255,.55);font-weight:700;text-transform:uppercase;letter-spacing:.06em}.topbar-mobile-link{display:block;padding:.8rem 1.5rem;color:rgba(255,255,255,.9);font-size:1rem;font-weight:600;text-decoration:none;border:none;background:none;text-align:left;cursor:pointer;width:100%;font-family:var(--font)}.topbar-mobile-link:hover{background:rgba(255,255,255,.08);text-decoration:none;color:#fff}.topbar-mobile-cta{color:var(--color-amber)!important;font-weight:800!important}.topbar-mobile-signout{color:rgba(255,255,255,.55)!important;margin-top:.25rem;border-top:1px solid rgba(255,255,255,.12);padding-top:1rem}@media (max-width: 700px){.topbar-nav-desktop,.topbar-hamburger{display:none}.topbar-inner{height:56px}.topbar-logo{height:38px}.topbar-tagline{display:none}}.leaflet-container{isolation:isolate}.bottom-nav{display:none;flex-direction:column;position:fixed;bottom:0;left:0;right:0;z-index:200;background:#fff;border-top:1px solid var(--color-border);box-shadow:0 -1px 8px rgba(0,0,0,.07);padding-bottom:env(safe-area-inset-bottom);will-change:transform;transition:transform .2s ease}.bottom-nav-tabs{display:flex;flex-direction:row}.bottom-nav-tagline{text-align:center;font-size:.55rem;color:var(--color-text-muted);opacity:.6;margin:0;padding:.15rem 0 .25rem;letter-spacing:.02em}.bottom-nav-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.5rem .25rem;min-height:56px;gap:.2rem;text-decoration:none;color:var(--color-text-muted);font-size:.625rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;transition:color .15s}.bottom-nav-tab:hover{text-decoration:none;color:var(--color-brand)}.bottom-nav-tab.active{color:var(--color-brand)}.bottom-nav-icon{line-height:0}.bottom-nav-add{color:var(--color-primary)}.bottom-nav-add:hover{color:var(--color-primary-hover)}.bottom-nav-add .bottom-nav-icon{background:var(--color-primary);color:#fff;border-radius:50%;width:40px;height:40px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(239,112,96,.4);margin-bottom:.1rem}.bottom-nav-add:hover .bottom-nav-icon{background:var(--color-primary-hover)}@media (max-width: 700px){.bottom-nav{display:flex}body{padding-bottom:calc(74px + env(safe-area-inset-bottom))}}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.event-card-h{background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow);display:flex;flex-direction:row;transition:box-shadow .18s,transform .18s}.event-card-h-thumb{width:90px;flex-shrink:0;position:relative;background:var(--color-brand-light);overflow:hidden;border-radius:calc(var(--radius-lg) - 1px) 0 0 calc(var(--radius-lg) - 1px)}.event-card-h-placeholder{width:100%;height:100%;min-height:88px;display:flex;align-items:center;justify-content:center}.event-card-h-body{flex:1;padding:.5rem .75rem;display:flex;flex-direction:column;gap:.15rem;min-width:0}.event-card-h-top{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:0}.event-card-h-date{font-size:.7rem;font-weight:800;color:var(--color-primary);text-transform:uppercase;letter-spacing:.07em}.event-card-h-save{background:none;border:none;padding:.2rem;cursor:pointer;line-height:0;flex-shrink:0;border-radius:50%;transition:background .15s}.event-card-h-save:hover{background:rgba(225,29,72,.08)}.event-card-h-save:disabled{cursor:wait}.event-card-h-title{font-size:.875rem;font-weight:700;line-height:1.25;color:var(--color-navy);margin:0}.event-card-h-venue-btn{background:none;border:none;padding:0;text-align:left;cursor:pointer;font-size:.8125rem;font-weight:600;color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font);max-width:100%;transition:color .15s}.event-card-h-venue-btn:hover{color:var(--color-brand)}.event-card-h-meta{display:flex;align-items:center;gap:.3rem;font-size:.75rem;color:var(--color-text-muted);margin:0;overflow:hidden}.event-card-h-meta-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-card-h-cats{display:flex;flex-wrap:wrap;gap:.25rem;align-items:center;margin-top:.2rem}.event-card-h-footer{display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:.5rem;border-top:1px solid var(--color-border);gap:.5rem}.event-card-h-attendance{display:flex;align-items:center;gap:.375rem;min-width:0}.event-card-h-counts{font-size:.7rem;color:var(--color-text-muted);white-space:nowrap}.event-card-h-more{display:flex;align-items:center;gap:.2rem;font-size:.75rem;font-weight:600;color:var(--color-brand);white-space:nowrap;flex-shrink:0}.page-content{max-width:var(--max-width);margin:0 auto;padding:2rem 1.5rem}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--color-bg)}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:2.5rem 2rem;width:100%;max-width:420px}.auth-card h1{font-size:1.6rem;font-weight:800;margin-bottom:.25rem;letter-spacing:-.02em;color:var(--color-navy)}.auth-card .subtitle{color:var(--color-text-muted);margin-bottom:1.75rem;font-size:.9rem}.form-group{margin-bottom:1.125rem}.form-group label{display:block;font-size:.8125rem;font-weight:700;margin-bottom:.375rem;color:var(--color-navy);text-transform:uppercase;letter-spacing:.05em}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.7rem .9rem;border:1.5px solid var(--color-border);border-radius:var(--radius);font-size:.9375rem;font-family:var(--font);outline:none;background:var(--color-surface);color:var(--color-text);transition:border-color .15s,box-shadow .15s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--color-brand);box-shadow:0 0 0 3px rgba(39,123,114,.12)}.form-group input.error{border-color:var(--color-danger)}.field-error{color:var(--color-danger);font-size:.8rem;margin-top:.3rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.7rem 1.5rem;border-radius:var(--radius);font-size:.9375rem;font-weight:700;font-family:var(--font);cursor:pointer;border:none;transition:background .15s,box-shadow .15s,opacity .15s;text-decoration:none;white-space:nowrap;letter-spacing:.01em}.btn:hover{text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);box-shadow:0 2px 10px rgba(239,112,96,.35)}.btn-secondary{background:var(--color-brand);color:#fff}.btn-secondary:hover:not(:disabled){background:var(--color-brand-dark);box-shadow:0 2px 10px rgba(39,123,114,.3)}.btn-outline{background:transparent;color:var(--color-brand);border:1.5px solid var(--color-brand)}.btn-outline:hover:not(:disabled){background:var(--color-brand-light)}.btn-ghost{background:transparent;color:var(--color-brand);padding:0;font-size:.875rem;font-weight:600}.alert{border-radius:var(--radius);padding:.85rem 1rem;margin-bottom:1rem;font-size:.875rem;font-weight:500}.alert-error{background:#fef2f2;color:#991b1b;border:1px solid #FECACA}.alert-success{background:#f0fdf4;color:#166534;border:1px solid #BBF7D0}.alert-info{background:var(--color-brand-light);color:var(--color-brand-dark);border:1px solid #A7D9D4}.alert-warning{background:#fffbeb;color:#92400e;border:1px solid #FDE68A}.auth-footer{margin-top:1.25rem;text-align:center;font-size:.875rem;color:var(--color-text-muted)}.auth-card .btn{width:100%}.loading-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;font-size:.9rem;color:var(--color-text-muted);font-weight:600}.date-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.site-footer{background:var(--color-bg);border-top:1px solid var(--color-border);padding:1.25rem 1.5rem;flex-shrink:0}.site-footer--fixed{position:fixed;bottom:0;left:0;right:0;z-index:50;box-shadow:0 -2px 8px rgba(0,0,0,.06)}.site-footer-inner{max-width:var(--max-width);margin:0 auto;display:flex;align-items:center;justify-content:space-between;font-size:.8125rem;color:var(--color-text-muted)}.site-footer-links{display:flex;gap:1.5rem}.site-footer-links a{color:var(--color-text-muted);font-weight:600;font-size:.8125rem}.site-footer-links a:hover{color:var(--color-brand)}.home-footer-spacer{display:none}@media (max-width: 700px){.site-footer{display:none}}@media (min-width: 701px){.home-footer-spacer{display:block;height:56px}}.prose{max-width:680px;line-height:1.8}.prose h1{font-size:1.875rem;font-weight:800;margin-bottom:.375rem;letter-spacing:-.02em;color:var(--color-navy)}.prose .last-updated{font-size:.875rem;color:var(--color-text-muted);margin-bottom:2.5rem}.prose h2{font-size:1.0625rem;font-weight:700;margin-top:2rem;margin-bottom:.5rem;color:var(--color-navy)}.prose p{margin-bottom:1rem}.prose ul{margin:.5rem 0 1rem 1.5rem}.prose ul li{margin-bottom:.375rem}@media (max-width: 600px){.date-grid{grid-template-columns:1fr}.auth-card{padding:1.75rem 1.25rem}.topbar-inner{padding:0 1rem;gap:1rem}.page-content{padding:1.25rem 1rem}.contact-form-row{grid-template-columns:1fr!important}}.wheel-scroll::-webkit-scrollbar{display:none}
