.event-grid{display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,19rem),1fr))}.ecard{position:relative;display:flex;flex-direction:column;height:100%;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-elevated);box-shadow:var(--shadow-xs);transition:transform var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out),border-color var(--dur) ease}.ecard:hover,.ecard:focus-within{transform:translateY(-4px);border-color:var(--border-strong);box-shadow:var(--shadow-md)}.ecard__media{position:relative;aspect-ratio:16 / 9;overflow:hidden;background:var(--primary-soft)}.ecard__media>img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease-out)}.ecard:hover .ecard__media>img{transform:scale(1.05)}.ecard__placeholder{display:grid;place-items:center;width:100%;height:100%;color:var(--primary-text)}.ecard__placeholder .icon{width:3rem;height:3rem;opacity:.6}.ecard__date{position:absolute;top:.75rem;left:.75rem;display:grid;justify-items:center;min-width:3.4rem;padding:.4rem .55rem;border-radius:var(--radius-md);background:var(--surface-elevated);color:var(--text);box-shadow:var(--shadow-sm);line-height:1.1}.ecard__date strong{font-family:var(--font-heading);font-size:var(--fs-lg)}.ecard__date span{color:var(--primary-text);font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase}.ecard__photos{position:absolute;right:.75rem;bottom:.75rem;display:inline-flex;align-items:center;gap:.35rem;padding:.25em .7em;border-radius:var(--radius-pill);background:#1d0e0ab8;color:#fff;font-size:var(--fs-xs);font-weight:600}.ecard__photos .icon{width:.95rem;height:.95rem}.ecard__body{display:flex;flex:1;flex-direction:column;gap:.5rem;padding:1.1rem 1.25rem 1.25rem}.ecard__cat{margin:0;color:var(--primary-text);font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase}.ecard__title{margin:0;font-size:var(--fs-md);line-height:1.3}.ecard__link{color:var(--text);text-decoration:none}.ecard__link:after{content:"";position:absolute;inset:0}.ecard__link:hover{color:var(--primary-text)}.ecard__meta{display:grid;gap:.35rem;margin:0;padding:0;color:var(--text-muted);font-size:var(--fs-sm);list-style:none}.ecard__meta li{display:flex;align-items:flex-start;gap:.5rem}.ecard__meta .icon{flex:none;width:1rem;height:1rem;margin-top:.2em;color:var(--primary-text)}.ecard__foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.6rem .75rem;margin-top:auto;padding-top:.85rem}.ecard__foot .btn,.ecard__foot .badge{position:relative;z-index:1}.ecard__price{font-size:var(--fs-sm);font-weight:600}.evtabs__list{display:none}.js .evtabs__list{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.75rem}.evtabs__tab{display:inline-flex;align-items:center;gap:.5rem;min-height:2.75rem;padding:0 1.1rem;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface-elevated);color:var(--text);font:inherit;font-size:var(--fs-sm);font-weight:600;cursor:pointer;transition:background var(--dur-fast),color var(--dur-fast),border-color var(--dur-fast)}.evtabs__tab .icon{width:1.1rem;height:1.1rem}.evtabs__tab span{color:var(--text-muted);font-family:var(--font-mono);font-weight:500}.evtabs__tab:hover{border-color:var(--primary)}.evtabs__tab[aria-selected=true]{border-color:var(--primary);background:var(--primary);color:var(--on-primary)}.evtabs__tab[aria-selected=true] span{color:inherit}.evtabs__heading{margin:0 0 1.25rem;font-size:var(--fs-lg)}.js .evtabs__heading{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.evtabs__panel+.evtabs__panel{margin-top:3rem}.js .evtabs__panel+.evtabs__panel{margin-top:0}.js .evtabs__panel[hidden],.js .evtabs__panel[data-inactive]{display:none}.home-events .event-grid{grid-template-columns:minmax(0,1fr)}@media(min-width:640px){.home-events .event-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1000px){.home-events .event-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
